教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

射频 rc500代码完全注释

来源:网络收集 时间:2026-07-01
导读: #define M500_GLOBALS //PICC=卡?PCD=阅读器 //以下位要包含的头文件 #include /*字符串函数及存储器函数头文件*/ #include /*标准I/O头文件*/ #include /*存储器绝对地址访问定义?与指令MOVX相关*/ #include /*内部函数定义?与循环指令?例如RR)?位判断指令?

#define M500_GLOBALS //PICC=卡?PCD=阅读器 //以下位要包含的头文件

#include /*字符串函数及存储器函数头文件*/ #include /*标准I/O头文件*/

#include /*存储器绝对地址访问定义?与指令MOVX相关*/ #include /*内部函数定义?与循环指令?例如RR)?位判断指令?例如JB),以及空操作指令?NOP)等相关*/

#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字,全部文档内容请下载后查看。喜欢就下载吧 ……

射频 rc500代码完全注释.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/564818.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)