Code

5
#include #include<string.h> #include "lcd_display4bit.h" #define TOTAL 5 void serial_init(); void serial_txS(char *); void serial_tx(char); void checkID(); void printOnTerminal(); short int checkTodaysAttd(int); sbit ON=P1^0; sbit RESET=P1^1; sbit result=P1^2; sbit IR_Tx=P1^3; sbit IR_Rx=P1^4; sbit Reset_Todays_Attendence=P1^5; struct details { char *name; char id[4]; int count; }emp[TOTAL]={{"phanindra", "437p", 0}, {"nayak", "455n", 0}, {"anilKumar", "414a", 0}, {"gowtham", "456g", 0}, {"chaitu", "449c", 0}}; char recieved_id[4]={0}; int i, no_of_stu=0, todays_count=0; int todays_ids[4]={0}; short int access=0, gotID=0; void serial() interrupt 4 { EA=0; for(i=0;i<4;i++) { while(RI==0); recieved_id[i]=SBUF; RI=0; } gotID=1;

Transcript of Code

Page 1: Code

#include #include<string.h> #include "lcd_display4bit.h"

#define TOTAL 5

void serial_init(); void serial_txS(char *); void serial_tx(char); void checkID(); void printOnTerminal(); short int checkTodaysAttd(int);

sbit ON=P1^0; sbit RESET=P1^1; sbit result=P1^2; sbit IR_Tx=P1^3; sbit IR_Rx=P1^4; sbit Reset_Todays_Attendence=P1^5; struct details { char *name; char id[4]; int count; }emp[TOTAL]={{"phanindra", "437p", 0}, {"nayak", "455n", 0}, {"anilKumar", "414a", 0}, {"gowtham", "456g", 0}, {"chaitu", "449c", 0}};

char recieved_id[4]={0}; int i, no_of_stu=0, todays_count=0; int todays_ids[4]={0}; short int access=0, gotID=0;

void serial() interrupt 4 { EA=0; for(i=0;i<4;i++) { while(RI==0); recieved_id[i]=SBUF; RI=0; } gotID=1; EA=1; }

//***********************************------ void main() { ON=RESET=result=1; rs=en=0; P2=0x00; IR_Rx=1;

Page 2: Code

IR_Tx=0; EA=1; ES=1; serial_init(); lcd_init();

super: while(1) { IR_Tx=0; lcd_cmd(0x01);

while(!ON) { lcd_cmd(0x01); IR_Tx=1; while(!(IR_Rx==1)) { lcd_cmd(0x01); lcd_dataS("ID please"); while(gotID==0) //wait until any card is shown if(ON==1) goto super; checkID(); } } ///////////////////////// while(!result) { for(i=0;i<=TOTAL;i++) { lcd_cmd(0x01); lcd_dataS(emp[i].name); lcd_cmd(0xc0); lcd_data_int(emp[i].count); delay_msec(500); } } ////////////////////////

while(! Reset_Todays_Attendence) { for(i=0;i'\0';

todays_count=0; lcd_cmd(0x01); lcd_dataS("todays attd rst"); delay_msec(100); } /////////////////////// } //end of super loop } //end of main

//*************************************

Page 3: Code

void checkID(){ access=0; //like a flag lcd_dataS(recieved_id); for(i=0;iif(( strcmp(emp[i].id , recieved_id) )==0) { if(checkTodaysAttd(i)) { access=1; lcd_cmd(0x01); lcd_dataS("welcome"); lcd_cmd(0xc0); lcd_dataS(emp[i].name); emp[i].count++;

todays_ids[todays_count]=i+1; todays_count++;

delay_msec(400); printOnTerminal(); gotID=0; break; } else { lcd_cmd(0x01); lcd_dataS("your turns over"); gotID=0; delay_msec(400); } } }

if(access==0) { lcd_cmd(0x01); lcd_dataS("access denied"); delay_msec(100); gotID=0; } }

short int checkTodaysAttd(int id){ short int d; for(d=0;dif(id==(todays_ids[d]-1)) return 0; //return 0 if specific ID has already been } //counted for today. return 1;}

void printOnTerminal(){ EA=0; serial_tx('\r');

Page 4: Code

serial_tx('\n'); serial_txS(emp[i].name); serial_tx(' '); serial_txS(emp[i].id); serial_tx(' '); serial_tx(emp[i].count+48); EA=1;}

void serial_init(){ TMOD=0x20; TH1=0xfd; SCON=0x50; TR1=1;}

void serial_txS(char *p){ while((*p)!='\0') { SBUF=*p; while(TI==0); TI=0; p++; }}

void serial_tx(char x){ SBUF=x; while(TI==0); TI=0;}