volatile char *dirf, *outf, *dirk, *outk;
void init_port();
void delay1(int);
void init_lcd();
void lcd_cmd(volatile char cmd);
void lcd_data(volatile char *ptr);
void setup(){
volatile short a, b;
volatile long i;
init_port(); init_lcd();
while(1){
for(a=0x80, b=0xda; a<=0x9b; a++, b--){
lcd_cmd(0x01);
lcd_cmd(0x04); // for left shift the cursor;
lcd_cmd(a);
lcd_data("oT emocleW");
lcd_cmd(b);
lcd_data("ymedacA NECE");
for(i=0; i<100000; i++);
}
}
}
void lcd_data(volatile char *ptr){
while(*ptr){
*outf=*ptr;
*outk=2; delay1(1);
*outk=3; delay1(1);
*outk=2; delay1(1);
ptr++;
}
}
void init_lcd(){
lcd_cmd(0x38);
lcd_cmd(0x0c);
lcd_cmd(0x01);
}
void lcd_cmd(volatile char cmd){
*outf=cmd;
*outk=0; delay1(1);
*outk=1; delay1(1);
*outk=0; delay1(1);
}
void init_port(){
dirf=0x30; *dirf=0xff;
dirk=0x107; *dirk=0x03;
outf=0x31; outk=0x108;
}
void delay1(volatile int time){
volatile long i;
while(time--)
for(i=0; i<100; i++);
}
void loop() {}