代码拉取完成,页面将自动刷新
同步操作将从 Zany/RFID-RC522_with_C51 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "lpcreg.h"
#include "main.h"
#include "mfrc522.h"
unsigned char code data1[16] = {0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};
//M1卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令
//4字节金额(低字节在前)+4字节金额取反+4字节金额+1字节块地址+1字节块地址取反+1字节块地址+1字节块地址取反
unsigned char code data2[4] = {0x12,0,0,0};
unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
unsigned char idata Read_Data[16]={0x00};
unsigned char g_ucTempbuf[20];
//----------------------------------------------------------
//是否被初始化
//1表示 是,0表示否
//sbit isInit=0;
//unsigned char orderCode=0;
//-----------------------------------------------------------
//---
//蜂鸣器
sbit beep=P0^2;
//---
#define LOCK 0;
#define OPEN 1;
sbit DOOR=P0^0;
//
//延迟
void delays(void)
{
unsigned char m,n;
for(m=0;m<200;m++)
for(n=0;n<258;n++)
;
}
//错误指示灯
void flash_ERR(){
LED_ERR=1;
delays();
LED_ERR=0;
}
//初始化RFID-RC522
void InitRc522(void)
{
PcdReset();
PcdAntennaOff();
PcdAntennaOn();
M500PcdConfigISOType('A');
}
//初始化
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
void Send(unsigned char dat)
{
SBUF=dat;
while(TI==0)
;
TI=0;
}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 150; j > 0; j--);
}
void Usart() interrupt 4
{
unsigned char receiveData,i=0;
receiveData=SBUF; //出去接收到的数据
RI = 0; //清除接收中断标志位
if(receiveData ==0xff) //上锁指令
{
DOOR=LOCK;
}
if(receiveData ==0xf0) //开锁指令
{
DOOR=OPEN;
while(i<240)
{
beep=1;
delay(25);
beep=0;
i++;
}
}
}
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a, b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void main( )
{
unsigned char status;
unsigned char c=0;
InitializeSystem( ); //初始化
while ( 1 )
{
//InitializeSystem( ); //初始化
status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡
if (status != MI_OK)
{
continue;
}
status = PcdAnticoll(g_ucTempbuf); //防冲撞----返回 卡片序列号,4字节
if (status != MI_OK)
{
continue;
}
//向串口发送卡片序列号
for(c=0;c<4;c++)
{
LED_GREEN=0;
Send(g_ucTempbuf[c]);
LED_GREEN=1;
}
PcdHalt();
Delay10ms(300);
///////////////////////////////////////////////////////////////////////
/// ///
/// 以下的代码不能删 ///
/// 删了就无法正常编译 ///
///////////////////////////////////////////////////////////////////////
status = PcdSelect(g_ucTempbuf);
if (status != MI_OK)
{
continue;
}
status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);
if (status != MI_OK)
{
continue;
}
status = PcdWrite(1, data1);
if (status != MI_OK)
{
continue;
}
status = PcdValue(PICC_DECREMENT,1,data2);
if (status != MI_OK)
{
continue;
}
status = PcdBakValue(1, 2);
if (status != MI_OK)
{
continue;
}
status = PcdRead(2, g_ucTempbuf);
if (status != MI_OK)
{
continue;
}
LED_GREEN=1;
}
}
/////////////////////////////////////////////////////////////////////
//系统初始化
/////////////////////////////////////////////////////////////////////
void InitializeSystem()
{
P0M1 = 0x0;
P0M2 = 0x0;
P1M1 = 0x0;
P1M2 = 0x0;
P3M1 = 0x0;
P3M2 = 0xFF;
P0 = 0xFF;
P1 = 0xFF;
P3 = 0xFF;
DOOR=LOCK;
InitRc522();
UsartConfiguration();
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。