_整套24c16单片机读写驱动程序_第1页
_整套24c16单片机读写驱动程序_第2页
_整套24c16单片机读写驱动程序_第3页
_整套24c16单片机读写驱动程序_第4页
_整套24c16单片机读写驱动程序_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用单片机实现通用存贮器IC卡的读写自动化仪表2002本文对AT24系列存贮器和AT89系列单片机的特征及总线状态作为介绍,并以AT24C01与AT89C2051为例详细描述了通用存贮器 IC卡的工作原理及用单片机对其进行读写操作的基本电路连接和软件编程 方法。用存贮器IC卡是由通用存贮器芯片封装而成的,由于它的结构和功能简单,生产成本低,使用 方便,因此在各领域都得到了广泛的应用。目前用于IC卡的通用存贮器芯片多为E2PROM其常用的协议主要有两线串行连接协议(I2C)和三线串行链接协议,其中比较常用的是ATME公司生产的AT24系列芯片。以该系列中的AT24C01为例,它具有1k的存贮容量,

2、适用于 2V5V的低电压/标准电压的操 作,具有低功耗和高可靠性等优点。而AT89C2051虽是ATME公司89系列单片机的低档型,但它具有2k的FLASH ROM可重编闪速存贮器)、128X8位内部RA/全静态操作方式,同样也具有低功耗和 较强的功能。下面以 AT24C2051为例,对通用存贮器 IC卡的工作原理及基本电路连线作一介绍,该线 路简单,使用灵活,能可靠地对通用存贮器IC卡进行读写。2 硬件特性AT24 系列存贮器的特性AT24系列存贮器芯片采用 CMOSE艺制造,内置有高压泵,可在单电压供电条件下工作。其标准封装为 8脚DIP封装形式,各引脚的功能说明如下: SCL串行时钟。在

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

4、SCL为高电平时,SDA的改变表示“开始”和“停止”状态。此时,所有地址和数据字都以8位串行码方式输入输出 EEPROM 开始状态:SCL为高电平时,SDA由高电平转入低电平。该命令必须在其它命令前执行。 SCL停止状态:SCL为高电平时,SDA由低电平转入高电平。该命令可终止所有通讯。SCLSDA确认:相同总线上的设备在收到数据后,以置SDA为低电平的方式对其进行确认。SCL1SDA器件寻址AT24系列EEPROME开始状态后需紧接一个8位器件地址,以进行应读写操作。设备寻址码的高4位为1、0、1、0 ,对于AT24C01/02,寻址码高4位后面的三位是器件寻址码,与它们的硬连线管脚相对应。

