/* driver pour LCD OKI 6202 */ /* millenium g�rald.festou@worldonline.fr */ /* pr�voir la validation de CSIO1 dand crt11.s */ #define IRWRIN *(unsigned char volatile*)(_IO_BASE+0x60) #define DR_WRITIN *(unsigned char volatile*)(_IO_BASE+0x61) #define right 1 #define left 0 //#include <stdio.h> //#include <hc11.h> void lcdinit(void); void rtn_home(void); void lcd_on(void); void lcd_off(void); void lcd_shift(char nb_sh); void lcdwait(int cnt); void status(void); void lcd_cls(void); void curs_on(void); void curs_off(void); char getkey(void); int cnt; void lcdinit(void) { IRWRIN=0x38; /* mode 8 bits */ lcdwait(3); IRWRIN=0x06; /* mode */ lcd_cls(); /* clear display */ rtn_home(); } void rtn_home(void) { status(); IRWRIN=0x02; /* return home */ } void lcd_on(void) { status(); IRWRIN=0x0C; /* disp on */ } void lcd_off(void) { status(); IRWRIN=0xB; /* disp off */ } void curs_on(void) { status(); IRWRIN=0x0F; /* curseur on */ } void curs_off(void) { status(); IRWRIN=0x0C; } void lcd_shift(char nb_sh) { lcdwait(10); if (nb_sh) { status(); IRWRIN=0x18; /* shift � gauche */ } else { status(); IRWRIN=0x1F; /* shift � droite */ } } void status(void) /* attend que l'afficheur soit pret � recevoir une commande */ { while ((IRWRIN & 0x80)==0x80); /* attente busy */ return; } void lcd_cls(void) /* effacement de l'afficheur */ { status(); IRWRIN=1; /* c'est le code d'�ffacement */ } void lcdwait(int cnt) { int i; for(;cnt;cnt--) for(i=0;i<1000;i++); }