Can someone please check my code? I have a dozen errors in keil. I am newbie please i need help and urgently.
Rich (BB code):
# include <reg51.h>
#define lcddatapin=P1 //P1
#define keypad=P3; //P3
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
sbit col1=P3^0; //column 1
sbit col2=P3^1; //column 2
sbit col3=P3^2; //column 3
sbit col4=P3^3; //column 4
sbit r1=P3^4; //row1
sbit r2=P3^5; //r2
sbit r3=P3^6; //r3
sbit r4=P3^7; //r4
void lcdini(void);
void lcddata(unsigned char disp);
void lcdcmd(unsigned char dta);
void keyscan(void);
void lcdstr(unsigned char *str);
unsigned int R;
unsigned int C;
void delay1();
unsigned int i,x;
void cctini(void);
void scrlmu(void);
void clrscr(void);
void repeat();
unsigned int colm;
void previouskeycheck(void);
void main(void){
// to display welcome message
lcdini();
lcdcmd(0x80);
delay(100);
lcdstr("WELCOME");
for(;;){
for(i=0;i<9;i++){
lcdcmd(0x1E);
delay1(10);
}
for(i=0;i<9;i++){
lcdcmd(0x18);
delay1();
}
}
clrlcd() ;
//main menu
lcdini()
lcdcmd(0x80);
lcdstr=("P1");
lcdcmd(0x0c)
lcdstr=("P2");
if(R==4&&C==1);
//LCD SCROLL=P1
}
void scrlmu()
{
clrlcd()
{
lcdini()
lcdcmd(0x81)
lcdstr("Task1");
char T1[]={"T1 selected"};
lcdcmd(0x88)
lcdstr("Task2");
char T2[]={"T2 selected"};
lcdcmd(0xc1);
lcdstr("Task3")
char T3[]={"T3 selected"};
lcdcmd(0xc08);
lcdstr("Task4");
char T4[]={"T4 selected"};
void keyscan();
Key[R][C]=
void tsk1()
void tsk2()
void tsk3()
void tsk4()
lcdini()
while(1){
if(r1==1&&c4==1&&r2==0&&c4==0&&r3==0&&c4=0&&r4==0&&c4==0);
lcdstr()
void tsk1()
void repeat()
}
else {if(r1==0&&c4==1&&r2==1&&c4==0&&r3==0&&c4=0&&r4==0&&c4==0);
lcdstr();
void tsk2();
void repeat();
}
else { if(r1==0&&c4==1&&r2==0&&c4==0&&r3==1&&c4=0&&r4==0&&c4==0);
lcdstr();
void tsk3();
void repeat();
}
else { if(r1==0&&c4==1&&r2==0&&c4==0&&r3==0&&c4=0&&r4==1&&c4==0);
lcdstr();
void tsk4();
void repeat();
void tsk1()
{
int j;
for(j=0;t1[j]!='\0';j++) //message1 to be displayed
{display(T1[j]);
delay1(50);
}
}
void tsk2()
{
int j;
for(j=0;T2[j]!='\0';j++) //message2 to be displayed
{display(name2[j]);
delay1(50);
}
}
void tsk3()
{
int j;
for(j=0;T3[j]!='\0';j++) //message3 to be displayed
{display(T3[j]);
delay1(50);
}
}
void tsk4()
{
int j;
for(j=0;T4[j]!='\0';j++) //message4 to be displayed
{display(T4[j]);
delay1(50);
}
}
void repeat(){
for(;;){
lcdcmd(0x18);
lcdcmd(0x1C);
delay(75);
}
}
}}}
else {
(if R==4&&C==2)
};
//Calculator Routine
lcdclr();
unsigned char key;
unsigned char op;
unsigned char eq
unsigned int num1
unsigned int num2
cctini();
lcdinit();
cctini(){
while(1);
{ key=keyscan();
num1=key[R][C];
lcddata(key);
delay(500);
{
op=keyscan();
opr=key[R][C];
if(C!=4)
{lcdcmd(0x01)
else{
lcddata(op)
delay(500)}}
{key=keyscan();
num2=[R][C];
lcddata(key);
delay(500)
eq=keyscan()
eqs=[R][C];
if(R!=1&&C!=3)
lcdcmd(0x01);
else{
lcddata(eq)
//calculation
void calculation(unsigned char res)
{if(opr==[1][4])
res=num1+num2;
lcdini()
lcddata(res);
}
else { if(opr==[2][4])
res=num1-num2;
lcdini()
lcddata(res);
}
else { if(opr==[3][4]
) res=num1*num2
lcdini()
lcddata(res)
}
else { if(opr==[4][4])
res=num1/num2
if(num2==0){
lcdcmd(0x01)
else{
lcddata(res)
}
}}}}})}}
//DELAY ROUTINE
void delay(unsigned int msec)
{
int i,j;
for(i=0;i<msec;i++);
for(j=0;j<1275;j++);
}
//KEYPAD
unsigned char Key[4][4] ={'9','S','=','+',
'6','7','8','-',
'3','4','5','*',
'0','1','2','/'};
keyscan(){
P3 = 0x0F;
while(P3 == 0x0F);
{
//ROW
if(P3==0x0E)
R=1
r1=1;
else if(P3==0x0D)
R=2
r2=1;
else if(P3==0x0B)
R=3
r3=1;
else if(P3==0x07)
R=4
r4=1;
//COULMN
P3=0xF0;
while(P3==0xF0);
if(P3==0xE0)
C=1
c1=1;
else if(P3==0xD0)
C=2
c2=1;
else if(P3 == 0xB0)
C=3
c3=1;
else if(P3==0x70)
C=4
c4=1;
delay(20);
}
//LCD ROUTINE
void lcdini() //to initialize the LCD
{
lcdcmd(0x38);
delay(5);
lcdcmd(0x01);
delay(5);
lcdcmd(0x0C);
delay(5);
lcdsmd(0x80);
delay(5);
}
void lcdcmd(unsigned char dta)//lcdcommand is sending command to P1/LCD pins
{
lcddata=dta;
rs=0;
rw=0;
en=0;
en=1;
delay(10);
en=0;
}
void lcddata(unsigned char disp) // send data on P1/LCD
{
lcddatapin=disp;
rs=1;
rw=0;
en=1;
delay(1);
en=0;
}
lcdstr(unsigned char *strr) // send string to LCD
{
int x;
for(x=0;strr[x]!='\0';x++)
{
lcddata(strr[x]);
}
}
void clrscr(void)
{
rs = 0;
lcddatapin=0x01;
delay(255);
rs = 1;
Last edited by a moderator: