📄 新建 文本文档.txt
字号:
/*验证1:读卡序列号函数readsnr(cardsnr)*/
#include "main.h"
#include "rc500.h"
#include "lcd.h"
#include "led.h"
#include " VIIC_C51.H"
uchar idata t_buff[16],cardsnr[4];
uchar xdata buff[16];
unsigned long keynumber;
unsigned char disp_buff[6];
unsigned char keybuff[6];
uint tage;
bit T0IR;
bit dataconctrl;
bit keyflag;
uint consmeny;
////////////////////////////////////////////////////////////
time0() interrupt 1 using 1 /*50ms*/
{
if(tage)
tage--; // Decrease timeout counter
if(!tage)
{
T0IR = 1; // Set timeout state
TR0 = 0;
ES=1; //when the time is out,enable ES,can access eeprom this time
}
TF0 = 0;
}
startwait(uchar time)
{ tage=time*2;T0IR=0;
TR0=1;ET0=1;EA=1;ES=0;
}
void putbyte(uchar c)
{
SBUF=c;
while(!TI);TI=0;
}
void urtinit() //串口初始化
{ TMOD = 0x21;
PCON = 0x80;
SCON = 0x50;
TH1=0xFD; TL1=0xFD; TR1=1; //19200.n,8.1
}
void setmiyao(void)
{
char buff1[6],buff2[6];
buff1[0]=0xff;
buff1[1]=0xff;
buff1[2]=0xff;
buff1[3]=0xff;
buff1[4]=0xff;
buff1[5]=0xff;
buff2[0]=0xff;
buff2[1]=0xff;
buff2[2]=0xff;
buff2[3]=0xff;
buff2[4]=0xff;
buff2[5]=0xff;
if(rc500_keys(KEYA,0x03,buff1,buff)==MI_OK)
{ putbyte(0xaa);
}
if(rc500_keys(KEYB,0x03,buff2,buff)==MI_OK)
{ putbyte(0xbb);
}
}
/************************************声响1子程序***********/
void alar(uint k,uchar h)
{//TOGGLE_WD();
while(h--)
{_alarm=ON;
delay_10ms(k);
_alarm=OFF;
delay_10ms(k);
}
}
////////////////////////////////////////////////////////////
uchar rcinit()
{
alar(30,1);
RC500_CS = TRUE; // Enable the CS for RC500
P1=P2=P3=0xff;
IT0 = 1; // Config ext0 as edge trigger for RC500
EX0 = 1; // Enable ext0 interrupt for RC500
EA = TRUE; // Enable all interrupts
OpenIO();
if(M500PcdConfig()!=MI_OK)
{alar(30,1);
putbyte(0x11);
return(NOK);
}
else
{
alar(10,3);
putbyte(0x33);
return(OK);}
}
void keymovedisp(unsigned char key)
{ unsigned char dat;
dat=key;
keybuff[5]=keybuff[4];
keybuff[4]=keybuff[3];
keybuff[3]=keybuff[2];
keybuff[2]=keybuff[1];
keybuff[1]=keybuff[0];
keybuff[0]=dat;
disp_num(keybuff);
}
uchar readmfandwrite()
{ uint d;
uchar wrong;
startwait(20);/*等待刷卡???*/
while(!T0IR&&keyflag==0)
{
//if(readsnr(cardsnr)==MI_OK)
// {alar(50,1);
// putbyte(cardsnr[0]);
// putbyte(cardsnr[1]);
// putbyte(cardsnr[2]);
// putbyte(cardsnr[3]);
// }
// break;
if(rc500(WRITE,KEYB,0x0e,t_buff,cardsnr)==MI_OK) //有卡???
{ consmeny=100;
d=256*t_buff[1]+t_buff[0];
if(d>0&&d>=consmeny) //y!=0x00
{ d=d-consmeny;
t_buff[1]=d>>8;
t_buff[0]=d;
wrong=M500PiccWrite(0x0e,t_buff);
if(wrong==MI_OK)
{putbyte(t_buff[1]);
putbyte(t_buff[0]);
}
}
alar(50,1);
}
}
keyflag=1;
return 1;
}
void key_pross()
{
unsigned char key;
key=get_key(); // 从键盘程序返回键盘值
if (key!=0xff) //若无输入,则重新开始循环体
{ if(0<=key&&key<=9)
{ keymovedisp(key);
}
else if(key==15) //确定键
{keyflag=0;
keybuff[3]=0x03;
keybuff[2]=0x02;
keybuff[1]=0x01;
keybuff[0]=0x00;
consmeny=keybuff[3]*1000+keybuff[2]*100+keybuff[1]*10+keybuff[0];
disp_num_dot(keybuff);
putbyte(consmeny);
consmeny=consmeny>>8;
putbyte(consmeny);
}
else if(key==14) //清零键
{keybuff[5]=0x00;
keybuff[4]=0x00;
keybuff[3]=0x00;
keybuff[2]=0x00;
keybuff[1]=0x00;
keybuff[0]=0x00;
disp_cls();
}
}
}
main()
{
urtinit();
putbyte(0x55);
disp_int();
rcinit();
keyflag=1;
setmiyao();
while(1)
{ //key_pross();
// readmfandwrite();
if(rc500(READ,KEYB,0x0e,t_buff,cardsnr)==MI_OK) //有卡???
{
alar(50,1);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -