📄 main.c
字号:
/****************************************Copyright (c)***************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2008.04.25
** Last Version: V1.00
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Modified by: gaolihua
** Modified date: 2008.07.02
** Version: V1.0
** Descriptions: ZLG522演示程序
**
*********************************************************************************************************/
#include <string.h>
#include "config.h"
#include "zlg500.h"
#define BUZZER (1 << 30) /* 蜂鸣器控制端口P3.30,需用跳线
帽短接JP10的P3.30和BEEP两排针*/
char szDevInfo[20];
uint16 nCardType;
uint32 nCardNumber;
uint8 DataBuf[16];
uint8 Key[6];
int32 nValue;
uint8 SAK;
uint8 nTxMode;
/*********************************************************************************************************
* Function name: Delay
* Descriptions: 长软件延时
* input parameters: ms 延时参数,值越大,延时越久
* output parameters: none
* Returned value: none
** Modified by: gaolihua
** Modified date: 2008.07.02
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void Delay(int ms)
{
int i;
while (ms-- > 0) {
for (i = 5000; i > 0; i--);
}
}
/*********************************************************************************************************
* Function name: Beep
* Descriptions: 蜂鸣器鸣叫
* input parameters: nCount 蜂鸣器鸣叫的次数
* output parameters: none
* Returned value: none
** Modified by: gaolihua
** Modified date: 2008.07.02
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void Beep(uint8 nCount)
{
while (nCount-- > 0) {
FIO3CLR = BUZZER;
Delay(200);
FIO3SET = BUZZER;
Delay(100);
}
}
/**********************************************************************************************************
** 函数名称 :main
** 函数功能 :zlg522读卡模块读取卡片的操作
** 调试说明 :
**********************************************************************************************************/
extern void EnableIRQ(void);
int main (void)
{
int i;
FIO3DIR |= BUZZER;
FIO3SET = BUZZER;
EnableIRQ();
/* 获取读卡模块信息*/
do {
PCD_Init(); /* 初始化软件库 */
} while (PCD_GetDevInfo(szDevInfo, sizeof(szDevInfo)) != OK);
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) { /* 密钥验证 */
PICC_ReadBlock(4, DataBuf); /* 读块4原来的数据 */
for (i = 0; i < 16; i++) { /* 写数据到块4 */
DataBuf[i] = i;
}
PICC_WriteBlock(4, DataBuf);
memset(DataBuf, 0, sizeof(DataBuf)); /* 从块4读回前面所写的数据 */
PICC_ReadBlock(4, DataBuf);
PICC_WriteValue(1, 4); /* 写数值1到块4 */
PICC_OperateValue(INCREMENT, 1, 4, 5); /* 把块4的数值增加1写到块5,
再读回来看是否正确 */
PICC_ReadValue(&nValue, 5);
PICC_OperateValue(DECREMENT, 1, 4, 6); /* 把块4的数值减少1写到块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 + -