#include <REGX52.h>   

#define Baud_rate 0xF4                    //setting 2400 bauds/sec
char i=0,j=0,buf[12],var[10],buf2[10];
bit aux=0;
char contor;
 
init(){
	TMOD=0x20;                 //initializing serial
	SCON=0x50;
	TH1=Baud_rate;
	TL1=Baud_rate;
	EA=1;
	ES=1;
	TR1=1;
}

void main(){
	buf2[0]=0x30;buf2[1]=0x34;buf2[2]=0x31;   //valid ID is stored in this variable
	buf2[3]=0x35;buf2[4]=0x44;buf2[5]=0x38;
	buf2[6]=0x41;buf2[7]=0x31;buf2[8]=0x46;
	buf2[9]=0x031;
	P2_0=0;                            //glow led 

	init();
	while(1);
}

void serial_IT(void) interrupt 4
{
	if(RI){
			buf[i]=SBUF;                 //move the received character to variable buf
			//delay(100);
			RI=0;
			}
		if(i<12) i++;         //making loop to store all 12 bytes from reader         
		else{           //if i already received 12 bytes
		i=0;            //clear i
		if(buf[0]==0x0A){         //if first character is 0x0A
		P2_1=0;                   //glow LED
		if(buf[11]==0x0D){        //if last character is 0x0D
			P2_2=0;            //glow another LED
			for(j=0;j<9;j++){            
				var[j]=buf[j+1];   //storing the middle 10 bytes of received string in another variable
				if(var[j]!=buf2[j]) aux=1; //compare with stored ID;if mismatch the set aux
					}
				}
			}
		if(aux==0){   //if no mismatch found then the ID received from reader is valid 
			P2_3=0;   //so glow led
			}
	
		}
		
}
 