📄 main.c
字号:
#include <REGX52.H>
#include <main.h>
#include <iso14443b.h>
#include <src632.h>
#include <string.h>
#include <intrins.h>
unsigned char idata g_cReceBuf[64];
void main(void)
{
InitializeSystem();
Rc632Ready();
PcdConfigISOType( 'B' );
while(1)
{
if(M531PiccRequestB(PICC_REQBSTD,0,0,g_cReceBuf)==MI_OK)
{
BellSpeak();
}
}
}
/////////////////////////////////////////////////////////////////////
//初始化RC632
/////////////////////////////////////////////////////////////////////
void Rc632Ready(void)
{
char status;
DelayMs(100);
DelayMs(100);
DelayMs(100);
DelayMs(100);
DelayMs(100);
DelayMs(100);
DelayMs(100);
status = PcdReset();
if(status != MI_OK)
{
DelayMs(10);
status = PcdReset();
}
if(status != MI_OK)
{
DelayMs(10);
status = PcdReset();
}
if(status == MI_OK)
{
BellSpeak(); //绿色指示灯亮,表示RC632复位成功
}
}
/////////////////////////////////////////////////////////////////////
//系统初始化
/////////////////////////////////////////////////////////////////////
void InitializeSystem(void)
{
//IO口初始化
P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
P3 = 0xff;
//串口初始化
SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD = 0x20; //TMOD: timer 1, mode 2, 8-bit reload
TH1 = 0xFd; //Baud:9600 fosc=11.0592MHz
TL1 = 0xF4;
TR1 = 1; // timer 1 run
ES = 0;
EA = 0;
}
/////////////////////////////////////////////////////////////////////
//用T2做延时子程序
/////////////////////////////////////////////////////////////////////
void DelayMs(unsigned int _MS)
{
unsigned char a;
while(_MS--)
{
for(a=0;a<10;a++)
{
TH0 = 0xff;
TL0 = 0xa3;
TF0 = 0;
TR0 = 1;
while (!TF0);
TR0 = 0;
TF0 = 0;
}
}
}
void Delay_50us(unsigned char _50us)
{
while(_50us--)
{
TH0 = 0xff;
TL0 = 0xa3;
TF0 = 0;
TR0 = 1;
while (!TF0);
TR0 = 0;
TF0 = 0;
}
}
/******************************
*函数:蜂鸣器发声
*void BellSpeak(void)
*无返回值
*********************************/
void BellSpeak(void)
{
Bell=0; //输出低电平
DelayMs(150); //发出响声
Bell=1; //关闭峰鸣器
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -