




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章接触式IC卡技术2.1实训1:接触式存储器卡与逻辑加密卡的存储结构2.2接触式IC卡的基本物理特性2.3接触式IC卡的芯片技术2.4典型存储器卡2.5实训2:接触式存储器卡的操作控制2.6典型逻辑加密卡2.7实训3:接触式逻辑加密卡的操作控制2.8接触式IC卡接口技术思考题第2章接触式IC卡技术2.1实训1:接触式存储器卡与12.1实训1:接触式存储器卡与逻辑加密卡的存储结构1.实训目的(1)建立对接触式IC卡的感性认识。(2)理解和掌握接触式存储器卡的访问方式和典型存储结构。(3)理解和掌握接触式逻辑加密卡的访问方式和典型存储结构。2.1实训1:接触式存储器卡与逻辑加密卡的存储结构1.实2
2.实训设备与器件(1)实训设备:通用接触式IC卡读写器,586电脑,通用接触式IC卡读写器DEMO软件(使用方法参见厂商提供的使用手册)。(2)实训器件:AT24C01卡、SLE4442卡、AT88SC1604卡(白卡,实验室准备),IC卡电话卡(已发行,自备)。2.实训设备与器件3
3.实训步骤与要求1)通用接触式IC卡读写器及DEMO软件的安装(1)按系统提示安装通用接触式IC卡读写器DEMO软件。(2)按标志连接通用接触式IC卡读写器的电源线及串口线,注意电源+5V与地不可接反。2)使用DEMO软件访问AT24C01卡(1)按使用手册的说明操作演示软件,对通用接触式IC卡读写器进行建立连接操作。(2)将AT24C01卡插入读写器卡座,选择卡型(自动识别卡型或选择AT24C01卡),进入卡操作界面。(3)对AT24C01卡进行读/写/擦除操作,记录操作结果及操作条件。3.实训步骤与要求43)使用DEMO软件访问自备的IC卡电话卡(1)将IC卡电话卡插入读写器卡座,选择自动识别卡型,记录卡型。(2)进入卡操作界面对电话卡进行读/写/擦除操作,在表2.1中记录操作结果及操作条件。表2.1电话卡存储结构记录表3)使用DEMO软件访问自备的IC卡电话卡54)使用DEMO软件访问SLE4442卡(1)将SLE4442卡插入读写器卡座,选择卡型,进入卡操作界面。(2)对SLE4442卡进行读/写/擦除操作,在表2.2中记录操作结果及操作条件。表2.2SLE4442卡存储结构记录表4)使用DEMO软件访问SLE4442卡表65)使用DEMO软件访问AT88SC1604卡(1)将AT88SC1604卡插入读写器卡座,选择卡型,进入卡操作界面。(2)对AT88SC1604卡进行读/写/擦除操作,在表2.3中记录操作结果及操作条件。表2.3AT88SC1604卡存储结构记录表5)使用DEMO软件访问AT88SC1607
4.实训总结与分析(1)AT24C01卡的操作界面如图2.1所示。可以看到,AT24C01的存储容量为1Kb(128B),存储结构为128×8b。可以按字节操作,所有字节的读/写/擦除均可任意进行。这种卡被称为存储器卡。存储器卡的详细内容参见2.3节。4.实训总结与分析8(2)IC电话卡的操作界面如图2.2所示。DEMO软件自动识别该卡为SLE4406卡。可以看到,这种卡的存储容量为104b(13B),其中仅后5个字节为用户区,可按位操作。用户区可任意读、任意写(由1变为0称为写),但只能按字节借位擦除(由0变为1称为擦除)。当用户区全为0时,卡将作废。SLE4406卡是一种按位操作的逻辑加密卡,它以一次性的计数方式操作,因此这种卡也称为计数卡(TokenMemoryCard),其详细介绍参见2.6.1节。(2)IC电话卡的操作界面如图2.2所示9图2.1AT24C01卡的操作界面图2.1AT24C01卡的操作界面10图2.2IC电话卡的操作界面图2.2IC电话卡的操作界面11(3)SLE4442卡的操作界面如图2.3所示。图2.3SLE4442卡的操作界面(3)SLE4442卡的操作界面如图2.3所示。图2.312通过操作我们发现,SLE4442卡具有2Kb(256B)的存储容量,它采用多存储器结构,包括三个存储器:256×8b的EEPROM型主存储器,32×1b的PROM型保护存储器和4×8b的EEPROM型加密存储器。主存储器可重复擦除使用,按字节操作,并分为保护数据区和应用数据区,读出均不受限制,但保护数据区的擦除和写入受保护存储器熔丝状态的保护,而应用数据区的擦除和写入则受加密存储器中的密码及密码计数器保护。SLE4442卡是一种按字节操作的多存储器逻辑加密卡。通过操作我们发现,SLE4442卡具有2K13(4)AT88SC1604卡的操作界面如图2.4所示。通过操作我们发现,AT88SC1604卡的存储容量为16384b(2048B)。它采用单存储器多逻辑分区结构,主存储器除划分了特定的标志数据区和控制数据区之外,还将应用数据区分成四个完全隔离的子区,并在每个子区中配备了各自的读、写控制标志和写入/擦除密码以及密码输入错误计数器等逻辑控制。AT88SC1604卡是一种按字节操作的大容量逻辑加密卡。(4)AT88SC1604卡的操作界面如14
5.思考(1)若要构成一个接触式IC卡门禁系统,应采用哪一种卡,为什么?与传统的锁加钥匙的方式相比较,由接触式IC卡及其读写器构成的接触式IC卡门禁系统有何优胜之处?(2)分别说明AT24C01A、SLE4442和AT88SC1604的安全性是由哪些环节保证的?5.思考15图2.4AT88SC1604卡的操作界面图2.4AT88SC1604卡的操作界面162.2接触式IC卡的基本物理特性所谓接触式IC卡,就是在使用时,通过有形的金属电极触点将卡的集成电路与外部接口设备直接接触连接,提供集成电路工作的电源并进行数据交换的IC卡。其特点是在卡的表面有符合ISO/IEC7816标准的多个金属触点。2.2接触式IC卡的基本物理特性所谓接172.2.1接触式IC卡的基本构成图2.5接触式IC卡外形图2.2.1接触式IC卡的基本构成图2.5接触式IC卡18图2.6接触式IC卡内部结构剖视图图2.6接触式IC卡内部结构剖视图19在图2.6中,其各组成部分说明如下:(1)半导体芯片:它是IC卡的核心部分。一般采用0.38~0.8μm的HCMOS或NMOS工艺制造的超大规模集成电路。在半导体芯片中包括存储器、译码电路、接口驱动电路、逻辑加密控制电路,甚至微处理器单元(CPU)等各种功能电路。其外形大小约为2mm×1mm×0.3mm。在图2.6中,其各组成部分说明如下:20(2)电极膜片:它是作为半导体芯片各输入/输出信号引脚与外部设备接触连接的导电体,它实际是一种精密的印刷电路板(PCB)。其基底为一层绝缘材料,(一般为环氧树脂玻璃或聚酰亚胺薄膜)。在基底的绝缘材料上沉积一层铜合金,并在其外端表面镀金,以提高其导电性能和防氧化能力。电极膜片的外形大小约为:长9.62~13.65mm,宽9.32~11.56mm。电极膜片的外形一般为矩形或椭圆形。这种形状上的差异主要是为了改善卡片的抗扭曲方面的机械特性。电极膜片上共有多个芯片电极,每个电极的中心位置和最小面积是有规定的。但各电极表面分隔形状没有规定。(2)电极膜片:它是作为半导体芯片各输入/输21图2.7接触式IC卡模块图2.7接触式IC卡模块22(3)塑料基片:它是半导体芯片和电极膜片的载体。根据各生产厂家制卡工艺设备的要求,一般采用PVC(聚氯乙烯)、PET和ABS塑料材料。目前在国内所使用或封装生产的IC卡,基片材料大都使用PVC材料。但随着制卡技术不断发展和对工业环保的要求,PVC材料的使用将会逐渐受到一定的限制。因而目前国外的一些制卡厂商已逐渐将IC卡的基片材料转向改用PET或ABS材料。塑料基片的大小,对于满足国际标准——识别卡的ID-1型的尺寸是85.6mm(长)×53.98mm(宽)×0.75mm(厚)。应该说明,由半导体芯片和电极膜片封装而成的IC卡模块(WireBodedModule,如图2.7所示)就可以实现IC卡的基本功能。(3)塑料基片:它是半导体芯片和电极膜片的载232.2.2接触式IC卡的触点尺寸和位置符合国际标准的IC卡的物理特性主要由国际标准ISO7810、ISO7811-1/2/3/4、ISO7812、ISO7813和ISO/IEC7816-1等定义。其主要特性指标包括几何尺寸、抗X射线能力、触点与卡基表面的误差、电阻(触点)、抗电磁干扰、抗磁场干扰、抗静电能力、热耗、抗弯曲特性以及抗扭曲特性等。上述物理特性及其检测方法参见相关国际标准。接触式IC卡有8个触点,即集成电路引脚,从C1到C8,如图2.8所示。国际标准ISO/IEC7816-2对接触式集成电路卡的触点尺寸和芯片位置以及功能作了具体的规定。2.2.2接触式IC卡的触点尺寸和位置24图2.8接触式IC卡的触点位置图2.8接触式IC卡的触点位置25IC卡的电极膜片(即8个触点)既可安排在塑料基片的正面,也可安排在反面。触点之间的排列顺序必须按图2.8所示排列。各触点在卡基平面的几何尺寸、位置均以卡触点的接触面的左边沿和上边沿为基准边。其触点的尺寸及位置如图2.8所示。在ISO/IEC7816-2中对每个触点的几何形状和最大面积虽然没有规定,但却规定了每个触点表面积的内切矩形面积不得小于2mm×1.7mm。各触点之间应相互隔离。而相邻两个触点之间的最大距离为0.84mm。8个触点所占最大面积没有规定,但规定最小面积不小于9.62mm(长)×9.32mm(宽)的矩形平面。IC卡的电极膜片(即8个触点)既可安排在塑26表2.4接触式IC卡的触点功能表2.4接触式IC卡的触点功能272.3接触式IC卡的芯片技术2.3.1存储器卡1.存储器卡的逻辑结构图2.9存储器卡的逻辑结构图2.3接触式IC卡的芯片技术2.3.1存储器卡图2.28
2.存储器卡的特点(1)卡内嵌入的芯片多为通用EEPROM(或FlashMemory)。(2)无安全控制逻辑,可对片内信息不受限制地任意存取。(3)卡片制造中也很少采取安全保护措施。(4)不完全符合或支持ISO/IEC7816国际协议,而多采用2线串行通信协议(I2C总线协议)或3线串行通信协议(SPI协议)。2.存储器卡的特点29
3.存储器卡的主要应用场合存储器卡功能简单,没有(或很少有)安全保护逻辑,但价格低廉、开发使用简便、存储容量增长迅猛,因此多用于某些简单的、内部信息无需保密或不允许加密(如急救卡)的场合。
4.存储器卡的代表产品存储器卡的代表产品为美国Atmel公司的EEPROM卡AT24系列2线串行芯片和AT93系列3线串行系列,FlashMemory卡AT45D系列(2~8Mb,SPI协议)。3.存储器卡的主要应用场合30表2.5EEPROM存储器卡芯片表2.5EEPROM存储器卡芯片312.3.2逻辑加密卡1.逻辑加密卡的逻辑结构图2.10逻辑加密卡的逻辑结构图2.3.2逻辑加密卡图2.10逻辑加密卡的逻辑结构图32
2.逻辑加密卡的特点(1)具有安全控制逻辑,安全性能较好。(2)同时采用ROM、PROM、EEPROM等存储技术。(3)从芯片制造到交货,均采取较好的安全保护措施,如运输密码TC(TransportCode)的取用。(4)支持ISO/IEC7816国际标准。(5)一般均为专门为IC卡设计的芯片。(6)为提高安全性,逻辑加密卡的存储空间被分为多个不同的功能区,典型的存储结构如表2.6所示。2.逻辑加密卡的特点33表2.6逻辑加密卡的存储结构表2.6逻辑加密卡的存储结构34
3.逻辑加密卡的应用场合与代表产品由于具有一定的保密功能,且价格较CPU卡低,因此在需要保密但对安全性要求不是太高的场合,逻辑加密卡得以大量应用,如电话卡、网吧上网卡、停车卡等小额消费场合,已成为目前IC卡在非金融领域的最主要的应用形式。(1)安全数据存储、传输和处理:面向字节操作的逻辑加密卡,如Atmel的AT88SC200、Philips的PC2032/2042、Siemens的SLE4418/4428/4432/4442等,应用于保险卡、加油卡、驾驶卡、借书卡等。3.逻辑加密卡的应用场合与代表产品35(2)相关数据记录、存储、处理,包括:①一次性使用的不可重置式,如Siemens的SLE4406/4436、Atmel的AT88SC06、Gemplus的GPM276/103。②可重置式,如Siemens的SLE4404(64次)、Atmel的AT88SC101/102(128次),应用于IC卡电话、小额电子钱包。(2)相关数据记录、存储、处理,包括:36表2.7Siemens系列逻辑加密卡芯片的特性参数表2.7Siemens系列逻辑加密卡芯片的特性参数372.3.3CPU卡1.CPU卡的逻辑结构CPU卡的硬件构成包括CPU、存储器(含RAM、ROM、EEPROM等)、卡与读写终端通信的I/O接口及加密运算协处理器CAU,其中:(1)CPU一般均为兼容于8位字长单片机(如MC68HC05、Intel8051等)的微处理器。它将在COS(ChipOperationSystem,片内操作系统)控制下,实现卡与外界的信息传输、加密、解密和判别处理等。(2)ROM用于存放COS,3~16KB。(3)RAM用于存放中间处理结果及作为卡与读写器间信息交换的中间缓存器,128B~1KB。2.3.3CPU卡38(4)EEPROM则是真正可供用户访问的存储区,用于保存卡的各种信息、密码、密钥、应用文件等,1~16KB。(5)CPU卡通常采用DES、RSA等加密、解密算法提高系统的安全度,采用RSA等算法时要进行对运算速度要求较高的大指数模运算,8位的CPU将难以胜任,因此多设有专用加密、解密运算协处理器CAU。例如Siemens的SLE44C20,内含8位字长的CPU、15KB的ROM、32B的PROM、2KB的EEPROM和256B的RAM。(4)EEPROM则是真正可供用户访问的存39
2.CPU卡的特点(1)片内带有CPU、各种存储器ROM、RAM以及专用加密、解密运算协处理器CAU,具有很高的数据处理和计算能力以及较大存储容量,因此应用的灵活性、适应性较强。(2)在硬件结构、操作系统、制作工艺上采取多层次安全措施,保证了其极强的安全防伪能力。它不仅可验证卡和持卡人的合性法,而且可鉴别读写终端,即进行双向认证。2.CPU卡的特点40
3.CPU卡的主要应用场合与典型产品目前CPU卡多用于一卡多用(一卡通)及对数据安全保密性特别敏感的场合,如金融信用卡、手机SIM卡等。CPU卡的详细内容参见第4章。本章将以存储器卡和逻辑加密卡为基础介绍接触式IC卡的芯片及接口技术。3.CPU卡的主要应用场合与典型产品412.4典型存储器卡2.4.1AT24Cxx系列存储器卡芯片总体描述1.芯片特点(1)低电压/标准电压操作:1.8~5V。(2)内部组成:128×8(AT24C01),256×8(AT24C02),512×8(AT24C04),1024×8(AT24C08),2048×8(AT24C16)的串行EEPROM。(3)2线串行接口。(4)双向数据传输协议。2.4典型存储器卡2.4.1AT24Cxx系列存储器42(5)支持ISO/IEC7816-10同步协议。(6)8B页面(AT24C01/02),16B页面(AT24C04/08/16)写入方式。(7)自定时写入周期(最大10ms)。(8)高可靠性:使用寿命为100000次写/擦除,数据保留期为100年。(9)多种封装形式:提供芯片、模块及标准封装形式。(5)支持ISO/IEC7816-10同步432.芯片封装及引脚功能1)封装图2.11AT24Cxx触点分配图2.芯片封装及引脚功能图2.11AT24Cxx触点分配图44表2.9IC卡触点功能表表2.9IC卡触点功能表452)引脚功能说明SCL:串行时钟输入(SerialClockInput)。串行时钟上升沿时,数据输入芯片(写入);串行时钟下降沿时,数据从芯片输出(读出)。SDA:串行数据(SerialDAta),双向串行传送数据。该端为漏极开路驱动,可与任意数量的其他漏极开路或集电极开路器件“线或”。A2、A1、A0:器件/页面地址(DevicPageAddresses)。器件地址输入端,应用于标准封装中,在IC卡模块封装中不将A2、A1、A0引出到触点上,详细使用见“器件寻址”。2)引脚功能说明463.逻辑结构与存储器组织图2.12AT24Cxx的逻辑结构3.逻辑结构与存储器组织图2.12AT24Cxx的逻辑结472.4.2器件操作1.时钟和数据转换图2.13AT24Cxx数据的有效性时序图2.4.2器件操作图2.13AT24Cxx数据的有效481)输出数据当数据(包括地址、数据)由接口设备送往AT24Cxx时,称为输出数据(写数据)。数据总是按字节(8位)逐位串行输出,每个时钟脉冲输出一位。SDA总线上的数据应在SCL低电平期间改变(输出),在SCL高电平期间稳定。基于MCS-51单片机的接口设备可利用如下串行输出字节子程序SHOUT来实现输出(写)一个字节数据的操作。1)输出数据49SHOUT:;串行输出一个字节到AT24Cxx,高位在前。调用前,SCL、SDA为低。返回时,SCL为低。调用时数据置入A中。返回CY为1表明应答失败。占用A累加器 PUSH B MOV B,#8 ;设置位计数器L1: RLC A ;移一位到CY中 MOV SDA,C ;输出位 NOP ;保持SCL为低且使数据稳定 SETB SCL ;升高时钟 ACALL DELAY_4μs;保持SCL为高SHOUT:50 CLR SCL ;降低时钟 DJNZ B,L1 ;传送下一位 SETB SDA ;释放SDA等待应答 NOP ;保持SCL为低,保持时间tAA NOP SETB SCL ;升高ACK时钟脉冲 ACALL DELAY_4μs;保持SCL为高 MOV C,SDA ;读入ACK位 CLR SCL ;降低ACK时钟脉冲 POP B RET CLR SCL ;降低时钟512)输入数据当接口设备从AT24Cxx的数据线上读取数据时,称为输入数据(读数据)。数据总是按字节(8位)逐位串行输入,每个时钟脉冲输入一位。AT24Cxx的EEPROM在SCL低电平期间将数据送往SDA总线,在SCL高电平期间,SDA总线上的数据稳定,可供接口设备读取。基于MCS-51单片机的接口设备可利用如下串行输入字节子程序SHIN来实现输入(读)一个字节数据的操作。2)输入数据52SHIN:;从AT24Cxx串行输入一个字节,高位在前。调用前,SCL为低。返回时,SCL为低。返回时接收到的数据置于A中 SETB SDA ;使SDA为高,准备读 PUSH B MOV B,#8 ;设置位计数器L2: NOP ;保持SCL为低且使数据稳定 NOP SETB SCL ;升高时钟SHIN:53 NOP ;保持SCL为高 NOP MOV C, SDA ;输入位 RLC A ;将位移入A CLR SCL ;降低时钟 DJNZ B,L2 ;传送下一位 POP B RET NOP ;保持SCL为高54
2.开始状态(START)SCL处于高电平时,SDA从高电平转向低电平表示一个“开始”状态,该状态表示一种操作的开始,因此必须在任何其他命令之前执行。AT24Cxx开始/停止定义时序图见图2.14。图2.14AT24Cxx开始/停止定义时序图2.开始状态(START)图2.14AT255基于MCS-51单片机的接口设备可利用如下开始子程序START来实现一个开始操作。START:;发送START状态,定义当SCL为高时,SDA从高到低。返回时,SCL、SDA为低。当总线无效时,返回CY位为高 SETB SDA ;升高SDA SETB SCL ;校验总线有效 JNB SDA,ERROR1;若SDA不为高则跳转到ERROR1 JNB SCL,BACK1 ;若SDA不为高则跳转到BACK1 NOP ;保持数据建立延迟及周期延迟基于MCS-51单片机的接口设备可利用如下开56 CLR SDA ;降低SDA ACALL DELAY_4μs;保持SDA为低,保持时间holddelay CLR SCL ;降低SDL CLR C ;清零错误标志 AJMP BACK1ERROR1:SETB C ;置位错误标志BACK1: RET CLR SDA ;降低SDA57
3.停止状态(STOP)SCL处于高电平时,SDA由低电平转向高电平表示一个“停止”状态。该状态表示一种操作的结束并将终止所有通信。在一个读序列之后,停止命令置EEPROM于待机模式。其停止定义时序图见图2.14。基于MCS-51单片机的接口设备可利用如下停止子程序STOP来实现一个停止操作。3.停止状态(STOP)58STOP:;发送STOP状态,定义当SCL为高时,SDA从低变高。调用前,SCL为低。返回时,SCL、SDA为高 CLR SDA NOP ;保持SCL为低及数据稳定 NOP SETB SCL ACALL DELAY_4μs;保持建立延迟 SETB SDA RETSTOP:59
4.确认应答(ACK)所有地址和数据字以8位码串行输入/输出EEPROM,EEPROM在收到每个地址或数据码之后,置SDA于低电平作为确认应答,该确认应答发生于第9个时钟周期,见图2.15。图2.15AT24Cxx确认应答时序图4.确认应答(ACK)图2.15AT24C60在串行输出字节子程序SHOUT中我们可以清楚地看到,当接口设备向卡发送完8位数据后,程序将产生第9个时钟脉冲并将SDA线读入CY位,此时CY位的状态即为卡响应状态。当CY=1时表示卡尚未接收到数据,不能进行下一步的操作;当CY=0时表示卡已接收到数据,可以进行下一步的操作。在串行输出字节子程序SHOUT中我们可以清楚61
5.待机模式AT24Cxx的特性之一是具备待机模式,这一模式当①电源掉电;②接收到STOP位或完成任何一个内部处理之后有效。
6.存储器复位当电源掉电、系统复位或协议中断时,任何一个2线的部分都可通过以下步骤复位:(1)9个时钟周期之后;(2)在每个时钟周期当SCL为高时等待SDA为高;(3)产生一个START状态。5.待机模式622.4.3器件寻址以上AT24系列EEPROM在紧接着开始状态后均需一个8位器件地址(DeviceAddress),如图2.16所示,以使器件能够进行读/写操作。器件地址高4位为1010,这对所有器件都是相同的。在标准封装中,接下来的3位器件寻址码将因芯片容量的不同而有不同的定义:对于AT24C01/02来说,下面3位器件寻址码是A2、A1、A0,这3位必须与它们相应的硬件连线输入引脚相对应。2.4.3器件寻址63图2.16AT24Cxx器件地址图2.16AT24Cxx器件地址64对于AT24C04来说,仅用A2和A1器件寻址位,第3位是存储器页面寻址位。2个器件寻址位必须与硬件连线输入引脚相对应,A0引脚不连接。对于AT24C08来说,仅用A2器件寻址位,下面2位是存储器页面寻址。A2必须与硬件连线输入引脚相对应,A1和A0引脚不连接。对于AT24C16来说,无器件寻址位。这3位均用于存储器页面寻址,A0、A1、A2不连接。对于AT24C04来说,仅用A2和A1器件寻65AT24C04/08/16的页面寻址位应被视为随后数据码寻址的最高位。IC卡上使用的EEPROM芯片,因受尺寸限制,一般只能使用一个芯片,同时应符合国际标准,因此A2、A1、A0未引出到触点上,A2A1A0=000。器件寻址的第8位是读/写操作选择位,该位为高电平时启动读操作,处于低电平时启动写操作。设备寻址一经成功,EEPROM将在SDA总线上输出一个确认应答ACK;相反,则芯片回到待机状态。AT24C04/08/16的页面寻址位应被视662.4.4写操作1.写字节(BYTEWRITE)写字节时序见图2.17。写字节时序要求在给出“开始”状态、器件地址码和收到卡的确认应答ACK后,紧跟着给出一个8位地址码(32KB芯片是2个8位地址码)。卡收到地址码后发出确认应答ACK。然后送要写的8位数据到SDA线上,并进入EEPROM单元,每个时钟节拍送入1位。EEPROM单元收到数据后,通过SDA线发出确认应答ACK。数据传送设备必须用“停止”状态来结束写操作。这时EEPROM进入内部定时的写周期,如图2.18中的tWR,在写周期期间,将数据写入非易失性存储器,并禁止所有其他操作直到写完成。2.4.4写操作67图2.17AT24Cxx写字节时序图图2.17AT24Cxx写字节时序图68图2.18AT24Cxx写周期时序图图2.18AT24Cxx写周期时序图69基于MCS-51单片机的接口设备可利用如下写字节子程序WRITE_BYTE来实现写字节操作。WRITE_BYTE:;AT24Cxx写字节功能。调用前可编程的器件地址programmableaddress置于A中,字节地址置于寄存器ADDR_HI和ADDR_LO中,数据置于寄存器XDATA中。未等待写周期完成。返回CY为1表明总线无效或该器件无应答。占用A累加器 ACALL START JC BACK2 ;若总线无效则中断 RL A ;可编程地址左移一位 ORL A,#FADDR ;加入固定器件地址 CLR ACC.0 ;设置写,建立器件地址基于MCS-51单片机的接口设备可利用如下写70ACALL SHOUT ;发送器件地址JC ERROR2 ;若无应答则中断MOV A,ADDR_HI ;发送字节地址的高8位ACALL SHOUT JC ERROR2 ;若无应答则中断MOV A,ADDR_LO ;发送字节地址的低8位ACALL SHOUT JC ERROR2 ;若无应答则中断MOV A,ADATA ;取数据ACALL SHOUT ;发送数据JC ERROR2 ;若无应答则中断CLR C ;清零错误标志ERROR2:ACALL STOPBACK2:RETACALL SHOUT ;发送器件地址ERROR2:ACA71
2.写页面(PAGEWRITE)AT24C01/02可以进行8B页面写入,AT24C04/08/16可以进行16B页面写入。启动写页面与启动写字节操作一样,但数据传送设备无需在第一个字节随时钟输入后发出一个停止状态;在EEPROM确认收到第一个数据码之后,数据传送设备再传送7个(对于AT24C01/02)或15个(对于AT24C04/08/16)数据码;每收到一个数据,EEPROM都将通过SDA回送一个确认应答信号,最后数据传送设备通过“停止”状态终止写页面操作,其过程见图2.19。2.写页面(PAGEWRITE)72图2.19写页面时序图图2.19写页面时序图73数据地址的低3位(对于AT24C01/02)或4位(对于AT24C04/08/16)在收到每个数据字后,在芯片内部自动加1。数据字地址的高位字节保持不变,以保持存储器页地址不变。如果传送到EEPROM中的数据字超过8(对于AT24C01/02)或16(对于AT24C04/08/16),数据字地址将“滚动覆盖”,以前写入的数据将被覆盖。基于MCS-51单片机的接口设备可利用如下写块子程序WRITE_BLOCK来实现写页面操作。数据地址的低3位(对于AT24C01/02)74WRITE_BLOCK:;向AT24Cxx写入一页数据。调用时器件地址的可编程地址置于A中,第一个字节地址置于寄存器ADDR_HI和ADDR_LO中,数据置于BUFFER中,字节计数器置于寄存器COUNT中。未等待写周期完成。返回时CY位为1表明总线无效或器件无应答。占用A,COUNT,INDEX(注:INDEX为数据缓冲区指针,可使用工作寄存器R0)ACALL STARTJC BACK3 ;总线无效则中断RL A ORL A,#FADDR ;生成器件地址WRITE_BLOCK:75CLR ACC.0 ;定义写操作ACALL SHOUT ;发送器件地址JC ERROR3 ;无应答则中断MOV A,ADDR_HI ;发送字节地址高8位ACALL SHOUT JC ERROR3 ;无应答则中断MOV A,ADDR_LO ;发送字节地址低8位ACALL SHOUT JC ERROR3 ;无应答则中断MOV INDEX,#BUFFER ;指向数据缓冲区首地址CLR ACC.0 ;定义写操作76L3: MOV A,@INDEX ;取数据 ACALL SHOUT ;发送数据 JC ERROR3 ;无应答则中断 INC INDEX ;地址指针加1 DJNZ COUNT,L3 ;下一个字节 CLR C ;清零错误标志ERROR3:ACALL STOPBZCK3:RETL3: MOV A,@INDEX ;取数据77
3.确认查询(ACKNOWLEDGEPOLLING)一旦内定时写循环开始且禁止EEPROM输入,确认查询将被启动。当数据传送设备在送出一个“开始”状态以及紧随其后的器件地址码(读/写位代表所要进行的操作)时,只有在内定时写循环完成时,EEPROM才通过拉低SDA总线发出“确认”应答,允许读或写过程继续进行。AT24Cxx系列存储器芯片的内定时写周期(tWR)最大为10ms,因此,每完成一个写操作,应延时约10ms或查询SDA总线重新为低时才能发出下一个操作的开始命令,否则下一次操作命令将不被器件接收、执行。3.确认查询(ACKNOWLEDGEPOL782.4.5读操作1.现行地址读(CURRENTADDRESSREAD)内部数据字地址指针总是保持最后一次读/写操作中最后访问的地址,并按“1”递增。只要芯片保持上电,该地址在两次操作之间一直保持有效。如果最后一个操作是在地址n处读取,则现行地址是n+1;如果最后一个操作是在地址n处写入,则当前地址也是n+1。在出现“滚动覆盖”的情况时,读操作的地址是从最后一页的最后一个字节滚动覆盖到第一页的第一个字节,而写操作的地址是从当前页的最后一个字节滚动覆盖到同一页的第一个字节。2.4.5读操作79图2.20现行地址读时序图图2.20现行地址读时序图80一旦读/写选择位置于1,器件地址随时钟输入,并收到EEPROM的确认应答,现行地址的数据码随时钟被EEPROM串行输出。此时数据传送设备(微控制器)可在SDA线上随时钟串行读入数据。读取数据结束后,微控制器不是通过确认(低电平ACK)来应答,而是使总线处于高电平(NOACK),随后产生一个停止状态,见图2.20。基于MCS-51单片机的接口设备可利用如下现行地址读子程序READ_CURRENT来实现现行地址读操作。一旦读/写选择位置于1,器件地址随时钟输入,81READ_CURRENT:;AT24Cxx现行地址读功能。调用时,器件地址的可编程地址置于A中,返回数据置于A中。返回时,CY位为1表明总线无效或器件无应答ACALL STARTJC BACK4 ;若总线无效则中断RL A ORL A,#FADDR ;生成器件地址SETB ACC.0 ;设置读操作ACALL SHOUT ;发送器件地址JC ERROR4 ;若无应答则中断ACALL SHIN ;接收数据字节READ_CURRENT:82 ACALL NAK ;发送高电平NAK应答 CLR C ;清零错误标志ERROR4:ACALL STOPBACK4:RET注意:写操作中卡接收到数据(地址、数据)后向接口设备发送低电平应答ACK,程序通过将第9个时钟周期的SDA线读入CY位来接收应答,查询CY位是否为低来判断是否收到卡确认应答。而读操作中是接口设备接到数据后向卡发送高电平应答(NOACK),该高电平应答由NAK子程序来产生。 ACALL NAK ;发送高电平NAK应答83NAK子程序:NAK:;随时钟输出一个高电平的负应答位。调用前SCL为低,返回时SCL为低,SDA为高 SETBSDA ;NAK位 NOP ;保持SCL为低及数据稳定 NOP SETBSCL ;升高时钟 ACALLDELAY_4μs ;保持SCL为高 CLR SCL ;降低时钟 RETNAK子程序:84
2.随机地址读(RANDOMADDRESSREAD)随机读取需要一个“空”字节写序列来载入数据地址,一旦器件地址(读/写选择位置低)和数据地址随时钟输入,并被EEPROM确认,传送设备必须产生另一个开始状态。此时送出的器件地址中读/写选择位处于高电平,将启动一个现行地址读,EEPROM收到器件地址后回送确认应答,并随时钟串行输出数据码,微控制器读取数据后不通过确认应答,而是使SDA总线处于高电平,随后产生一个停止状态,见图2.21。基于MCS-51单片机的接口设备可利用如下随机地址读子程序READ_RANDOM来实现随机地址读操作。从程序中可以看到,在完成了一个“空”写之后,直接调用上面给出的现行地址读子程序就可以实现随机地址读操作了。2.随机地址读(RANDOMADDRESS85图2.21随机地址读时序图图2.21随机地址读时序图86 READ_RANDOM: ;AT24Cxx随机地址读功能。调用时器件地址的可编程地址置于A中,字节地址置于寄存器ADDR_HI和ADDR_LO中,返回数据置于A中。返回时CY位为1表明总线无效或器件无应答 PUSH B MOV B,A ;可编程器件地址暂存B中;******发送空写命令来设置内部地址****** ACALL START JC BACK5 ;总线无效则中断 RL A ORL A,#FADDR ;生成器件地址 READ_RANDOM:87 CLR ACC.0 ;设置写操作 ACALL SHOUT ;发送器件地址 JC ERROR5 ;无应答则中断 MOV A,ADDR_HI ;发送字节地址高8位 ACALL SHOUT JC ERROR5 ;无应答则中断 MOV A,ADDR_LO ;发送字节地址低8位 ACALL SHOUT JC ERROR5 ;无应答则中断;*************调用现行地址读功能*********** CLR ACC.0 ;设置写操作88 MOV A,B ;取可编程器件地址 ACALL READ_CURRENT AJMP BACK4;退出ERROR5: ACALL STOPBACK5: POP B RET MOV A,B ;取可编程器件地址89
3.顺序读(SEQUENTIALREAD)顺序读取由现行读或随机地址读启动。微控制器收到一个数据码之后回送“确认”应答,只要EEPROM收到“确认”之后,便会继续增加数据地址并随时钟串行输出后面的数据。当达到存储地址极限时,数据地址将重复滚动,顺序读取将继续;当终止顺序读操作时,微控制器不产生低电平确认信号,而是使SDA总线处于高电平应答,随后产生一个停止状态。顺序读时序图见图2.22。3.顺序读(SEQUENTIALREAD)90图2.22顺序读时序图图2.22顺序读时序图91基于MCS-51单片机的接口设备可利用如下读块子程序READ_BLOCK来实现顺序读操作。READ_BLOCK:;从AT24Cxx读一页数据。当读出超过一个字节时执行由随机地址读扩展而来的顺序读。调用时器件地址的可编程地址置于A中,第一个字节地址置于寄存器ADDR_HI和ADDR_LO中,字节计数器置于寄存器COUNT中。返回时数据置于BUFFER中。返回时CY为1表明总线无效或器件无应答。占用A,COUNT,INDEX(注:COUNT为字节计数器,可使用工作寄存器R1)基于MCS-51单片机的接口设备可利用如下92;******发送空写命令来设定第一个字节的地址****** ACALL START JC BACK6 ;若总线无效则中断 RL A ORL A,#FADDR ;生成器件地址 MOV INDEX,A ;暂存器件地址于INDEX CLR ACC.0 ;设置写操作 ACALL SHOUT ;发送器件地址 JC ERROR6 ;若无应答则中断 MOV A,ADDR_HI ;发送字节地址高8位 ACALL SHOUT JC ERROR6 ;若无应答则中断 MOV A,ADDR_LO ;发送字节地址低8位 ACALL SHOUT JC ERROR6 ;若无应答则中断;******发送空写命令来设定第一个字节的地址******93;******发送读命令及接收数据******
ACALL START ;第二次开始启动读操作 JC ERROR6 ;若总线无效则中断 MOV A,INDEX ;从INDEX中取器件地址 SETB ACC.0 ;设置读操作 ACALL SHOUT ;发送器件地址 JC ERROR6 ;若无应答则中断 MOV INDEX,#BUFFER;指向数据缓冲区首地址L6: ACALL SHIN ;接收数据字节 MOV @INDEX,A ;保存数据 CJNE COUNT,#1,NEXT;不是最后一个字节则继续 ACALL NAK ;读完发送NAK应答 AJMP DONE ;完成;******发送读命令及接收数据******94NEXT: ACALL ACK ;发送ACK应答字节 INC INDEX ;数据缓冲区地址加1 DJNZ COUNT,L6 ;读下一个字节DONE:CLR C ;清零错误标志ERROR6:ACALL STOPBACK6: RETNEXT: ACALL ACK ;发送ACK应95注意:写操作中卡接收到数据后向接口设备发送低电平应答ACK,程序通过将第9个时钟周期的SDA线读入CY位来接收应答,查询CY位是否为低来判断是否收到卡确认应答。而顺序读操作中接口设备每接到一个字节的数据后向卡发送低电平应答ACK,该低电平应答由ACK子程序来产生。注意:96ACK子程序:ACK:;随时钟输出一个低电平应答位。调用前SCL为低。返回时,SCL、SDA为低 CLR SDA ;应答位 NOP ;保持SCL为低及数据稳定 NOP SETB SCL ;升高时钟脉冲 ACALL DELAY_4μs ;保持SCL为高 CLR SCL ;降低时钟脉冲 RETACK子程序:972.5实训2:接触式存储器卡的操作控制1.实训目的(1)进一步理解和掌握AT24Cxx系列存储器卡的操作时序。(2)掌握接触式IC卡接口电路的原理与设计、制作方法。(3)掌握按操作时序编写和调试卡操作(读/写)控制程序的方法。2.5实训2:接触式存储器卡的操作控制1.实训目的98
2.实训设备与器件(1)实训设备:通用接触式IC卡读写器及其DEMO软件,586电脑,5V稳压电源,MCS-51系列单片机仿真系统。(2)实训器件:AT24C01卡,接触式IC卡卡座,PNP三极管9012,10kΩ电阻3个,1.2kΩ电阻1个,40脚IC座。(3)实训电路:接触式存储器卡接口电路如图2.23所示。其中接口设备MCU选用AT89C51单片机,SMARTADP为接触式IC卡卡座,AT89C51的P1.0、P1.1分别通过卡座接AT24C01卡的串行数据端SDA和串行时钟端SCL,P1.6接卡插入测试端SW2,P1.7接PNP三极管9012的基极,为上电控制端。SCL、SDA及SW2均通过10kΩ的上拉电阻,接+5V。该接口电路的功能、工作原理参见2.8节。2.实训设备与器件99图2.23接触式存储器卡接口电路图2.23接触式存储器卡接口电路100
3.实训步骤与要求1)实训准备(1)按电路原理图焊接好接触式IC卡接口电路,注意卡座各触点引脚与卡触点应一一对应;9012的集电极接卡座的VCC端,发射极接+5V电源,切勿接反。(2)用万用表测试卡座的SW1、SW2引脚,识别是常开还是常闭卡座。根据卡座的类型编写插卡识别程序。卡座类型的识别方法及插卡识别程序参见2.8节。(3)认真阅读下述上/下电控制程序PWRON/PWROFF。上电控制程序:判断是否有卡插入,无卡插入则等待,卡座(卡)VCC端保持为低电平,避免带电插卡导致接口电路或卡的损坏;插卡后加电,卡座(卡)VCC端为+5V。3.实训步骤与要求101上电控制程序如下:PWRON: LCALLRECOG ;调用插卡识别程序 CLRSCL ;SCL=L,准备加载时钟 LCALLDELAY_0.5ms;使端口逻辑信号稳定 CLRPWR ;加电 CLR SDA ;SDA=L,准备传送数据 RET上电控制程序如下:102下电控制程序:通过置位PWR端使卡座(卡)VCC端恢复为低电平,需要特别注意的是,必须执行完该子程序后方能拔卡。下电控制程序如下: PWROFF: CLR SCL ;SCL=L,释放SCL CLR SDA ;SDA=L,释放SDA LCALLDELAY_0.5ms ;延时稳定 SETB PWR ;下电 RET下电控制程序:通过置位PWR端使卡座(卡)V103常开型卡座插卡识别程序RECOG如下:RECOG: JB SW,RECOG ;无卡插入则等待 LCALL DELAY_5ms ;延时去抖 JB SW,RECOG ;再次判断,无卡插入则等待 RET ;确实有卡插入,返回(4)认真阅读所附的实训程序,并将程序调用的各功能子程序START、STOP、SHIN、SHOUT、ACK、NAK(见2.4.2节)补充完整。常开型卡座插卡识别程序RECOG如下:(4)1042)程序调试(1)利用接触式IC卡读写器查看并记录AT24C01卡的存储记录。(2)用万用表检查电路,确认连接正确。将MCS-51系列单片机仿真器的仿真头插入实验电路板上的40脚IC座。在MCS-51系列单片机仿真开发系统中打开并编译实训范例程序1。在卡地址缓冲区(首地址为20H的片内RAM)中设置将被更新的16个卡存储单元地址(例如00H~0FH),在写数据缓冲区(首地址为30H的片内RAM)中设置要写入的16个数据(如00H、11H、...、FFH),注意不要与卡中的原始数据相同,清零读数据缓冲区(首地址为40H的片内RAM)。2)程序调试105(3)调试上电控制程序。在程序标志的断点①处设置断点。运行程序1。未插卡时,程序是否能在断点①处暂停?此时测试并记录卡座VCC端电压。插入IC卡,程序是否能在断点①处暂停?再次测试并记录卡座VCC端电压。比较插卡前后的实验现象与实验数据,说明原因。(4)取消断点①,屏蔽读字节程序,单独调试写字节程序:在程序标志的断点②处设置断点。运行程序1并插卡,程序在断点②处暂停时,记录CY位状态;取出AT24C01卡,用读写器读出被更新单元的内容,验证是否正确写入。当写入不正确时,可能的出错原因有哪些,应如何通过调试查找错误?(3)调试上电控制程序。在程序标志的断点①106(5)若写字节程序正确,取消屏蔽,调试读字节程序。运行程序1,并插卡,程序在断点②处暂停时,记录CY位状态及读数据缓冲区数据,验证是否正确读出(是否与写数据缓冲区一致)。当读出不正确时,可能的出错原因有哪些,应如何通过调试查找错误?(6)打开并编译实训范例程序2。在卡地址缓冲区(首地址为20H的片内RAM)中设置将被更新的1页卡存储单元地址(例如00H~07H),在写数据缓冲区(首地址为30H的片内RAM)中设置要写入的8个数据(如00H、11H、...、77H),注意不要与卡中的原始数据相同,清零读数据缓冲区(首地址为40H的片内RAM)。(5)若写字节程序正确,取消屏蔽,调试读字107(7)屏蔽读页程序,单独调试写页程序。在程序标志的断点③处设置断点。运行程序2并插卡,程序在断点③处暂停时,记录CY位状态;取出AT24C01卡,用读写器读出被更新页的内容,验证是否正确写入。当写入不正确时,可能的出错原因有哪些,应如何通过调试查找错误?(8)若写页程序正确,则取消屏蔽,调试读页程序。运行程序2,并插卡,程序在断点④处暂停时,记录CY位状态及读数据缓冲区数据,验证是否正确读出(是否与写数据缓冲区一致)。当读出不正确时,可能的出错原因有哪些,应如何通过调试查找错误?(7)屏蔽读页程序,单独调试写页程序。在程序108
4.实训总结与分析(1)当上电控制电路正常,上电控制程序正确时,运行上电控制程序。未插卡时,程序循环等待插卡,卡座的VCC端保持低电平,保证不带电插卡;插卡后,程序向下运行到断点处,卡座的VCC端变为高电平,给IC卡芯片提供工作电源。(2)无论按字节或按页操作时,读/写子程序正确则CY位应为0。当读/写出错且CY位为1时,较为常见的出错原因包括:上电控制程序或电路出错,未能加电或电压太低;SCL、SDA、SW2未加上拉电阻(或上拉电阻选择不当)导致没有高电平;SCL、SDA、SW2、PWR的接口定义与硬件不符;读/写流程有误。通过在程序适当位置设置断点,检查各接口电平及查看各断点处CY位(应答)可查出出错原因。4.实训总结与分析109(3)当读/写出错而CY位为0时,表示读/写子程序正确,出错的原因是数据块传输不正确,即循环过程出错。注意:在字节操作中,指针的加1和循环的判断在每次调用STOP之后;而页操作中,循环结束后才调用STOP。(3)当读/写出错而CY位为0时,表示读/110
5.思考(1)在范例程序1和程序2中,同样是对卡中的某一数据块进行读/写操作,二者的实现方式有何不同?(2)当接口电路采用常开型卡座,却错误地使用了常闭型插卡识别程序,会出现什么现象?为什么?反之当接口电路采用常闭型卡座,却错误地使用了常开型插卡识别程序,会出现什么现象?为什么?(3)当上述实验采用的是AT24C64卡时,应如何修改程序?5.思考111
6.附录——实训范例主程序程序1按字节将AT89C51写数据缓冲区中的16个字节数据写入卡中连续的16个存储单元中,然后再按字节将这16个存储单元的内容读入到AT89C51读数据缓冲区中。程序2按页将AT89C51写数据缓冲区中的8个字节数据写入卡中连续的8个存储单元(1页)中,然后再按字节将这8个存储单元(1页)的内容读入到AT89C51读数据缓冲区中。其中,写数据缓冲区首地址为30H,读数据缓冲区首地址为40H,卡地址缓冲区首地址为20H。6.附录——实训范例主程序112程序1:按字节操作。SDA BIT P1.0SCL BIT P1.1ICSW BIT P1.6PWR BIT P1.7ORG 0000HLJMP BYTEOPRORG 0080H程序1:按字节操作。113BYTEOPR: MOV SP,#50H LCALL PWRON ;上电控制 MOV R0,#20H ;设置卡地址缓冲区指针R0,断点① MOV R1,#30H ;设置写地址缓冲区指针R1 LCALL WRITE_BYTE MOV R0,#20H ;设置卡地址缓冲区指针R0 MOV R1,#40H ;设置读地址缓冲区指针R1 LCALL READ_BYTE LCALL PWROFF SJMP$ ;断点②BYTEOPR:114WRITE_BYTE: MOV R7,#10H ;R7为要写的字节数LOOP1: LCALL START ;开始 JC EXIT1 MOV A,#0A0H ;送器件地址到A,设置写 LCALL SHOUT ;输出器件地址到IC卡 JC FAULT1 ;判断是否有应答 MOV A,@R0 ;从卡地址缓冲区取字地址 LCALL SHOUT ;输出字地址到IC卡 JC FAULT1 ;判断是否有应答 MOV A,@R1 ;从写数据缓冲区取数据 LCALL SHOUT ;输出字地址到IC卡 JC FAULT1 ;判断是否有应答 CLR C ;设置操作成功标志WRITE_BYTE:115FAULT1:LCALLSTOP ;停止 ACALL DELAY_10ms ;等待内定时写周期结束 INC R0 ;卡地址缓冲区地址+1,指向下一个要写入 的卡单元 INC R1 ;写数据缓冲区地址+1,指向下一个数据 DJNZ R7,LOOP1 ;未写完继续EXIT1: RETREAD_BYTE: MOV R7,#10HFAULT1:LCALLSTOP ;停止116LOOP2:LCALL START ;开始 JC EXIT2 MOV A,#0A0H ;送器件地址到A,设置空写 LCALL SHOUT ;输出器件地址到IC卡 JC FAULT2 ;判断是否有应答 MOV A,@R0 ;从卡地址缓冲区取字节地址 LCALL SHOUT ;输出字地址到IC卡 JC FAULT2 ;判断是否有应答 LCALL START ;开始 MOV A,#0A1H ;送器件地址到A,设置读 LCALL SHOUT ;输出器件地址到IC卡 JC FAULT2 ;判断是否有应答 LCALL SHIN ;读取IC卡的数据 MOV @R1,A ;送入读数据缓冲区 LCALL NAK ;送NOACK给卡 CLR C ;设置操作成功标志LOOP2:LCALL START ;开始117EXIT2:LCALL STOP ;停止 INC R0 ;卡地址缓冲区地址+1,指向下一个被读 入的卡单元 INC R1 ;读数据缓冲区地址+1,指向下一个读入 数据的存储单元 DJNZ R7,LOOP2 ;未读完继续FAULT2:RET程序2:按页操作。 SCL BIT P1.0 SDA BIT P1.1 ICSW BIT P1.2 PWR BIT P1.3 ORG 0000H LJMP PAGEOPR ORG 0080HEXIT2:LCALL STOP ;停止118PAGEOPR:MOV SP,#50HLCALL PWRONMOV R0,#20H ;设置卡地址缓冲区指针R0MOV R1,#30H ;设置写地址缓冲区指针R1 LCALL WRITE_PAGE MOV R0,#20H ;设置卡地址缓冲区指针R0,断点③ MOV R1,#40H ;设置读地址缓冲区指针R1 LCALL READ_PAGE LCALL PWROFF SJMP$ ;断点④PAGEOPR:119WRITE_PAGE: MOV R7,#08H ;R7为要写的字节数,8B为1页 LCALL START ;开始 JC BACK3 MOV A,#0A0H ;送器件地址到A,设置写 LCALL SHOUT ;输出器件地址到IC卡 JC FAULT3 ;判断是否有应答 MOV A,@R0 ;从卡地址缓冲区取字地址 LCALL SHOUT ;输出字地址到IC卡 JC FAULT3 ;判断是否有应答WRITE_PAGE:120LOOP3: MOV A,@R1 ;从写数据缓冲区取数据 LCALL SHOUT ;输出(写)数据到IC卡 JC FAULT3 INC R0;卡地址缓冲区地址+1,指向下一个要写入的卡单元 INC R1;写数据缓冲区地址+1,指向下一个数据
DJNZ R7,LOOP3 ;未写完继续 CLR C ;写结束,设置操作成功标志FAULT3:LCALLSTOP ;停止 ACALL DELAY_10ms ;等待内定时写周期结束LOOP3: MOV A,@R1 ;从写数据缓冲区取数据121EXIT3: RETREAD_PAGE: MOV R7,#08H ;R7为要读的字节数 LCALL START ;开始 MOV A,#0A0H ;送器件地址到A,设置空写 LCALL SHOUT ;输出器件地址到IC卡 JC FAULT ;判断是否有应答 MOV A,@R0 ;从卡地址缓冲区取字节地址 LCALL SHOUT ;输出字地址到IC卡 JC FAULT ;判断是否有应答 LCALL START ;开始 MOV A,#0A1H ;送器件地址到A,设置读 LCALL SHOUT ;送器件地址到IC卡 JC FAULT ;判断是否有应答EXIT3: RET122LOOP4: LCALL SHIN ;读取IC卡的数据 MOV @R1,A ;送入读数据缓冲区 LCALL ACK ;送ACK应答给卡,使卡送出下一字节数据 INC R0;卡地址缓冲区地址+1,指向下一个被读入的卡单元 INC R1;读数据缓冲区地址+1,指向下一个读入数据的存储单元 DJNZ R7,LOOP;未读完继续 LCALL NAK ;读结束,送NOACK给卡,使卡停止送出下一字节数据 CLR C ;设置操作成功标志FAULT4:LCALLSTOP;停止EXIT4: RETLOOP4: LCALL SHIN ;读取IC卡的数据1232.6典型逻辑加密卡2.6.1面向位操作的逻辑加密卡面向位操作的逻辑加密卡是一种一次性使用的带加密逻辑的IC卡,以一次性的计数方式(或有条件地擦除重用),从写满的计数器中减“1”,直至存储单元全减为“0”。因此这种卡也称为计数卡(TokenMemoryCard),如Siemens的SLE4406/4436、SLE4412、Atmel的AT88SC06、Gemplus的GPM276/103。2.6典型逻辑加密卡2.6.1面向位操作的逻辑加密124这种卡常用于具有定额定价的消费系统中,如公用电话卡、预付费加油卡、停车计费卡、游乐园消费卡等。卡的每次消费计数的单位价值可以根据应用系统的实际要求来确定,例如,对于公用电话卡,电话机每分钟产生一次扣费信号,卡被减掉“1”,而每个“1”代表“0.5”元。对于预付费加油卡,加油机每出油1公升产生一次扣费信号,卡被减掉“1”,而每个“1”代表“2.5”元。目前,我国的公用电话卡大多采用了Siemens的SLE4406卡,下面就以SLE4406为例来介绍计数卡的有关性能。这种卡常用于具有定额定价的消费系统中,如公用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年精密冲头光学投影研磨机项目可行性研究报告
- 2025年男士无缝内衣项目可行性研究报告
- 提升学校治理能力的创新路径与实践方案
- 2025年烤箱正把手项目可行性研究报告
- 木炭行业发展趋势与市场前景深度分析
- 课题开题报告:资源聚合与价值共创:地方高校研究生“导学思政”协同育人机制与实践路径研究
- 2025年帮角擂平的按摩机项目可行性研究报告
- 2025年密闭式喷砂机项目可行性研究报告
- 2025年会计师考试全科目复习思路试题及答案
- 胆囊切除术的护理查房
- 不锈钢304焊接工艺评定报告PQR(全氩弧)
- 安全事故案例图片合集事故警示
- 正确认识汽车太阳膜课件
- 工程建筑给排水外文文献翻译1
- 曲线上梁的平分中矢坐标计算方法解读
- DB4201∕T 646-2021 轨道交通工程运营期结构监测技术规程
- 200句话搞定上海中考单词(精华版)
- 船舶辅锅炉的自动控制系统分析
- 49000DWT江海直达成品油船设计
- 第三章第四节2--厚壁圆筒-应力
- 建设工程监理费计算器
评论
0/150
提交评论