附录-整套24c16单片机读写驱动程序

上传人:时间****91 文档编号:122584938 上传时间:2022-07-21 格式:DOC 页数:12 大小:55.50KB
收藏 版权申诉 举报 下载
附录-整套24c16单片机读写驱动程序_第1页
第1页 / 共12页
附录-整套24c16单片机读写驱动程序_第2页
第2页 / 共12页
附录-整套24c16单片机读写驱动程序_第3页
第3页 / 共12页
资源描述:

《附录-整套24c16单片机读写驱动程序》由会员分享,可在线阅读,更多相关《附录-整套24c16单片机读写驱动程序(12页珍藏版)》请在装配图网上搜索。

1、用单片机实现通用存贮器IC卡的读写自动化仪表 Vol.23 No.6 P.37-41本文对AT24系列存贮器和AT89系列单片机的特性及总线状态作为简介,并以AT24C01与AT89C2051为例具体描述了通用存贮器IC卡的工作原理及用单片机对其进行读写操作的基本电路连接和软件编程措施。用存贮器IC卡是由通用存贮器芯片封装而成的,由于它的构造和功能简朴,生产成本低,使用以便,因此在各领域都得到了广泛的应用。目前用于IC卡的通用存贮器芯片多为E2PROM,其常用的合同重要有两线串行连接合同(I2C)和三线串行链接合同,其中比较常用的是ATMEL公司生产的AT24系列芯片。以该系列中的AT24C0

2、1为例,它具有1k的存贮容量,合用于2V5V的低电压/原则电压的操作,具有低功耗和高可靠性等长处。而AT89C2051虽是ATMEL公司89系列单片机的低档型,但它具有2k的FLASH ROM(可重编闪速存贮器)、1288位内部RAM及全静态操作方式,同样也具有低功耗和较强的功能。下面以AT24C2051为例,对通用存贮器IC卡的工作原理及基本电路连线作一简介,该线路简朴,使用灵活,能可靠地对通用存贮器IC卡进行读写。 2 硬件特性 2.1 AT24系列存贮器的特性 AT24系列存贮器芯片采用CMOS工艺制造,内置有高压泵,可在单电压供电条件下工作。其原则封装为8脚DIP封装形式,各引脚的功能

3、阐明如下:SCL:串行时钟。在该脚的上升沿时,系统将数据输入到每个EEPROM器件,在下降沿时输出。 SDA:串行数据。该引脚为开漏极驱动,可双向传送数据。 A0、A1、A2:器件/页面寻址。为器件地址输入端。在AT24C01/02中,该引脚被硬连接。 Vcc:一般输入+5V的工作电压。 图1是符合ISO7816-2原则的IC卡的触点图(见IC卡书P186)。对于AT24系列通用存贮器IC卡来说,一般只需使用四个触点。AT24C01的内部组态为128个8位字节,而对随机字寻址则需要一种7位地址。2.2 总线状态及时序 AT24C01的SCL及SDA两总线可通过一种电阻上拉为高电平,SDA上的数

4、据仅在SCL为低电平时才干变化。当SCL为高电平时,SDA的变化表达“开始”和“停止”状态。此时,所有地址和数据字都以8位串行码方式输入输出EEPROM。 开始状态:SCL为高电平时,SDA由高电平转入低电平。该命令必须在其他命令前执行。SCL SDA停止状态:SCL为高电平时,SDA由低电平转入高电平。该命令可终结所有通讯。SCL SDA 确认:相似总线上的设备在收到数据后,以置SDA为低电平的方式对其进行确认。SCLSDA2.3 器件寻址 AT24系列EEPROM在开始状态后需紧接一种8位器件地址,以进行应读写操作。设备寻址码的高4位为1、0、1、0,对于AT24C01/02,寻址码高4位

