📄 main.c
字号:
#define main_GLOBALS
#include "config.h"
#include "main.h"
#include "delay.h"
#include "zlg500s.h"
#include "zlg500S_comm.h"
static void main_init();
INT8U DataBfr[16];
INT8U Card_Snr[4];
INT8U TxMode;
INT8U Atq[2];
INT8U Sak;
main()
{
INT8U temp;
main_init();
GetDvcInfo(DataBfr);
DataBfr[0] = 0xff;
DataBfr[1] = 0xff;
DataBfr[2] = 0xff;
DataBfr[3] = 0xff;
DataBfr[4] = 0xff;
DataBfr[5] = 0xff;
PCDLoadKey(KEYA,0,DataBfr);
while(1)
{
if(PiccRequest(REQSTD,DataBfr) != OK) continue;
if(PiccAnticoll(SELCODE1,0,Card_Snr)!=OK) continue;
if(PiccSelect(SELCODE1,Card_Snr,DataBfr)!=OK) continue;
if(PiccAuthE2(KEYA,Card_Snr,0,4)!=OK) continue;
if(PiccRead(4,DataBfr)!=OK) continue;
DataBfr[0] = 0x10; DataBfr[4] = 0xef; DataBfr[8] = 0x10;
DataBfr[1] = 0x0; DataBfr[5] = 0xff; DataBfr[9] = 0x0;
DataBfr[2] = 0x0; DataBfr[6] = 0xff; DataBfr[10] = 0x0;
DataBfr[3] = 0x0; DataBfr[7] = 0xff; DataBfr[11] = 0x0;
DataBfr[12] = 0x04; DataBfr[13] = 0xfb; DataBfr[14] = 0x04; DataBfr[15] = 0xfb;
if(PiccWrite(4,DataBfr)!=OK) continue;
DataBfr[0] = 0x0;
if(PiccRead(4,DataBfr)!=OK) continue;
DataBfr[0] = 0x01;
DataBfr[1] = 0x0;
DataBfr[2] = 0x0;
DataBfr[3] = 0x0;
if(PiccValue(DECREMENT,4,DataBfr,5)!=OK) continue;
if(PiccValue(INCREMENT,4,DataBfr,6)!=OK) continue;
if(PiccRead(5,DataBfr)!=OK) continue;
if(PiccRead(6,DataBfr)!=OK) continue;
PiccHalt();
//测试卡自动检测----不连续检测,卡不挂起,TX交替,E2密码验证,密钥A,读4块
DataBfr[0] = 0;
while(PiccAutoDetect(0, ADTXALERT, REQSTD, 'E', KEYA, DataBfr, 4) != 0);
while(PiccADRcv(&TxMode,Atq,&Sak,Card_Snr,DataBfr) != 0);
DataBfr[0] = 0x10; DataBfr[4] = 0xef; DataBfr[8] = 0x10;
DataBfr[1] = 0x0; DataBfr[5] = 0xff; DataBfr[9] = 0x0;
DataBfr[2] = 0x0; DataBfr[6] = 0xff; DataBfr[10] = 0x0;
DataBfr[3] = 0x0; DataBfr[7] = 0xff; DataBfr[11] = 0x0;
DataBfr[12] = 0x04; DataBfr[13] = 0xfb; DataBfr[14] = 0x04; DataBfr[15] = 0xfb;
if(PiccWrite(4,DataBfr)!=OK) continue;
DataBfr[0] = 0x0;
if(PiccRead(4,DataBfr)!=OK) continue;
DataBfr[0] = 0x01;
DataBfr[1] = 0x0;
DataBfr[2] = 0x0;
DataBfr[3] = 0x0;
if(PiccValue(DECREMENT,4,DataBfr,5)!=OK) continue;
if(PiccValue(INCREMENT,4,DataBfr,6)!=OK) continue;
if(PiccRead(5,DataBfr)!=OK) continue;
if(PiccRead(6,DataBfr)!=OK) continue;
PiccHalt();
//测试卡自动检测----发回后继续检测,检测后将卡挂起,TX全发送,直接密码验证,密钥A,读4块
DataBfr[0] = 0xff; DataBfr[1] = 0xff; DataBfr[2] = 0xff;
DataBfr[3] = 0xff; DataBfr[4] = 0xff; DataBfr[5] = 0xff;
while(PiccAutoDetect(ADCONTINUE | ADHALT, ADALLTX, REQSTD, 'F', KEYA, DataBfr, 4) != 0);
temp = 3;
while(temp)
{
if(PiccADRcv(&TxMode,Atq,&Sak,Card_Snr,DataBfr) == 0)
temp--;
}
PiccReadADDT(ADRFU,&TxMode,Atq,&Sak,Card_Snr,DataBfr);
//测试卡自动检测----不连续检测,检测后将卡挂起,TX全发送,直接密码验证,密钥A,读4块
DataBfr[0] = 0xff; DataBfr[1] = 0xff; DataBfr[2] = 0xff;
DataBfr[3] = 0xff; DataBfr[4] = 0xff; DataBfr[5] = 0xff;
while(PiccAutoDetect(ADHALT, ADALLTX, REQSTD, 'F', KEYA, DataBfr, 4) != 0);
temp = 3;
while(temp)
{
if(!zlg500S_Int)
{ //读回数据,继续检测
if(PiccReadADDT(ADRFU | ADREENABLE,&TxMode,Atq,&Sak,Card_Snr,DataBfr) == 0)
temp--;
}
}
PiccReadADDT(ADRFU,&TxMode,Atq,&Sak,Card_Snr,DataBfr); //读回数据,停止检测
}
}
void main_init()
{
//单片机内部资源初始化
T2_timeout_init(RCAP2_5ms);
//中断
EA = 1;
ZLG500S_COMM_Init();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -