#include<reg52.h>
#include<string.h>
unsigned char num1[]={0x02,0x32,0x31,0x30,0x30,0x43,0x37,0x43,0x30,0x46,0x44,0x44,0x42,0x03};
unsigned char num2[]={0x02,0x32,0x31,0x30,0x30,0x43,0x36,0x42,0x34,0x42,0x44,0x45,0x45,0x03};
unsigned char num3[]={0x02,0x32,0x31,0x30,0x30,0x43,0x38,0x34,0x34,0x31,0x46,0x42,0x32,0x03};
unsigned char num4[]={0x02,0x32,0x31,0x30,0x30,0x43,0x38,0x42,0x33,0x35,0x41,0x30,0x30,0x03};
unsigned char num5[]={0x02,0x32,0x31,0x30,0x30,0x43,0x39,0x31,0x31,0x35,0x39,0x41,0x30,0x03};
unsigned char num6[]={0x02,0x32,0x31,0x30,0x30,0x35,0x42,0x45,0x43,0x34,0x38,0x44,0x45,0x03};
unsigned char num[14];//存放選定的卡號
unsigned int i,n=0;
unsigned char now[14];//存放讀取的卡號
sbit LED=P1^2;
unsigned char m=100;
unsigned int j,k,temp,key=0;
void delaychar(unsigned int m)
{
for(j=m;j>0;j--)
for(k=125;k>0;k--);
}
void jvzhen()
{
while(1)
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delaychar(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
break;
case 0xde:
key=1;
break;
case 0xbe:
key=2;
break;
case 0x7e:
key=3;
break;
}
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delaychar(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=4;
break;
case 0xdd:
key=5;
break;
case 0xbd:
key=6;
break;
case 0x7d:
key=7;
break;
}
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delaychar(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:
key=8;
break;
case 0xdb:
key=9;
break;
case 0xbb:
key=10;
break;
case 0x7b:
key=11;
break;
}
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delaychar(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
key=12;
break;
case 0xd7:
key=13;
break;
case 0xb7:
key=14;
break;
case 0x77:
key=15;
break;
}
}
}
switch(key)
{
case 1:strcpy(num,num1);break;
case 2:strcpy(num,num2);break;
case 3:strcpy(num,num3);break;
case 4:strcpy(num,num4);break;
case 5:strcpy(num,num5);break;
case 6:strcpy(num,num6);break;
default:break;
}
if(!strcmp(now,num))
LED=1;
else
LED=0;
}
}
void transfor() interrupt 4//串口通信中斷
{
if(RI)
{
RI=0;
now[n]=SBUF;
n++;
if(n==14)
n=0;
}
}
void main(void)
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
TR1=1;
ES=1;
EA=1;
jvzhen();
}
|