sbit LCD_RS at RB1_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_RW at RB2_bit;
sbit LCD_D4 at RA0_bit;
sbit LCD_D5 at RA1_bit;
sbit LCD_D6 at RA2_bit;
sbit LCD_D7 at RA3_bit;

sbit LCD_RS_Direction at TRISB1_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_RW_Direction at TRISB2_bit;
sbit LCD_D4_Direction at TRISA0_bit;
sbit LCD_D5_Direction at TRISA1_bit;
sbit LCD_D6_Direction at TRISA2_bit;
sbit LCD_D7_Direction at TRISA3_bit;

// ě é í č
const code char character[4][8] = {{10,4,14,17,31,16,14,0},{2,4,14,17,31,16,14,0},{2,4,12,4,4,4,14,0},{10,4,14,17,16,17,14,0}}; // ě
const code char *text1[] = "Ahoj sv\x08" "te!!";
const code char *text2[] = "Zdrav\x0A t\x08 C\x09\x0B" "ko!";
const code char *text3[] = "Konec filmu...";
const code char *text4[] = "Konec programu.";

// Funkce pro nahrání vlastních znaků na displej
void mojeZn() {
 char i;
 char zn;

 Lcd_Cmd(64);
 for (zn = 0; zn<=3; zn++) {
  for (i = 0; i<=7; i++) Lcd_Chr_CP(character[zn][i]);
 }
 Lcd_Cmd(_LCD_RETURN_HOME);
}

void main() {
 TRISB = 0b00000001;
 TRISA = 0b00000000;
 INTCON = 0;
 RB2_bit = 0;
 
 Lcd_Init();
 Lcd_Cmd(_LCD_CLEAR);
 LCD_CMD(_LCD_CURSOR_OFF);
 PORTA = 0;
 mojeZn();
 Lcd_Out(1, 3, text1);
 Lcd_out(2, 1, text2);
 PORTA = 0;
 while (1) if (RB0_bit==1) break;
 lcd_cmd(_LCD_CLEAR);
 lcd_out(1,1, text3);
 lcd_out(2,1, text4);
 }