// definicni soubor LCD displeje

#ifndef _LCD_H
#define _LCD_H 1

#define LCD_PORT		PORTA	// výstupní port pro lcd displej
#define LCD_RW_PIN		2		// r/w vstup displeje
#define LCD_E_PIN		3		// enable vstup displeje
#define LCD_RS_PIN		1		// rs vstup displeje
#define LCD_DISP_LENGTH	20		// počet znaků na řádek displeje

#define LCD_DDRAM		7
#define LCD_START_LINE1	0x00	// adresa prvního znaku na prvním řádku
#define LCD_START_LINE2	0x40
#define LCD_START_LINE3 0x14
#define LCD_START_LINE4	0x54

#define DDR( x )		( *(&x - 1) )	// adresa směrového registru portu
#define lcd_rw_high()	LCD_PORT |=  _BV( LCD_RW_PIN )
#define lcd_rw_low()	LCD_PORT &= ~_BV( LCD_RW_PIN )
#define lcd_e_delay()	__asm__ __volatile__( "nop\n nop\n nop" )
#define lcd_e_high()	LCD_PORT  |=  _BV( LCD_E_PIN )
#define lcd_e_low()		LCD_PORT  &= ~_BV( LCD_E_PIN )
#define lcd_e_toggle()	toggle_e()
#define lcd_rs_high()	LCD_PORT |=  _BV( LCD_RS_PIN )
#define lcd_rs_low()	LCD_PORT &= ~_BV( LCD_RS_PIN )



void lcd_init( void ) ;			// inicializace lcd displeje
void lcd_clrscr( void ) ;		// vymazání obsahu displeje
void lcd_command( char ) ;		// zápis 1bytové instrukce do lcd displeje
void lcd_data( char ) ;			// zápis 1bytového datového slova do lcd displeje
void lcd_write( char, char ) ;	// zápis instrukce nebo dat do lcd displeje
void toggle_e( void ) ;			// realizace jednoho "enable" pulsu pro lcd displej
void lcd_gotoxy( char, char ) ;	// přesun kurzoru na pozici x,y lcd displeje
void lcd_putc( char c ) ;		// zobrazení jednoho znaku na lcd displeji
void lcd_puts( const char *s ) ;// zobrazení řetězce znaků na lcd displeji
void lcd_newline( void ) ;		// skok na nový řádek lcd displeje
void lcd_firstline( void ) ;	// skok a vymazání prvního řádku lcd displeje
void lcd_secondline( void ) ;	// skok a vymazání druhého řádku lcd displeje
void lcd_thirdline( void ) ;
void lcd_fourthline( void ) ;

#endif


