射频 rc500代码完全注释
#define M500_GLOBALS //PICC=卡?PCD=阅读器 //以下位要包含的头文件
#include
#include /*存储器绝对地址访问定义?与指令MOVX相关*/ #include
#include \内部寄存器定义头文件*/ #include \内部寄存器错误标志头文件*/ #include \内部寄存器定义头文件*/
#include \用户自定义相关变量和数据结构头文件*/
#define GetRegPage(addr)(0x80|(addr>>3)) /*将addr右移3位再与80h取或*/
#definenocard0 / *能量场中没有卡*/ #definemifare11 /*场中有mifare1卡*/
#definemifarepro2 /*场中有mifarepro卡*/ #definemifarelight3 /*场中有mifarelight卡*/ #defineunknowncard4 /*场中有未知卡*/ #defineNO_TIMER21 /*?*/ #defineucharunsignedchar
bdataucharAA; //A,可位寻址单字节数据类型 sbithigh_bit=AA^7; //ACC.7 sbitlow_bit=AA^0; //ACC.0 //ucharsebuf;//RECBUF,SENBUF ucharidatadisp_buf[4]; void del_8us() {
Uchar i;
for(i=0;i<1;i++) {;} }
voiddel_50us()//延时子程序 {
Uchar i;
for(i=0;i<6;i++) {;} }
voiddel_50ms() {
Uchar i,j;
for(i=0;i<255;i++) for(j=0;j<255;j++)
{;} }
voidsend(ucharsebuf)//发送子程序 {
57.uchari; 58.AA=sebuf; 59.CLK=0; 60.CS=0;
61.del_50us();
62.for(i=0;i<8;i++) 63.{
64.del_8us(); 65.DIO=high_bit; 66.CLK=1;
67.del_8us();
68.AA=AA<<1;//循环移位 69.CLK=0; 70.}
71.DIO=0; 72.}
void reset_light()//复位子程序 {
KEY=1; DIO=1;
del_8us(); send(0xa4); CS=1;
del_8us(); }
void reset_7289() {
reset_light();//上电初检 send(0xbf);
CS=1;//测试所有的led灯 del_50ms();
reset_light();//恢复熄灭状态 }
void display() {
Uchar i;
for(i=0;i<4;i++)
{send(0xa1);CS=1;del_8us();//逻辑左移指令 send(0xc8);
send((disp_buf[i]>>4)&0x0f);CS=1;del_8us();
send(0xa1);CS=1;del_8us();//逻辑左移指令 send(0xc8);
send(disp_buf[i]&0x0f);CS=1;del_8us(); } }
///////////////////////////////////////////////////////////////////////
/*往一个寄存器写一个数据*/
///////////////////////////////////////////////////////////////////////
Void WriteRawIO(unsignedcharAddress,unsignedcharvalue) {
XBYTE[Address]=value;/*调用XBYTE函数?*/ }
///////////////////////////////////////////////////////////////////////
/*从一个寄存器读出一个数据*/
///////////////////////////////////////////////////////////////////////
Unsigned char ReadRawIO(unsigned char Address) {
returnXBYTE[Address];/*调用XBYTE函数*/ }
///////////////////////////////////////////////////////////////////////
/*用页选方式访问寄存器?写入?*/
///////////////////////////////////////////////////////////////////////
void WriteIO(unsigned char Address,unsigned char value) {
WriteRawIO(0x00,GetRegPage(Address));/*调用writerawio()函数?页选?80h-87h?*/
WriteRawIO(Address,value);/*调用writerawio()函数?选择一个寄存器?0-7h?*/ }
///////////////////////////////////////////////////////////////////////
/*用页选方式访问寄存器?读出?*/
///////////////////////////////////////////////////////////////////////
Unsigned char ReadIO(unsigned char Address) {
WriteRawIO(0x00,GetRegPage(Address));/*调用writerawio()函数?页选*/ returnReadRawIO(Address);/*调用readrawio()函数*/
}
///////////////////////////////////////////////////////////////////////
/*设置定时时间*/
///////////////////////////////////////////////////////////////////////
void M500PcdSetTmo(unsigned char tmoLength) {
switch(tmoLength) {case1:
WriteIO(RegTimerClock,0x07);/*调用WRITEIO()函数,从单片机写计时器得分频比
(07H)=13.56MHZ/128--2^7*/
WriteIO(RegTimerReload,0x6a);/*调用WRITEIO()函数,从单片机写计时器的初始值(6AH)*/ break; case2:
WriteIO(RegTimerClock,0x07);/*调用WRITEIO()函数,从单片机写计时器得分频比
(07H)=13.56MHZ/128--2^7*/
WriteIO(RegTimerReload,0xa0);/*调用WRITEIO()函数,从单片机写计时器的初始值(A0H)*/ break; case3:
WriteIO(RegTimerClock,0x09);/*调用WRITEIO()函数,从单片机写计时器得分频比
(07H)=13.56MHZ/512--2^9*/
WriteIO(RegTimerReload,0xa0);/*调用WRITEIO()函数,从单片机写计时器的初始值(A0H)*/ break; case4:
WriteIO(RegTimerClock,0x09);/*调用WRITEIO()函数,从单片机写计时器得分频比
(09H)=13.56MHZ/512--2^9*/
WriteIO(RegTimerReload,0xff);/*调用WRITEIO()函数,从单片机写计时器的初始值(FF)*/ break; case5:
WriteIO(RegTimerClock,0x0b);/*调用WRITEIO()函数,从单片机写计时器得分频比
(07H)=13.56MHZ/128--2^7*/
WriteIO(RegTimerReload,0xff);/*调用WRITEIO()函数,从单片机写计时器的初始值(FFH)*/ break;
case6:
WriteIO(RegTimerClock,0x0d);/*调用WRITEIO()函数,从单片机写计时器得分频比
(07H)=13.56MHZ/128--2^7*/
WriteIO(RegTimerReload,0xff);/*调用WRITEIO()函数,从单片机写计时器的初始值(FFH)*/ break; case7:
WriteIO(RegTimerClock,0x0f);/*调用WRITEIO()函数,从单片机写计时器得分频比
(07H)=13.56MHZ/128--2^7*/
WriteIO(RegTimerReload,0xff);/*调用WRITEIO()函数,从单片机写计时器的初始值(FFH)*/ break;
default:/*其它情况*/
WriteIO(RegTimerClock,0x07);/*调用WRITEIO()函数,从单片机写计时器得分频比
(07H)=13.56MHZ/128--2^7*/
WriteIO(RegTimerReload,tmoLength);/*调用WRITEIO()函数,从单片机写计时器的初始值(TMOLENTH)*/ break; } }
///////////////////////////////////////////////////////////////////////
//Request Command define dinISO14443(Mifare) /*命令判别程序*/
///////////////////////////////////////////////////////////////////////
Char M500PcdCmd(unsigned char cmd, volatileunsignedchardata*rcv, MfCmdInfoidata*info) {
Char idatastatus=MI_OK;
Char idatatmpStatus;/*中间 …… 此处隐藏:2967字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