5、最低应是读写选择位,置 0时可激发读操作。AT24设备寻址码具体的格式如下:1 0 1 0 A2 A1 A0 R/WAT89C2051 芯片AT89C2051是MCS-51产品的兼容型,它具有 2k的FLASH ROM 128字节ROM 15根I/O引线、两个16 位定时/计数器、一个五向量两级中断结构、一个全双工串行口、一个精密模拟比较器以及片内振荡电路和时钟电路。 它的P1 口和P3 口是双向I/O 口,其中、和带有内部上拉电阻。在AT89C2051用作输入端时,将首先向引脚写“1”而使内部 MOST截止以便引脚处于悬浮状态,从而可获得高阻抗输入。图2为通用存贮器IC卡的基本电路连接图。(

6、略)3读写操作软件当系统采用6MHzft体振荡器时所定义的I/O 口线及器件地址如下:SCL BITSDA BITDEVICEAD_W DATA B写卡器件地址DEVICEAD_R DATA B;读卡器件地址开始条件(START。当SCL为高电平时,SDA由高转为低。程序如下:SDA /L 在SCL、SDA4r 1前提下进入开始,开始完成后,SCL SDA全00START_ICCLR SCL ; SCL由高变彳氐,因为 SCL彳氐电平时才允许 SDA更改NOP;加入空指令延时以确保信号可靠NOPSETB SDA ;SDA 先高NOPNOPSETB SCL ;SCL高,起始条件建立时间大于NOP

7、NOPCLR SDA ; SDAf氐,起始条件锁定时大于 4usNOPNOPCLR SCL ; SCL低,钳住总线,准备发数据NOPRET停止条件(STOP_ICSCLSDA5;在SCL SDA高或低的前提下均可进入停止过程当SCL为高电平时,SDA由低转为高。程序如下:停止过程完成后,SCL SDA 1STOP_ICCLR SCL ;SCLNOPCLR SDANOPNOPSETB SCLNOPNOP发送结束条件的时钟信号结束总线时间大于 4us (取)SETB SDANOP结束总线保证一个终止信号和起始信号的空闲时间大于NOP ;在 SCLSDA高或低的前提下均可进入停止,停止完成后,SCL

8、 SDA4: 1RET应答确认信号(MACK_IC与非应答信号 MNACK_IC在接收方,每收到一字节后便将SDA电平拉低,程序如下:SCL二SDA;应答完成后,SCL=O, SDA=1应答确认信号MACK_IC CLR SCLMACK_ICNOPCLR SDA在第9个SLC脉冲,将SDA 0NOPNOPSEIB SCLNOPNOP保持数据时间,即 SCL为高时间大于CLR SCLNOPSETB SDA在SDA高或低的任何前提下,应答完成后,SCL=Q SDA=1NOPMNACKICRET发送非应答信号MNACK_IC: CLR SCLNOPNOP;将 SDAg 1SETB SDANOPNOP

9、SETB SCLNOPNOP;保持数据时间,即SCL为高时间大于NOPNOPNOPCLR SCLNOPSETB SDANOPRET24C16程序资源安排是:R0号节的循环指针,R2至数的计数器, R3=#器件地址,R4=字节地址,R5号节数或页面长度。R1可以留作其他循环指针,R6 R7可以留作uS级延时。写一字节数据到IC卡(WR_BYTESCLSDAD6-D0IC确认在下列程序中,参数 A表示源数据,R2表示字节位数。WR_BYTE MOV R2, #08 ; 一字节 8 位数据CLR SCLNOPNOPWR_BYTE 1 RLC A ;带进位位左移, CMOV SDA C ; SCL低电

10、平日改变 SDA的数据NOPSETB SCL ;拉高SCL =把数据发送出去NOPNOPCLR SCLNOPNOPDJNZ R2, WR_BYTE 1依次发送 A中的8位数据SETB SDANOPNOPSETB SCLCLR F0NOPNOP MOV C,SDA JC WR_BYTE2SETB F0;判断应答位WR_BYTE2:NOP CLR SCL NOPRET此子程序的主要作用是按照定义的时序,顺序左移A中一字节8位数据,并通过引脚传送出去。当一字节发完后,等待 IC卡发回的确认信号。从IC卡读一字节(RD_BYTE从IC卡中读一字节的源程序如下:SCLSDAD7D6一XZ - do3K)

11、发停止)犬态RD_BYTE MOV R2 #08SETB SDA;设备SDA为读状态CLR A ;清空A寄存器NOPNOP时钟线为高,接收数据位;读取一位数据到进位位 左移数据到;将SCL拉低,时间大于RD_BTYE1 SETB SCLNOPNOPMOV C,SDARLC ACLR SCLNOPNOPDJNZ R2 , RD_BYTE1依次读出 8位数据至U A中RET ;无应答信号利用该程序可将读出的数据存放在A中。需要注意的是:读数据的器件不是通过确认状态来应答的,而是随后产生一个停止状态。字节写入模式写单字节数据(WRITE_BYTE下列程序入口参数:R3年器件地址,R4=目的字节地址,

12、 A=待写数据出口参数:F0作应答位,F0=1有应答 占用资源:A、R4 CY F0发开始信号一写卡器件地址一写入字节地址一写入单字节数据一发停止信号 WRITE_BYTE PUSH ACC;保存 A 中的数据LCALL START_IC ;发开始信号MOV A R3 ;写入器件地址 8位LCALL WR_BYTEJNB F0,RETWRB ;无应答贝U跳转MOV A R4 ;写入字节地址8位LCALL WR_BYTEJNB F0,RETWRB ;无应答贝U跳转POP ACC;恢复待写的A中数据LCALL WR_BYTE;写入单字节数据LCALL STOP_IC ;发停止信号 RETRETWR

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

14、BYTEJNB F0, IWRNBYTEMOV A R4;写页面目的地址LCALL WR_BYTEJNB F0, IWRNBYTEWRITE_PAGE 1 MOV A R0 ;连续写(R5)个字节数据LCALL WR_BYTEJNB F0, IWRNBYTEINC R0DJNZ R5, WRITE_PAGE1 IWRNBYTE: LCALL STOP_IC ;发停止信号RETAT24C01/02可利用上述程序进行 8字节的页面写入,它的操作类似于写字节。不同的是,它无需 在第一个字节送出后以停止状态,不同在收到确认信号后,再传送7个字节的数据码,最后以停止状态来终止页面写序列。AT24C04/

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

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

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

18、 ),R5=N数据长度 出口参数:R0=目的指针开始彳t号-写出读卡器件一(R5)个立即地址的数据读出停止信号READ_BYTES LCALL START_IC;开始信号MOV A R3;写出读卡器件LCALL WR_BYTEJNB F0, BYTESRET;连续立即地址的数据读出;存放数据到目的地址读完最后一个字节数据需要发非应答信号;读完N个字节后发停止信号READ_BYS2 LCALL RD_BYTE MOV R 0A INC R0DJNZ R5, READ_BYS1 LCALL MNACK BYTESRET: LCALL STOPICRETREADBYS1 LCALL ACKIC;收到数据后发确认信号SJMP READ_BYS2其中连续读取由立

温馨提示

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

评论

0/150

提交评论