📄 main.c
字号:
//------------------------------------------------------------------------*
//工 程 名:JB8_IO_SPI.prj *
//硬件连接:读写模块为标准DIP40封装 *
//说 明: *
// (1)运行指示灯长闪烁3次表示初始化成功 *
// (2)运行指示灯短闪烁1次表示读卡成功 *
// (3)UID信息存储在内存中的Card_inform[]数组中,首字节表示电子标签类型*
// (4)外部控制系统通过SPI接口与读写模块通信,每次交互1个字节。读写模 *
// 块作为SPI从机,响应SPI主机的从机选择信号,根据前一次接收的数据, *
// 发送相应的读写模块获取的电子标签UID信息(详见键盘中断处理函数) *
//------------------------------------------------------------------------*
//总头文件
#include "Includes.h"
//主函数
void main()
{
INT8U JB8_RSTState; //JB8复位状态标志位 0-成功 ,1-失败
INT8U CardA_OK,CardB_OK;
INT8U i;
INT8U UIDLen;
INT8U UID[11];
JB8_RSTState = 0;
//初始化
DisableMCUint(); //禁止总中断
MCUinit(); //芯片初始化
LEDinit(); //运行指示灯初始化
SPI0Init(); //SPI0初始化(与NE64通信)模拟从机
Card_inform[0] = 'A';//UID数据数组,Card_inform[0]:“A”-A卡,“B”-B卡
EnableKBint(); //开放键盘中断,响应从机选择
EnableMCUint(); //开总中断
LED_Spark(3, 'L'); //运行指示灯长闪烁3次,表明初始化成功
//总循环
while (1)
{
//复位及初始化RC531
JB8_RSTState = RFReset();
//ISO14443A 处理部分
RC531_14443ABInit(1); //按ISO14443A标准设置相关寄存器
CardA_OK = ReadTag(1, &UIDLen, UID); //读TypeA卡
if(CardA_OK == 0)
{
//获取A卡UID成功,并记录UID信息
Card_inform[0] = 'A';
for(i = 0; i < 5; i++)
Card_inform[i + 1] = UID[i];
LED_Spark(1, 'S'); //运行指示灯短闪烁一次,表明读卡成功
}
//ISO14443B 处理部分
RC531_14443ABInit(0); //按ISO14443B标准设置相关寄存器
CardB_OK = ReadTag(0, &UIDLen, UID); //读TypeB卡
if(CardB_OK == 0)
{
//获取B卡卡号成功,并记录UID信息
Card_inform[0] = 'B';
for(i = 0; i < 10; i++)
Card_inform[i + 1] = UID[i];
LED_Spark(1, 'S'); //运行指示灯短闪烁一次,表明读卡成功
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -