资源描述:
《Proteus仿真I2C存储器实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Proteus仿真IC存储器实验一、实验目的1、了解I2C总线的工作原理2、掌握I2C总线驱动程序的设计和调试方法3、掌握I2C总线存储器的读写方法二、实验说明1、I2C总线常识I2C总线上的每个器件均由一个存储于该器件中的唯一地址来识别,并可被用作一个发送器或接收器(视其功能而定)。AT24C02是一个2K位串行EEPROM,内部含有256个8位字节,AT24C02有一个8字节页写缓冲器,该器件通过I2C总线接口进行操作。引脚名称和功能如图1所示。图124系例I2C存储器引脚说明通过器件地址输入端A0、A1和A2可以实现将最多8个24C02器件连接到总线上。2、I2C总线协议(
2、1)只有在总线空闲时才允许启动数据传送。(2)在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允许有跳变。时钟线为高电平时,数据线的任何电平变化将被看作总线的起始或停止信号。(3)起始信号,时钟线保持高电平期间,数据线电平从高到低的跳变作为IC总线的起始信号。(4)停止信号,时钟线保持高电平期间,数据线电平从低到高的跳变作为IC总线的停止信号。IC总线时序:3、页写操作的数据帧结构根据页缓冲区的大小,页写的字节数不能超过缓冲区大小。如果在发送停止信号之前主器件发送超过缓冲区大小,地址计数器将自动翻转,先前写入的数据被覆盖。如图2所示。图2页写操作数据帧结构三、实验
3、内容先搭建一个“IC存储器实验”的仿真电路,该单片机系统功能是采用页写的方式,把器件地址为A0H的24C02器件的片内50H地址开始的8个存储单元分别写入数据“00、11、22、、、、、、77”。四、.参考硬件电路五、参考汇编程序SDAEQUP3.5;定义24c02的串行数据线SCLEQUP3.4;定义24c02的串行时钟线SNUMEQU40HSLAWEQU41HORG0000HAJMPMAINORG0040HMAIN:MOVSP,#5FHLCALLLDATAMOVSLAW,#0A0H;24c02的器件地址MOVSNUM,#9;要发送9个字节数据MOVR1,#30H;数据缓冲区的
4、首地址CALLWRNB;调用发送n个字节的子程序SJMP$LDATA:MOVR0,#30H;片内ram的地址:30H31H32H33H34H35H…..MOV@R0,#50H;存放的数据:50H00H11H22H33H44H……INCR0MOV@R0,#00HINCR0MOV@R0,#11HINCR0MOV@R0,#22HINCR0MOV@R0,#33HINCR0MOV@R0,#44HINCR0MOV@R0,#55HINCR0MOV@R0,#66HINCR0MOV@R0,#77HRET;起始信号STA:SETBSDASETBSCLNOPNOPCLRSDANOPNOPCLRSCLR
5、ET;终止信号STP:CLRSDASETBSCLNOPNOPSETBSDANOPNOPCLRSDACLRSCLRET;发应答位"0"ASK:CLRSDASETBSCLNOPNOPCLRSCLSETBSDARET;发非应答位"1"NAS:SETBSDASETBSCLNOPNOPCLRSCLCLRSDARET;应答位检查,正常应答时F0标志为0,否则F0为1ASKC:SETBSDASETBSCLCLRF0MOVC,SDAJNCCEND;应答位为1,不置位F0SETBF0CEND:CLRSCLRET;发送到24c02一个字节,预发送的数据存于A中WRB:MOVR0,#08HLOOP0:
6、RLCAMOVSDA,CNOPNOPSETBSCLNOPNOPNOPNOPCLRSCLDJNZR0,LOOP0RET;--------------------------------*;*函数名称:WRNB*;*功能描述:对E2PROM指定的页写入SNUM个字节的数据*;*调用函数:STAWRBASKCSTP*;*入口条件:SLAW--I2C器件写地址*;*R1-片内RAM发送数据缓冲区的首地址*;--------------------------------*WRNB:LCALLSTAMOVA,SLAWLCALLWRB;写器件的写地址LCALLASKCJBF0,WRNBWL
7、P:;向E2PROM写入SNUM个字节的数据MOVA,@R1LCALLWRBLCALLASKCJBF0,WRNBINCR1DJNZSNUM,WLPLCALLSTPRETEND六、思考练习题1、请说说I2C总线的优点有哪些?2、编写程序,将自己学号写入24C02地址为30H开始的存储单元。3、编写程序,将写入24C02的数据读出。