5、背面的三位是器件寻址码,与它们的硬连线管脚相相应。最低应是读写选择位,置0时可激发读操作。 AT24设备寻址码具体的格式如下: 1 0 1 0 A2 A1 A0 R/W 2.4 AT89C2051芯片 AT89C2051是MCS-51产品的兼容型,它具有2k的FLASH ROM、128字节ROM,15根I/O引线、两个16位定期/计数器、一种五向量两级中断构造、一种全双工串行口、一种精密模拟比较器以及片内振荡电路和时钟电路。它的P1口和P3口是双向I/O口,其中P1.2P1.7、P3.0P3.5和P3.7带有内部上拉电阻。在AT89C2051用作输入端时,将一方面向引脚写“1”而使内部MOS管

6、截止以便引脚处在悬浮状态,从而可获得高阻抗输入。 图2为通用存贮器IC卡的基本电路连接图。(略)3 读写操作软件 当系统采用6MHz晶体振荡器时所定义的I/O口线及器件地址如下: SCL BIT P1.7 SDA BIT P1.6 DEVICEAD_W DATA 10100000B ;写卡器件地址 DEVICEAD_R DATA 10100001B ;读卡器件地址 3.1 开始条件(START_IC) 当SCL为高电平时,SDA由高转为低。程序如下: SCL 0SDA 在SCL、SDA全1前提下进入开始,开始完毕后,SCL、SDA全0 0START_IC:CLR SCL ;SCL由高变低,由于

7、SCL低电平时才容许SDA更改 NOP ;加入空指令延时以保证信号可靠 NOP SETB SDA ;SDA先高NOP NOP SETB SCL ;SCL高,起始条件建立时间不小于4.7usNOP NOP CLR SDA ;SDA低,起始条件锁定期不小于4usNOP NOP CLR SCL ;SCL低, 钳住总线,准备发数据NOP RET 3.2 停止条件(STOP_IC) 当SCL为高电平时,SDA由低转为高。程序如下:SCL SDA ;在SCL、SDA高或低的前提下均可进入停止过程 ; 停止过程完毕后,SCL、SDA全1STOP_IC:CLR SCL ;SCL低NOP CLR SDA NOP

8、 NOP SETB SCL ; 发送结束条件的时钟信号NOP ;结束总线时间不小于4us(取4.7us)NOP SETB SDA ;结束总线NOP ;保证一种终结信号和起始信号的空闲时间不小于4.7usNOP ;在SCL、SDA高或低的前提下均可进入停止,停止完毕后,SCL、SDA全1RET 3.3 应答确认信号(MACK_IC)与非应答信号MNACK_IC 在接受方,每收到一字节后便将SDA电平拉低,程序如下:SCL 0SDA 1 ;应答完毕后,SCL=0,SDA=1应答确认信号(MACK_IC)MACK_IC:CLR SCL NOP CLR SDA ;在第9个SLC脉冲,将SDA置0NOP

9、 NOP SEIB SCL NOP ;保持数据时间,即SCL为高时间不小于4.7usNOP CLR SCL NOP SETB SDA ;在SDA高或低的任何前提下,应答完毕后,SCL=0,SDA=1NOP RET 发送非应答信号MNACK_ICMNACK_IC: CLR SCL NOP NOP SETB SDA ;将SDA置1 NOP NOP SETB SCL NOP NOP ;保持数据时间,即SCL为高时间不小于4.7us NOP NOP NOP CLR SCLNOP SETB SDA NOP RET 24C16程序资源安排是:R0=字节的循环指针,R2=位数的计数器,R3=卡器件地址, R

10、4=字节地址,R5=字节数或页面长度。 R1可以留作其她循环指针,R6、R7可以留作uS级延时。3.4 写一字节数据到IC卡(WR_BYTE) SCLSDA D7 D6 D0 等待IC确认在下列程序中,参数A表达源数据,R2表达字节位数。WR_BYTE: MOV R2,#08 ;一字节8位数据 CLR SCL NOP NOP WR_BYTE1:RLC A ;带进位位左移,A.8-C MOV SDA,C ;SCL低电平时变化SDA上的数据 NOP SETB SCL ;拉高SCL =4.7uS把数据发送出去 NOP NOP CLR SCL NOP NOP DJNZ R2,WR_BYTE1;依次发送

