📄 main.c
字号:
#include <string.h>
#include "config.h"
#include "zlg500.h"
#define BUZZER (1 << 27) // 蜂鸣器控制端口P1.27,需用跳线帽短接JP1的P1.27和BEEP两排针
char szDevInfo[20];
uint16 nCardType;
uint32 nCardNumber;
uint8 DataBuf[16];
uint8 Key[6];
int32 nValue;
uint8 SAK;
uint8 nTxMode;
// 延时函数
void Delay(int ms)
{
int i;
while (ms-- > 0)
{
for (i = 10000; i > 0; i--);
}
}
// 控制蜂鸣器鸣叫
void Beep(uint8 nCount)
{
while (nCount-- > 0)
{
IO1CLR = BUZZER;
Delay(200);
IO1SET = BUZZER;
Delay(100);
}
}
int main (void)
{
int i;
IO1DIR |= BUZZER;
IO1SET = BUZZER;
// 初始化软件库
PCD_Init();
// 获取读卡模块信息
PCD_GetDevInfo(szDevInfo, sizeof(szDevInfo));
Key[0] = 0xFF;
Key[1] = 0xFF;
Key[2] = 0xFF;
Key[3] = 0xFF;
Key[4] = 0xFF;
Key[5] = 0xFF;
while(1)
{
// 请求卡片,获得卡片类型
if (PICC_Request(REQ_STD, &nCardType) != OK)
{
continue;
}
// 卡片防碰撞, 获得卡片序列号
PICC_Anticoll(SEL_CODE1, &nCardNumber);
// 选择卡片
PICC_Select(SEL_CODE1, nCardNumber, &SAK);
// 蜂鸣器叫一声
Beep(1);
Delay(2000);
// 密钥验证
if (PICC_AuthKeyDirect(Key, KEYA, nCardNumber, 4) == OK)
{
// 读块4原来的数据
PICC_ReadBlock(4, DataBuf);
// 写数据到块4
for (i = 0; i < 16; i++)
{
DataBuf[i] = i;
}
PICC_WriteBlock(4, DataBuf);
// 从块4读回前面所写的数据
memset(DataBuf, 0, sizeof(DataBuf));
PICC_ReadBlock(4, DataBuf);
// 写数值1到块4
PICC_WriteValue(1, 4);
// 把块4的数值增加1写到块5,再读回来看是否正确
PICC_OperateValue(INCREMENT, 1, 4, 5);
PICC_ReadValue(&nValue, 5);
// 把块4的数值减少1写到块6,再读回来看是否正确
PICC_OperateValue(DECREMENT, 1, 4, 6);
PICC_ReadValue(&nValue, 6);
// 挂起卡片
PICC_Halt();
// 蜂鸣器叫两声
Beep(2);
}
// 设置自动检测卡片——串口主动发回数据,TX交替,直接密码验证,密钥A,读块4
PICC_AutoDetect(AD_SERIAL_OUT, AD_ALTER_TX, REQ_STD, 'F', KEYA, Key, 0, 4);
// 等待直到接收到自动检测卡片的数据
while (PICC_ReceiveDetectData(&nTxMode, &nCardType, &nCardNumber, DataBuf) != OK);
PICC_Halt();
// 蜂鸣器叫三声
Beep(3);
}
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -