Well here is my code now:Also.
lcdcmd and lcddata needs return; in the end to return to main.
Did I used busy flag in correct place?
Rich (BB code):
#include<reg52.h>
sfr ldata = 0x90;
sbit en = P3^5;
sbit rw = P3^6;
sbit rs = P3^7;
sbit busy = P1^7;
void delay()
{
TMOD = 0x01;
TH0 = 0x00;
TL0 = 0x00;
TR0 = 1;
while(TF0 == 0);
TR0 = 0;
TF0 = 0;
}
void lcdbusy()
{
rs = 0;
rw = 1;
while(busy == 1)
{
en = 0;
delay();
en = 1;
}
}
void lcdcmd(char y)
{
ldata = y;
rs = 0;
rw = 0;
en = 1;
delay();
en = 0;
lcdbusy();
return;
}
void lcddata(char z)
{
ldata = z;
rs = 1;
rw = 0;
en = 1;
delay();
en = 0;
lcdbusy();
return;
}
void main()
{
delay();
lcdcmd(0x30);
delay();
lcdcmd(0x30);
delay();
lcdcmd(0x30);
delay();
lcdcmd(0x38);
delay();
lcdcmd(0x0E);
delay();
lcdcmd(0x01);
delay();
lcdcmd(0x06);
lcddata('T');
lcddata('E');
lcddata('M');
lcddata('P');
while(1);
}