#define IRWRIN *(unsigned char volatile*)(_IO_BASE+0x60)
#define DR_WRITIN *(unsigned char volatile*)(_IO_BASE+0x61)
#define right 1
#define left 0




void lcd_init(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);

void lcd_initialise(void)
{
	IRWRIN=0x38; /* mode 8 bits */
	lcd_tempo(3);
	IRWRIN=0x06; /* mode */
	lcd_efface();	/* efface tout l'afficheur  */
	retour_chariot();
}

void retour_chariot(void)
{
	status();
	IRWRIN=0x02; 
}

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_efface(void)		/* effacement de l'afficheur */
{
	status();
	IRWRIN=1;	
}

void lcd_tempo(int cnt)
{
	int i;
	for(;cnt;cnt--)
	for(i=0;i<1000;i++);
}
	