
智能卡网吧收费机设计3.pdf
43页SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard智能卡网吧收费机设计(三)智能卡网吧收费机设计(三) ————————接触式逻辑加密卡读写软件设计接触式逻辑加密卡读写软件设计电子与信息工程学院电子与信息工程学院电子与信息工程学院电子与信息工程学院SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard教学目标� SLE4442卡读主存储器 � SLE4442卡更新主存储器 � SLE4442卡密码校验SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard产品开发——智能卡网吧收费机�开发任务:设计智能卡网吧收费机 �卡型:SLE4442 �智能卡网吧收费机功能分析1、判断卡的合法性2、上网计时收费SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard产品开发之第三步:软件实现产品开发之第三步:软件实现�智能卡网吧收费机工作流程1、判断卡的合法性:判断是否SLE4442卡、是否 本网吧发行的卡、密码是否正确、卡中余额是否 充足——复位与复位响应、读卡、校验密码2、计时收费:写卡扣款并发送允许上网代码,接收 PC机计时时间到发出的控制信号,收到启动信号 则重新判断卡合法性并扣款,收到停止信号则下 电并提示允许拔卡——写卡SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard网吧收费机主程序流程图网吧收费机主程序流程图插卡上电是否4442卡?是否本网吧发行?是否合法卡?插卡上电更新余额余额足否?发送上网允许代码接收PC机控制信号启动?N发送错误代码1 卡类型错误发送错误代码2 伪卡错误发送错误代码3 密码错误发送错误代码4 余额不足NNNYYYNY下电 提示允许拔卡SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCardIO BIT P1.0CLK BIT P1.1RST BIT P1.2ICSW BIT P1.6PWR BIT P1.7PSC1 EQU 0FFHPSC2 EQU 0FFHPSC3 EQU 0FFHCOM EQU 20HADDR EQU 21HDAT EQU 22HNUM EQU 2FH;*************主程序**************ORG 0030HMAIN:CLR EA;关中断MOV SP,#60H;设置堆栈网网 吧吧 卡卡 功功 能能 测测 试试 主主 程程 序序SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCardLCALL PWRON;上电控制LCALL RESET;复位MOV R0,#30H;设置读数据缓冲区1首地址LCALL READ;读主存储器NOP;断点①LCALL VERIFY;PSC校验XRL A,#07h;断点②,检查PSC校验是否正确JNZ EXIT;PSC校验失败退出MOV R0,#50H;设置写数据缓冲区首地址LCALL WRITE;修改主存储器MOV R0,#40H;设置读数据缓冲区2首地址LCALL READ;再次读主存储器EXIT: NOP;断点③LCALL PWROFF;下电控制SJMP $SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard如何实现卡读写控制?如何实现卡读写控制?�接触式逻辑加密卡SLE4442与读写器如何 交换数据? �如何启动SLE4442卡工作? �信息如何从卡中读出? �如何校验密码? �信息如何写入卡中?SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard软件设计方法 ——按SLE4442操作时序编制卡读写程序� 通信协议:2线连接协议,满足ISO7816同步传送协议 � 数据传输:CLK信号下降沿有效。
� 复位和复位响应(Reset and Answer-to-Reset):上电后启动芯片,符合7816——RESET子程序实现 � 命令(Command) 命令=开始+(控制字+地址字+数据字)+附加脉冲+停止 ——COMMAND子程序实现 � 操作模式(Mode): �读 数 据 : 输 出 数 据 模 式 ( OUTGOING DATA MODE)——SHIN子程序实现 �写 入 、 擦 除 、 校 验 : 处 理 模 式 ( PROCESSING MODE) ——PROCESS子程序实现SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCardSmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard分任务分任务1 1 1 1:读主存储器:读主存储器 Read Main MemoryRead Main MemoryRead Main MemoryRead Main Memory �命令格式:30H +字节地址+ ** �模式:OUTGOING �功能:读出从给定的字节地址(N)开始,直到 整个存储器末尾的主存储器内容。
�说明:在该命令输入以后,接口设备IFD必须提供 足够的时钟脉冲,起始地址为N时所需要的时钟 脉冲数为M=(256-N)* 8+1 (N=0~255) 例如:地址为7EH(N=254),M=17SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCardSmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard读 主 存 储 器设 置 读 主 存 储 器 控 制 字 、 地 址 字 、 数 据 字送 读 主 存 储 器 命 令设 置 要 读 的 字 节 数读 入 数 据 ( 输 出 数 据 模 式 )读 完 所 需 字 节 ?计 算 剩 余 脉 冲 数读 入 剩 余 字 节 ( 输 出 数 据 模 式 )送 数 据 入 读 缓 冲 区 1读 缓 冲 区 1 地 址 + 1读 完 剩 余 字 节 ?送 附 加 脉 冲置 位 数 据 线返回YYNNSmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard;**********读主存储器子程序**************READ:MOV COM,#30H;设置读主存储器控制字MOV ADDR,#R_ADDR;取读主存储器首地址MOV DAT,#00H;设置读主存储器数据字(任意)MOV R4,NUM;数据个数LCALL COMMAND;送命令给卡READ0:LCALL SHIN;读数据(输出数据模式)MOV @R0,A;送数据入数据缓冲区INC R0DJNZ R4,READ0;未读完继续如何完成命令如何完成命令 的发送呢?的发送呢?SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCardSETB CLK;发送一个附加脉冲LCALL DELAYCLR CLKLCALL DELAYSETB IO;置位数据线LCALL DELAYRETSmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard命令(Command)�复位响应以后,芯片等待着命令。
�命令=开始+(控制字+地址字+数据字)+附加脉 冲+停止 �开始:在CLK为高状态(H)期间,I/O的下降沿为开始状态�停止:在CLK为高状态(H)期间,I/O的上升沿为停止状态SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard字节1 控制字 字节2 地址字 字节3 数据字 操作 模式 B7~B0 A7~A0 D7~D0 00110000 地址 无效 读主存储器 输出数据模式 00111000 地址 输入数据 修改主存储器 处理数据模式 00110100 地址 无效 读保护存储器 输出数据模式 00111100 地址 输入数据 写保护存储器 处理数据模式 00110001 地址 无效 读加密存储器 输出数据模式 00111001 地址 输入数据 修改加密存储器 处理数据模式 00110011 地址 输入数据 比较校验数据 处理数据模式 SLE4442操作命令SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard;************命令子程序*************** ;该子程序送出三字节的SLE4442命令 ;入口参数:COM为控制字,ADDR为地址字,DAT为数据字 COMMAND:SETB CLKLCALL DELAY_12CLR IO ;开始LCALL DELAYCLR CLKLCALL DELAYMOV A,COM;送命令字LCALL SHOUTMOV A,ADDR;送地址字LCALL SHOUTMOV A,DAT;送数据LCALL SHOUTLCALL DELAYCLR IOLCALL DELAYSETB CLK;附加脉冲LCALL DELAYSETB IO;停止RET怎样向卡中写入怎样向卡中写入 一个字节?一个字节?SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard; sle4442 串行输入一个字节函数, 即MCU向卡写入一字节 SHOUT:PUSH BMOV B,#08H X42: RRC AMOV IO,CNOPSETB CLKLCALL DELAYCLR CLKLCALL DELAYDJNZ B,X42POP BRETSmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard操作模式 (Mode)�接收了一个命令之后,卡芯片处于两种可能的模式:(1)读数据:输出数据输出数据模式;(2)写入、擦除、校验密码:处理处理模式。
SmartCardSmartCard ZZIA-0506073 ZZIA-0506073 SmartCardSmartCard输出数据(OUTGOING)模式� 将IC卡芯片中的数据传送给读写器� 在第一个CLK脉冲的下降沿之后,I/O线上的第一位数据变 为有效随后每增加一个时序脉冲,芯片内部的一位数据被送到I/O线上,低位(LSB)在前当所需要的最后一个 数据送出之后,需要再附加一个时钟脉冲来把I/O线置成高阻。