11、A中的8位数据 SETB SDA NOP NOP SETB SCL CLR F0 NOP NOP MOV C,SDA JC WR_BYTE2 SETB F0 ;判断应答位WR_BYTE2:NOP CLR SCL NOP RET 此子程序的重要作用是按照定义的时序,顺序左移A中一字节8位数据,并通过引脚传送出去。当一字节发完后,等待IC卡发回的确认信号。 3.5 从IC卡读一字节(RD_BYTE) 从IC卡中读一字节的源程序如下:SCLSDA D7 D6 D0 发停止状态RD_BYTE:MOV R2,#08 SETB SDA ;设备SDA为读状态 CLR A ;清空A寄存器NOPNOPRD_BT

12、YE1:SETB SCL ;时钟线为高,接受数据位 NOP NOP MOV C,SDA ;读取一位数据到进位位 RLC A ;左移数据到ACC.0 CLR SCL ;将SCL拉低,时间不小于4.7us NOP NOP DJNZ R2,RD_BYTE1;依次读出8位数据到A中 RET ;无应答信号运用该程序可将读出的数据寄存在A中。需要注意的是:读数据的器件不是通过确认状态来应答的,而是随后产生一种停止状态。 3.6 字节写入模式写单字节数据(WRITE_BYTE) 下列程序入口参数:R3=卡器件地址,R4= 目的字节地址, A= 待写数据 出口参数:F0 作应答位,F0=1有应答占用资源:A、

13、R4、CY、F0发开始信号-写卡器件地址-写入字节地址-写入单字节数据-发停止信号WRITE_BYTE:PUSH ACC ;保存A中的数据LCALL START_IC ;发开始信号 MOV A,R3 ;写入器件地址8位 LCALL WR_BYTE JNB F0,RETWRB ;无应答则跳转MOV A,R4 ; 写入字节地址8位 LCALL WR_BYTE JNB F0,RETWRB ;无应答则跳转POP ACC ;恢复待写的A中数据 LCALL WR_BYTE ;写入单字节数据LCALL STOP_IC ;发停止信号RETRETWRB: POP ACCLCALL STOP RET在收到8位数据

14、后,EEPROM将通过SDA来回送确认信号,而传送设备必须用停止状态来终结写操作。这时,EEPROM将进入一种内时固定存贮器的写入周期并且严禁在此其间的所有输入,直到写操作完毕后才对通讯应答。其写入周期可自定义,最大为10ms。 3.7 页面写入模式写多字节数据(WRITE_PAGE) 入口参数:R3=卡器件地址,R4= 目的字节地址,R5=页面长度。R0=写数据缓冲指针发开始信号-写卡器件地址-写页面目的地址-持续写(R5)个字节数据-发停止信号WRITE_PAGE:LCALL START_IC ;发开始信号MOV A,R3 ;写卡器件地址LCALL WR_BYTEJNB F0, IWRNB

15、YTEMOV A,R4 ;写页面目的地址LCALL WR_BYTE JNB F0, IWRNBYTEWRITE_PAGE1:MOV A,R0 ;持续写(R5)个字节数据LCALL WR_BYTE JNB F0, IWRNBYTEINC R0DJNZ R5,WRITE_PAGE1 IWRNBYTE: LCALL STOP_IC ;发停止信号RET AT24C01/02可运用上述程序进行8字节的页面写入,它的操作类似于写字节。不同的是,它无需在第一种字节送出后以停止状态,不同在收到确认信号后,再传送7个字节的数据码,最后以停止状态来终结页面写序列。AT24C04/08/16的页面为16字节。3.8

16、 立即性地址读单字节模式(READ_BYTEC) 立即地址读模式读一字节数据的程序如下:入口参数:R3=卡器件地址,(字节源地址以芯片内的目前地址)出口数据:读取数据ACC 开始信号-写出读卡器件-读出默认地址数据-发停止状态应答READ_BYTEC:LCALL START_IC ;开始信号MOV A,R3 ;写读卡器件地址LCALL WR_BYTE JNB F0, RETRDBLCALL RD_BYTE ;读出默认地址数据 LCALL MNACK ;读完最后一种字节数据需要发非应答信号RETRDB : LCALL STOP_IC ;发停止状态应答 RET 该程序执行后,其内部数据字地址指针将

