Proteus仿真I2C存储器实验_精品文档Word格式.doc
《Proteus仿真I2C存储器实验_精品文档Word格式.doc》由会员分享,可在线阅读,更多相关《Proteus仿真I2C存储器实验_精品文档Word格式.doc(6页珍藏版)》请在冰豆网上搜索。
(2)在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允
许有跳变。
时钟线为高电平时,数据线的任何电平变化将被看作总线的起始或停止
信号。
(3)起始信号,时钟线保持高电平期间,数据线电平从高到低的跳变作为IC总线的起始信号。
(4)停止信号,时钟线保持高电平期间,数据线电平从低到高的跳变作为IC总线的停止信号。
IC总线时序:
3、页写操作的数据帧结构
根据页缓冲区的大小,页写的字节数不能超过缓冲区大小。
如果在发送停止信号之前主器件发送超过缓冲区大小,地址计数器将自动翻转,先前写入的数据被覆盖。
如图2所示。
图2页写操作数据帧结构
三、实验内容
先搭建一个“IC存储器实验”的仿真电路,该单片机系统功能是采用页写的方式,把器件地址为A0H的24C02器件的片内50H地址开始的8个存储单元分别写入数据“00、11、22、、、、、、77”。
四、.参考硬件电路
五、参考汇编程序
SDAEQUP3.5 ;
定义24c02的串行数据线
SCLEQUP3.4;
定义24c02的串行时钟线
SNUMEQU40H
SLAWEQU41H
ORG0000H
AJMPMAIN
ORG0040H
MAIN:
MOVSP,#5FH
LCALLLDATA
MOVSLAW,#0A0H;
24c02的器件地址
MOVSNUM,#9 ;
要发送9个字节数据
MOVR1,#30H ;
数据缓冲区的首地址
CALLWRNB ;
调用发送n个字节的子程序
SJMP$
LDATA:
MOVR0,#30H ;
片内ram的地址:
30H31H32H33H34H35H…..
MOV@R0,#50H ;
存放的数据:
50H00H11H22H33H44H……
INCR0
MOV@R0,#00H
MOV@R0,#11H
MOV@R0,#22H
MOV@R0,#33H
MOV@R0,#44H
MOV@R0,#55H
MOV@R0,#66H
MOV@R0,#77H
RET
;
起始信号
STA:
SETBSDA
SETBSCL
NOP
CLRSDA
CLRSCL
RET
终止信号
STP:
CLRSDA
SETBSDA
CLRSDA
发应答位"
0"
ASK:
发非应答位"
1"
NAS:
应答位检查,正常应答时F0标志为0,否则F0为1
ASKC:
SETBSDA
SETBSCL
CLRF0
MOVC,SDA
JNCCEND;
应答位为1,不置位F0
SETBF0
CEND:
CLRSCL
RET
发送到24c02一个字节,预发送的数据存于A中
WRB:
MOVR0,#08H
LOOP0:
RLCA
MOVSDA,C
NOP
SETBSCL
CLRSCL
DJNZR0,LOOP0
RET
--------------------------------*
*函数名称:
WRNB*
*功能描述:
对E2PROM指定的页写入SNUM个字节的数据*
*调用函数:
STAWRBASKCSTP*
*入口条件:
SLAW--I2C器件写地址*
*R1-片内RAM发送数据缓冲区的首地址*
WRNB:
LCALLSTA
MOVA,SLAW
LCALLWRB;
写器件的写地址
LCALLASKC
JBF0,WRNB
WLP:
;
向E2PROM写入SNUM个字节的数据
MOVA,@R1
LCALLWRB
INCR1
DJNZSNUM,WLP
LCALLSTP
END
六、思考练习题
1、请说说I2C总线的优点有哪些?
2、编写程序,将自己学号写入24C02地址为30H开始的存储单元。
3、编写程序,将写入24C02的数据读出。