This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

syntax error near 'void'

#include<reg51.h>
#include<lcd.h>
#include<uart.h>

sbit lamp=P2^0;
sbit motor=P2^1;
//NOTES:

//1: This code may be distributed and modified freely .
//2: External Crystal of 11.0592 MHz is assumed.
//3. 16x2 lcd Modules is being operated in Nibble Mode.
//4: Connections to the lcd are assumed as followed:

// RS -> P1.0
// RW -> P1.1
// E -> P1.2
// D4,D5,D6,D7 -> P1.4,P1.5,P1.6,P1.7

#define lcd_DATA P1

sbit lcd_rs = P1^0;

sbit lcd_rw = P1^1; //Must Always be low to allow data to be sent to lcd

sbit lcd_en = P1^2;

void delay_ms(unsigned int n)
{ int i,j;
for(i=0;i<n;i++)
for(j=0;j<124;j++);
}

void lcd_enable()
{ lcd_en = 1; //High to low transition delay_ms(1); lcd_en = 0;
}

void lcd_cmd(unsigned char cmd)
{ lcd_rs = 0; //cmd Mode lcd_DATA = ((cmd & 0xF0)|0x04); lcd_enable(); lcd_DATA = (((cmd<<4) & 0xF0)|0x04); lcd_enable(); delay_ms(1);
}

void lcd_data(unsigned char ascii)
{ lcd_rs = 1; //Data Mode lcd_DATA = ((ascii & 0xF0)|0x05); lcd_enable(); lcd_DATA = (((ascii<<4) & 0xF0)|0x05); lcd_enable(); delay_ms(1);
}

void lcd_init()
{ P0=0x00;

lcd_cmd(0x02); //Enable 4 bit mode

lcd_cmd(0x28); //Set interface 4 bit 2 line

lcd_cmd(0x08); //Enable display/cursor

lcd_cmd(0x06); //Set cursor move, Move cursor right

lcd_cmd(0X0C); //Turn on display

}

void lcd_gotoxy(unsigned char row,unsigned char column) //move cursor to the specified position
{ if(row==0) { lcd_cmd(0x80+column); } else if(row==1) { lcd_cmd(0xC0+column); }
} void lcd_number(int val,unsigned int field_length) // Function to display number
{ char str[5]={0,0,0,0,0}; int i=4,j=0; while(val) { str[i]=val%10; val=val/10; i--; } if(field_length==-1) while(str[j]==0) j++; else j=5-field_length;

if(val<0) lcd_data('-'); for(i=j;i<5;i++) { lcd_data(48+str[i]); }
}

void lcd_string(unsigned char *str)
{

while(*str!='\0') //Till null character is encountered { lcd_data(*str); str++; }
}

void lcd_stringxy(unsigned char row, unsigned char col, unsigned char *lcd_string)
{ lcd_gotoxy(row,col); while (*lcd_string) { lcd_data(*lcd_string++); }
} void lcd_numberxy(unsigned char row, unsigned char col,int val,unsigned int field_length)
{ char str[5]={0,0,0,0,0}; int i=4,j=0;

lcd_gotoxy(row,col);

while(val) { str[i]=val%10; val=val/10; i--; } if(field_length==-1) while(str[j]==0) j++; else j=5-field_length;

if(val<0) lcd_data('-'); for(i=j;i<5;i++) { lcd_data(48+str[i]); }

void uart_init(void) // INITIALIZE SERIAL PORT
{ TMOD = 0x20; // Timer 1 IN MODE 2-AUTO RELOAD TO GENERATE BAUD RATE TH1 = 0xFD; // LOAD BAUDRATE TO TIMER REGISTER SCON = 0x50; // SERIAL MODE 1, 8-DATA BIT 1-START BIT, 1-STOP BIT, REN ENABLED TR1 = 1; // START TIMER
} void tx_data(unsigned char serialdata)
{ SBUF = serialdata; // LOAD DATA TO SERIAL BUFFER REGISTER while(TI == 0); // WAIT UNTIL TRANSMISSION TO COMPLETE TI = 0; // CLEAR TRANSMISSION INTERRUPT FLAG
} unsigned rx_data(void)
{ while(RI == 0); // WAIT UNTIL DATA IS RECEIVED RI = 0; // CLEAR FLAG return SBUF; // RETURN SERIAL DATA
} void tx_string(unsigned char *str)
{ while(*str) { tx_data(*str); str++; }

}
// END OF PROGRAM

void main()
{ unsigned char read[4],bulb[4]="abcd",fan[4]="bcde"; unsigned char i,count1,count2,j=0,k=0; motor=lamp=0; lcd_init(); uart_init(); delay_ms(50); lcd_stringxy(0,0,"Password based"); lcd_stringxy(1,0,"Load control"); delay_ms(5000); lcd_cmd(0x01); while(1) { count1=count2=0; lcd_cmd(0x80); for(i=0;i<4;i++) { read[i]=rx_data(); }

for(i=0;i<4;i++) { lcd_data(read[i]); } for(i=0;i<4;i++) { if(read[i]==bulb[i]) count1++; if(read[i]==fan[i]) count2++; }

if(count1==4) { j++; if(j%2==1) lcd_stringxy(0,6,"Bulb on "); else lcd_stringxy(0,6,"Bulb off"); motor=~motor; } else if(count2==4) { k++; if(k%2==1) lcd_stringxy(1,0,"Fan on "); else lcd_stringxy(1,0,"Fan off"); lamp=~lamp; } else { lcd_stringxy("pwd is wrong "); }

}
}

getting error- syntax error near 'void'...
pls help....