17、保持在上次读写操作访问的最后一种地址,并按1递增且在芯片上电期间始终有效。只有本地址为页面的最末时,下次访问才滚动到该页面的首地址。 3.9 选择性地址读单字节模式(READ_BYTER) 在下列程序中,R3=卡器件地址,R4= 字节源地址出口数据:读取数据ACC程序如下:开始信号-执行空字节写卡器件地址-写入源地址-开始信号-写卡器件地址-立即地址的数据读出停止信号READ_BYTER:LCALL START_IC ;启动总线 MOV A,R3 ;执行空字节写卡器件地址 LCALL WR_BYTE JNB F0,READ_BYTE3MOV A,R4 ;写入源字节地址LCALL WR_BYTE

18、LCALL START_IC ;重新启动总线MOV A,R3LCALL WR_BYTE ;写卡器件地址 JNB F0,READ_BYTE3LCALL RD_BYTE ;立即地址数据读出LCALL MNACK ;读完最后一种字节数据需要发非应答信号READ_BYTE3: LCALL STOP_IC ;停止信号RET读操作模式需要一种字节写序列载入数据地址。在器件和数据地址写入并得到确认后,将再产生另一种开始条件,并送出读操作器件的地址,同步激发一种立即地址读取。 3.10 立即地址的持续读取N个字节数据(READ_BYTES);功能:从卡器件的目前立即字节地址开始读取N个数据入口参数: R3=卡

19、器件地址,(字节源地址默认目前立即地址),R5=N数据长度出口参数: R0=目的指针开始信号-写出读卡器件-(R5)个立即地址的数据读出-停止信号READ_BYTES:LCALL START_IC ;开始信号MOV A,R3 ;写出读卡器件LCALL WR_BYTE JNB F0, BYTESRETREAD_BYS2:LCALL RD_BYTE ;持续立即地址的数据读出MOV R0,A ;寄存数据到目的地址 INC R0DJNZ R5,READ_BYS1 LCALL MNACK ;读完最后一种字节数据需要发非应答信号BYTESRET: LCALL STOP_IC ;读完N个字节后发停止信号RE

20、T READ_BYS1:LCALL ACK_IC ;收到数据后发确认信号SJMP READ_BYS2其中持续读取由立即地址读或选择性地址读激发,并在收到一字节数据后发确认信号应答。当读数器件以停止状态应答时,操作被终结。 3.11 选择性地址的持续读取N个字节数据(READ_BYTES) ;功能:从卡器件某指定的字节地址开始读取N个数据;入口参数: R3=卡器件地址,R4= 字节源地址,R5=N数据长度;出口参数: R0=接受数据目的缓冲区指针 ;占用资源:A、 R0、 R2、R3、 R4、 R5、CY IRDNBYTE: LCALL START ;启动总线 MOV A, R3 LCALL W

21、R_BYTE ;发送卡器件地址 JNB F0 ,RETRDN MOV A,R4 ;指定源字节地址 LCALL WR_BYTE LCALL START ;重新启动总线 MOV A,R3 LCALL WR_BYTE ;写卡器件地址 JNB F0,IRDNBYTE RDN1: LCALL RDBYTE ;读操作开始 MOV R0,A INC R0 DJNZ R5,SACK LCALL MNACK ;读完最后一种字节数据需要发非应答信号RETRDN: LCALL STOP_IC ; 发停止信号 RETSACK: LCALL MACK SJMP RDN14 总结该系统构造简朴,在实际运营时具有很高的可靠性,同步具有一定的可扩展性,并可通过单片机的串行口经电平转换后直接与计算机相连,以进行数据通讯。此外,也可根据需要连接到其他引脚或卡座触点,如果合适改善电路和程序,还可读写加密卡和CPU卡等。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!