射频 rc500代码完全注释(2)
0111,1111:禁中断请 求*/
WriteIO(RegCommand,PCD_IDLE);/*(01H)命令代号均写入此处相当于单片机的指令寄存器PC:进入待命 态*/
FlushFIFO();/*清缓冲区标志?这样FIFO区就可供单片机或RC500状态机使用*/
MpIsrInfo=info;/*?*/
MpIsrOut=rcv;/*接收数据缓冲区*/
info->irqSource=0x00;/*->:存储结构或联合单元?右结合?*/ switch(cmd)
{/*根据输入的命令分支*/
casePCD_IDLE:/*是IDLE命令?00H?*/ irqEn=0x00; waitFor=0x00; break;
casePCD_WRITEE2:/*是写EEROM命令?01H?*/ irqEn=0x11; waitFor=0x10; break;
casePCD_READE2:/*是读EEROM命令?03H?*/ irqEn=0x07; .waitFor=0x04; break;
case CD_LOADCONFIG:/*是载入配置命令?07H?*/
case PCD_LOADKEYE2:/*是从EEROM载入密钥命令?0BH?*/ case CD_AUTHENT1:/*是执行认证1命令?0CH?*/ irqEn=0x05; waitFor=0x04; break;
casePCD_CALCCRC:/*是激活CRC命令?12H?*/ irqEn=0x11; waitFor=0x10; break;
casePCD_AUTHENT2:/*是执行认证2命令?14H?*/ irqEn=0x04; waitFor=0x04; break;
casePCD_RECEIVE:/*是激活接收器命令?16H?*/
info->nBitsReceived=-(ReadIO(RegBitFraming)>>4); irqEn=0x06; waitFor=0x04; break;
Case PCD_LOADKEY:/*是从FIFO中载入密钥命令?19H?*/
irqEn=0x05; waitFor=0x04; break;
casePCD_TRANSMIT:/*是将FIFO数据发送到卡片命令?1AH?*/ irqEn=0x05; waitFor=0x04; break;
case PCD_TRANSCEIVE:/*是先发送然后立即接收命令?1EH?*/ info->nBitsReceived=-(ReadIO(RegBitFraming)>>4); irqEn=0x3D; waitFor=0x04; break; default:
status=MI_UNKNOWN_COMMAND; /*是未知命令*/ }
if(status==MI_OK) /*命令是否被正确执行*/ { /*是的*/
irqEn|=0x20;/*开启定时器*/ waitFor|=0x20;
timecnt=1000;/*?*/
WriteIO(RegInterruptEn,irqEn|0x80);/*开相应的中断使能*/ WriteIO(RegCommand,cmd);/*写入相应的入口命令*/
while(!(MpIsrInfo->irqSource&waitFor||!(timecnt--)));/*错误发生情况1?*/
WriteIO(RegInterruptEn,0x7F);/*定时器计完?禁中断系统*/ WriteIO(RegInterruptRq,0x7F);
SetBitMask(RegControl,0x04);/*这一位设置作用是立即结束中断计时*/ WriteIO(RegCommand,PCD_IDLE);/*进入IDLE态*/
if(!(MpIsrInfo->irqSource&waitFor))/*错误发生情况2*/ {
status=MI_ACCESSTIMEOUT;/*在规定的时间内没有完成任务*/ }
else/*错误发生情况3*/ {
status=MpIsrInfo->status; }
if(status==MI_OK)/*命令执行成功*/ {
if(tmpStatus=(ReadIO(RegErrorFlag)&0x17))/*取出错误状态寄存器内容*/ {
if(tmpStatus&0x01)/*取出比特碰撞位?是否为1?1?有碰撞?*/ {
info->collPos=ReadIO(RegCollPos);/*得到碰撞的具体位置*/ status=MI_COLLERR;/*有碰撞*/
} else {
info->collPos=0;/*无碰撞*/ if(tmpStatus&0x02) {
status=MI_PARITYERR;/*1?奇偶校验错*/ } }
if(tmpStatus&0x04)/*取出帧检测位?是否为1?1?帧头错SOF?*/ {
status=MI_FRAMINGERR;/*1?帧头错SOF*/ }
if(tmpStatus&0x10)/*取出FIFO状态位?是否为1*/ {
FlushFIFO();/*清缓冲区*/
status=MI_OVFLERR;/*1?FIFO满*/ }
if(tmpStatus&0x08)/*取出crc校验位?是否为1*/ {
status=MI_CRCERR;/*1?CRC校验错*/ }
if(status==MI_OK)
status=MI_NY_IMPLEMENTED;//该命令不存在 }
if(cmd==PCD_TRANSCEIVE)/*如果是发接指令1*/ {
lastBits=ReadIO(RegSecondaryStatus)&0x07;/*取出最后三位*/ if(lastBits)/*最后三位为1-7?不全有效*/
info->nBitsReceived+=(info->nBytesReceived-1)*8+lastBits; else/*最后三位为0?全有效*/
info->nBitsReceived+=info->nBytesReceived*8; } } else {
info->collPos=0x00;/*无碰撞*/ } }
MpIsrInfo=0; MpIsrOut=0; return status; }
////////////////////////////////////////////////////////////////////
///
//置RC500寄存器bit
///////////////////////////////////////////////////////////////////////
charSetBitMask(unsignedcharreg,unsignedcharmask) {/*相应的寄存器?REG)?相应的屏蔽位?MASK?*/ Char idatatmp=0x00; tmp=ReadIO(reg);
WriteIO(reg,tmp|mask);/*写入*/ return0x00; }
/////////////////////////////////////////////////////////////////////// …… 此处隐藏:904字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [基础教育]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英语重点短语




