hi sir nice to meet u
sir now i start to learn how to serial interfacing in 8051.i write the code for serial communication the program is working but it isnot logic can u please expline me sir. in this program,i remove the fuctions of lcd(),lcdcmd(),display(),in while loop or before while the program is not display before rf module read rfid serialy. otherwise rfmodule read after rfid.display is working. it is read befoer rfid the functions are write both side befoer while after while.it is displaied.what is the problem it is not logic. pleace explain me sir
#include<reg51.h>
#include<stdio.h>
#include<string.h>
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
unsigned char tem[9];
void serialrx();
void cmp();
void lcdcmd(unsigned char l);
void lcddata(unsigned char l);
void display(unsigned char *dr);
//void delay(unsigned char s);
void delay(unsigned char l);
void lcd();
void lcdcmd(unsigned char l)
{
P1=l;
rs=0;
en=1;
rw=0;
en=0;
}
void lcddata(unsigned char l)
{
P1=l;
rs=1;
en=1;
rw=0;
en=0;
}
void display(unsigned char *dr)
{
while(*dr)
{
lcddata(*dr++);
}
}
void delay(unsigned char l)
{
while(l--);
}
void lcd()
{
lcdcmd(0x0c);
delay(6);
lcdcmd(0x38);
delay(6);
lcdcmd(0x06);
delay(6);
}
void main()
{
lcd();
lcdcmd(0x80);
delay(1000);
display("WARRIOR TRANS");
delay(1000);
lcdcmd(0xc0);
delay(1000);
display("MISSION TOOL");
while(1)
{
lcd();
lcdcmd(0x80);
delay(1000);
display("WARRIOR TRANS");
delay(1000);
lcdcmd(0xc0);
delay(1000);
display("MISSION TOOL");
serialrx();
cmp();
}
}
void cmp()
{
int a;
char b[9]="16722482";
a=strcmp(b,tem);
if(a==0)
{
lcd();
lcdcmd(0x80);
display(" ");
delay(1000);
lcdcmd(0x80);
display("AUTHORISED");
delay(1000);
lcdcmd(0xc0);
display(" ");
delay(1000);
lcdcmd(0xc0);
display(" TOOL ");
}
else
{
lcd();
lcdcmd(0x80);
display(" ");
delay(1000);
lcdcmd(0x80);
display("UNAUTHORISED");
delay(1000);
lcdcmd(0xc0);
display(" ");
delay(1000);
lcdcmd(0xc0);
display(" TOOL ");
}
}
void serialrx()
{
int i;
TMOD=0x20;
TH1=0xfd;
SCON=0x50;
TR1=1;
for(i=0;i<8;i++)
{
while(RI==0);
tem[i]=SBUF;
RI=0;
}
tem[i]='\0';
}