射频 rc500代码完全注释(9)
1003.{
1004.memcpy(_data,SerBuffer,16);/*则将读出的数据送_DATA存储*/ 1005.} 1006.}
1007.M500PcdSetTmo(1);/*延时?方式0?*/ 1008.returnstatus;/*返回状态值*/ 1009.} 1010.
1011.////////////////////////////////////////////////////////////////
1012.//Writethemifarecard
1013./*写卡,下载密码到15区?1-15?的任意区的第四块?密钥块?*/
1014.////////////////////////////////////////////////////////////////
1015.charM500PiccWrite(unsignedcharaddr,unsignedchar*_data) 1016.{/*addr=卡的EEROM数据块地址?_data=写入数据的存放区首址*/ 1017.charidatastatus=MI_OK; 1018.
1019.ResetInfo(MInfo);
1020.SerBuffer[0]=PICC_WRITE; 1021.SerBuffer[1]=addr; 1022.MInfo.nBytesToSend=2;
1023./*上面为写卡命令的入口参数?写指令?块地址?发送字节数*/ 1024.status=M500PcdCmd(PCD_TRANSCEIVE,SerBuffer,&MInfo); 1025.
1026.if(status!=MI_NOTAGERR)/*如果不是出现无卡情况*/ 1027.{
1028.if(MInfo.nBitsReceived!=4)/*如果返回比特数不是4*/ 1029.{
1030.status=MI_BITCOUNTERR;/*则置比特计数错标志*/ 1031.}
1032.else/*如果返回比特数是4*/ 1033.{
1034.SerBuffer[0]&=0x0f;
1035.if((SerBuffer[0]&0x0a)==0) 1036.{
1037.status=MI_NOTAUTHERR;/*没有通过授权?有些块是禁止读写的?*/ 1038.} 1039.else 1040.{
1041.if(SerBuffer[0]==0x0a)/*如果返回数据第一个字节最后四位是A*/ 1042.{
1043.status=MI_OK;/*则写入命令执行成功*/ 1044.}
1045.else 1046.{
1047.status=MI_CODEERR;/*否则是数据校验出错*/ 1048.} 1049.} 1050.} 1051.} 1052.
1053.if(status==MI_OK)/*如果写入命令执行成功*/ 1054.{
1055.M500PcdSetTmo(3); 1056.
1057.ResetInfo(MInfo);
1058.memcpy(SerBuffer,_data,16); 1059.MInfo.nBytesToSend=16;
1060./*上面为写卡命令的入口参数?要写入的数据16字节*/
1061.status=M500PcdCmd(PCD_TRANSCEIVE,SerBuffer,&MInfo);/*开始写入*/ 1062./*要写卡?必须先送命令?再送数据*/
1063.if(status&0x80)/*如果返回状态最高位为1*/ 1064.{
1065.status=MI_NOTAGERR;/*则是无卡在此场*/ 1066.}
1067.else/*如果返回状态最高位为0*/ 1068.{
1069.if(MInfo.nBitsReceived!=4)/*如果返回比特数不是4*/ 1070.{
1071.status=MI_BITCOUNTERR;/*则置比特计数错标志*/ 1072.}
1073.else/*如果返回比特数是4*/ 1074.{
1075.SerBuffer[0]&=0x0f;
1076.if((SerBuffer[0]&0x0a)==0)/*如果返回数据第一个字节最后四位是0*/ 1077.{
1078.status=MI_WRITEERR;/*写卡失败标志*/ 1079.}
1080.else/*如果返回数据第一个字节最后四位不是0*/ 1081.{
1082.if(SerBuffer[0]==0x0a)/*如果返回数据第一个字节最后四位是A?为什么?*/ 1083.{
1084.status=MI_OK;/*则写卡成功*/ 1085.} 1086.else 1087.{
1088.status=MI_CODEERR;/*否则是数据校验出错*/ 1089.} 1090.} 1091.} 1092.}
1093.M500PcdSetTmo(1);/*延时?方式1?*/ 1094.}
1095.returnstatus;/*返回状态值*/ 1096.} 1097.
1098.///////////////////////////////////////////////////////////////////////
1099.//ResetRfCard
1100./*重新配置RF读卡器*/
1101.///////////////////////////////////////////////////////////////////////
1102.charM500PcdRfReset(unsignedcharms) 1103.{
1104.charidatastatus=MI_OK; 1105.
1106.if(ms)/*如果有重启信号1*/ 1107.{
1108.ClearBitMask(RegTxControl,0x03);/*全部清零?不再有输出*/ 1109.delay_1ms(2);
1110.SetBitMask(RegTxControl,0x03);/*让TX1/TX2脚都能输出*/ 1111.}
1112.else/*如果没有重启信号0*/ 1113.{
1114.ClearBitMask(RegTxControl,0x03);/*关闭输出*/ 1115.}
1116.returnstatus;/*返回状态值*/ 1117.} 1118.
1119.#pragmanoaregs 1120.
1121./*延时子程序集*/ 1122.
1123.///////////////////////////////////////////////////////////////////////
1124.//Delay50us
1125.///////////////////////////////////////////////////////////////////////
1126.voiddelay_50us(unsignedchar_50us) 1127.{
1128.while(_50us--) 1129.{
1130._nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
1131._nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
1132._nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
1133._nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
1134._nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
1135._nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
1136._nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
1137._nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); 1138.} 1139.} 1140.
1141.///////////////////////////////////////////////////////////////////////
1142.//Delay1ms
1143.///////////////////////////////////////////////////////////////////////
1144.voiddelay_1ms(unsignedchar_1ms) 1145.{
1146.#ifndefNO_TIMER2 1147.RCAP2LH=RCAP2_1ms; 1148.T2LH=RCAP2_1ms; 1149.
1150.TR2=TRUE;
1151.while(_1ms--) 1152.{
1153.while(!TF2); 1154.TF2=FALSE; 1155.}
1156.TR2=FALSE; 1157.#else
1158.while(_1ms--) 1159.{
1160.delay_50us(20); 1161.}
1162.#endif 1163.} 1164.
1165.///////////////////////////////////////////////////////////////////////
1166.//Delay10ms
1167.///////////////////////////////////////////////////////////////////////
1168.voiddelay_10ms(unsignedint_10ms) 1169.{
1170.#ifndefNO_TIMER2 1171.RCAP2LH=RCAP2_10ms; 1172.T2LH=RCAP2_10ms; 1173.
1174.TR2=TRUE;
1175.while(_10ms--) 1176.{
1177.while(!TF2); 1178.TF2=FALSE; 1179.}
1180.TR2=FALSE; 1181.#else
1182.while(_10ms--) 1183.{
1184.delay_50us(19); 1185.if(CmdValid) 1186.return;
1187.delay_50us(20); 1188.if(CmdValid) 1189.return;
1190.delay_50us(20); 1191.if(CmdValid) 1192.return;
1193.delay_50us(20); 1194.if(CmdValid) 1195.return;
1196.delay_50us(20); 1197.if(CmdValid) 1198.return;
1199.delay_50us(20); 1200.if(CmdValid) 1201.return;
1202.delay_50us(20); …… 此处隐藏:2840字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [基础教育]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英语重点短语




