1 Star 0 Fork 14

伤心小剑/RFID-RC522_with_C51

forked from Zany/RFID-RC522_with_C51 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
MAIN.C 4.31 KB
一键复制 编辑 原始数据 按行查看 历史
Zany 提交于 2015-05-19 18:11 . fucking work done
#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();
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/canyeweishang/RFID-RC522_with_C51.git
[email protected]:canyeweishang/RFID-RC522_with_C51.git
canyeweishang
RFID-RC522_with_C51
RFID-RC522_with_C51
master

搜索帮助