RSS

用单片机模拟I2C总线实现串行E2PROM的读写

来源: 作者: 时间:2007-06-29 Tag: 点击:

  CLR  P1.0  ;发开始信号

  MOV  A,R3  ;送器件地址

  ACALL SUBS   ;调发送单字节子程序

  MOV A,R4   ;送片内字节地址

  ACALL SUBS

  MOV P1,#0FFH

  CLR P1.0   ;再发开始信号

  MOV A,R3

  SETB ACC.0  ;发读命令

  ACALL SUBS

MORE: ACALL SUBR

  MOV @R1,A

  INC R1

  DJNZ R7,MORE

  CLR P1.0

  ACALL DELAY

  SETB P1.1

  ACALL DELAY

  SETB P1.0 ;送停止信号

  RET

SUBR: MOV  R0,#08H ;接受单字节子程序

LOOP2: SETB  P1.1

  ACALL DELAY

  MOV C,P1.0

  RLC A

  CLR P1.1

  ACALL DELAY

  DJNZ R0,LOOP2

  CJNE R7,#01H,LOW

  SETB P1.0  ;若是最后一个字节置A=1

  AJMP SETOK

LOW: CLR P1.0  ;否则置A=0

SETOK: ACALL DELAY

  SETB  P1.1

  ACALL DELAY

  CLR  P1.1

  ACALL DELAY

  SETB P1.0  ;应答毕,SDA置1

  RET

  程序中多处调用了DELAY子程序(仅两条NOP指令),这是为了满足I2C总线上数据传送速率的要求,只有当SDA数据线上的数据稳定下来之后才能进行读写(即SCL线发出正脉冲)。另外,在读最后一数据字节时,置应答信号为“1”,表示读操作即将完成。

小结

  在测量仪器中使用E2PROM保存数据,这是仪器具有校准、标定功能的基本条件。8031单片机与串行E2PROM的结合满足了这一要求,这种方法电路简单、编程方便。E2PROM读写数据安全可靠保证了在测量过程中数据稳定。我们在研制数种测量仪器中均使用此法,效果很好。


1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
教程下载