您当前的位置:五五电子网电子知识单片机-工控设备51单片机AT24C02串行E2PROM的读写 正文
AT24C02串行E2PROM的读写

AT24C02串行E2PROM的读写

点击数:7214 次   录入时间:03-04 11:54:21   整理:http://www.55dianzi.com   51单片机
  DJNZ  R7,AGAIN;连续写n个字节
  CLR    P1.0  ;SDA置0, 准备送停止信号
  ACALL DELAY ;延时以满足传输速率要求
  SETB   P1.1  ;发停止信号
  ACALL DELAY
  SETB   P1.0
  RET

SUBS: MOV R0,#08H ;发送单字节子程序
LOOP: CLR P1.1
  RLC  A
  MOV  P1.0,C
  NOP
  SETB P1.1
  ACALL DELAY
  DJNZ R0,LOOP ;循环8次送8个bit
  CLR  P1.1
  ACALL DELAY
  SETB P1.1
REP: MOV C,P1.0
  JC  REP  ;判应答到否,未到则等待
  CLR  P1.1
  RET

DELAY: NOP
  NOP
  RET

;读串行E2PROM子程序EEPR
;(R1)=欲读数据存放地址指针
;; R3=10100001(命令1010+器件3位地址+读/写。 器件地址一个芯片,是000)
;(R4)=片内字节地址
;(R7)=连续读字节数

EEPR: MOV P1,#0FFH
  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”,表示读操作即将完成。



上一页  [1] [2] 


本文关键字:暂无联系方式51单片机单片机-工控设备 - 51单片机

上一篇:8051单片机学习