收藏 分享(赏)

应电智能卡技术7读卡器编程.ppt

上传人:hwpkd79526 文档编号:8269548 上传时间:2019-06-17 格式:PPT 页数:21 大小:172KB
下载 相关 举报
应电智能卡技术7读卡器编程.ppt_第1页
第1页 / 共21页
应电智能卡技术7读卡器编程.ppt_第2页
第2页 / 共21页
应电智能卡技术7读卡器编程.ppt_第3页
第3页 / 共21页
应电智能卡技术7读卡器编程.ppt_第4页
第4页 / 共21页
应电智能卡技术7读卡器编程.ppt_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、第三章 3.3 任务三 M1卡数据读写程序的编写,编程练习一,记录自己的卡号 用Keil 51创建工程文件 test.prj包括: test.c、REG516.H、M500A.h、rc500.lib 单片机芯片型号: STC89C516RD+ 编译、链接 将生成的.HEX 写入读卡器 用M1卡测试,读写器与M1卡交换数据的过程: 1)由读写器MCU(微控制器)发送指令给MCM(读写器模块) 2)MCM执行指令并将其转换为射频信号发送给卡; 3)卡接收到来自MCM的指令后,按指令完成其内部的各种处理,并回送应答信号/数据给MCM; 4)MCM接收卡回送的射频信号并将其转换为数字信号输出给MCU,

2、读写器MCU读取MCM接收到的应答/数据,即可完成与M1卡的数据交换。,M C M 基 本 通 信 指 令 集 p97,MCM 内 核 特 殊 寄 存 器,MIFARE卡的读写操作步骤,激活MCM MCM软复位 向MCM下载密码(LOAD KEY),校验传输密码正确后可向MCM的KEY-RAM写入用户自己设定的密码,以上操作与卡无关。M500PcdConfig() 请求应答(ANSWER TO REQUEST):寻卡 防冲突(ANTICOLLISION):选择唯一一张卡 选择标记(SELECT):激活所选择的卡 认证 (AUTHENTICATION):安全性 读写操作(读、写、加值、减值):交

3、换数据 (READ/WRITE/INCREAMENT/DECREMENT) 停止(HALT):置卡为停止模式,防止重复操作。,LOAD KEY,REQUEST,ANTICOLLISION,READ/WRITE/INC/DEC,HALT,MIFARE 卡操作步骤,AUTHENTICATION,SELECT,卡应答:TAGTYPE(2B),卡应答:SN(4B)+校验码(1B),卡应答:SIZE(1B),卡应答:AE位,while(1) if(M500PiccRequest(PICC_REQALL,card_type)!=0) continue; / 寻卡if(M500PiccAnticoll(0,

4、card_sn)!=0) continue; / 防碰撞if(M500PiccSelect(card_sn,card_type)!=0) continue;/ 选卡if(M500PiccAuth(PICC_AUTHENT1A, card_sn, 0,13)!=0) continue; /密钥认证if(M500PiccRead(13,data_buf)!=0) continue;if(M500PiccWrite(13,temp)!=0) continue;if(M500PiccRead(13,data_buf)!=0) continue;Beep(200);,void sio_init() TM

5、OD=0x20; /设定定时器1的工作方式为方式2TH1=0xfd; /设置串行口波特率为9600TL1=0xfd;SCON=0x50; /设置串行口的工作方式为方式1,允许接收PCON=0x00;TR1=1; ET1=0;TI=0; RI=0; ES=0; void tran_chr(BYTE chr) TI=0; SBUF=chr; while(!TI); void sio_str(char * str,BYTE len) BYTE i;for(i=0;ilen;i+) tran_chr(stri); ,库函数 RC300.LIB,为保护开发成果,仅向客户提供目标代码 而不提供源代码;或只

6、提供部分源程序,而将关键部分以库函数的方式提供。 C51标准库函数 .lib 用户库函数 头文件中对库函数内函数的名称、功能、调用值、返回值等进行说明。,接口函数介绍,char M500PcdConfig(void)/* 函 数 名:M500PcdConfig功 能:配置RC500说 明:入口参数:无返 回 值:成功时为0 */,char M500PiccRead( unsigned char addr, unsigned char *_data) 功 能:读值说 明:从指定的的块号读出数据。入口参数:addr : 块号063*_data : 读出的数据返 回 值:成功时为0,char M50

7、0PiccRequest(unsigned char req_code, unsigned char *atq);功 能:寻卡说 明:Request 指令将通知MCM在天线有效的工作范围(距离)内寻找MIFARE 1卡片。如果有MIFARE 1卡片存在,这一指令将分别与MIFARE 1进行通信,读取MIFARE 1卡片上的卡片 类型号TAGTYPE(2个字节),由MCM传递给 MCU,进行识别处理。 程序员可以根据TAGTYPE来区别卡片的不同类型。 入口参数:req_code : 寻卡方式 PICC_REQALL,PICC_REQSTD返 回 值:成功时为0,char M500PiccAnt

8、icoll (unsigned char bcnt, unsigned char *snr)功 能:防碰撞说 明:如果有多于一张的Mifare 1卡片在MCM之天线的有效的工作范围(距离)内 ,必须使用AntiCollision指令,使MCM能够在这一叠 Mifare 1卡片中选择个别的一张卡片。入口参数:bcnt : 默认为0,已知位*snr : 卡序列号返 回 值:成功时为0,char M500PiccSelect(unsigned char *snr, unsigned char *sak) 功 能:选卡说 明:在一个成功的AntiCollision指令之后,或在任何时候当程序员想实际地

9、与已知序列号卡片进行通信时,必须使用Select指令,以建立与所选卡的通信。为了允许在Select指令以后对卡片能进行Read/Write等指令的操作,Select指令是很重要的,必须首先被使用。被选择的卡片将给出其自己的存储器容量-已编码的一个BYTE(字节) 如果有多于一张的Mifare 1卡片在MCM之天线的有效的工作范围(距离)内 ,必须使用AntiCollision指令,使MCM能够在这一叠 Mifare 1卡片 中选择个别的一张卡片。入口参数:snr : 卡序列号,4Bsak : 返回参数的存储容量,1B返 回 值:成功时为0,char M500PiccAuth( unsigned

10、 char keyAB, unsigned char *snr, unsigned char key_addr, unsigned char block)功 能:密钥认证说 明:希望能读取Mifare 1 卡片上的数据之前,程序员必须证明他的读/写请求操作是被允许的。入口参数:keyAB : KEYA or KEYBsnr : 卡序列号key_addr:密码数组序号block:绝对块号返 回 值:成功时为0,char M500PiccWrite( unsigned char addr, unsigned char *_data) 功 能:写值说 明:讲数据写入指定的块号。入口参数:addr :

11、 块号063*_data : 要写入的数据返 回 值:成功时为0,char M500PiccHalt(void)功 能:终止说 明:终止操作。入口参数:返 回 值:成功时为0,char M500PiccValue(unsigned char dd_mode, unsigned char addr, unsigned char *value,unsigned char trans_addr);功 能:块值操作说 明:从指定的块进行增值或减值操作(电子钱包)。入口参数:dd_mode : 操作方式 PICC_DECREMENT(减值) PICC_INCREMENT(增值)addr : 块号*value : 操作的块值trans_addr: 卡块地址返 回 值:成功时为0,如何把卡序列号、锁死扇区号等信息显示出来?,实训 非接触式IC卡的读写控制,编写程序:实现M1卡基本功能的测试,以判断某一M1卡是否有扇区被锁死。 一般测试方法:分别对M1卡015扇区的块12写入数据16*0xFF,然后读取写入的数据。如读写都顺利通过,则认定该M1卡基本正常;否则,认定该卡有扇区被锁死。 建议采用安全的测试方法:分别对M1卡015扇区的块1或2进行读操作。如读取成功,则认定该M1卡基本正常;否则,认定该卡有扇区被锁死。 两人一组,下课前交作业,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报