24co2的读写
[求助]24c02的读写问题
我的24C02,1,2,3,4,7脚接地,8脚接VCC,5,6脚通过10k电阻接vcc.。 5 脚接89C2051的P1.3,6脚接其的p1.4。我想对24C02进行读写,但每次读出来的结果总为零。因为,我的P1接口上都接有LED,并且低电平时LED发光,单片机源程序如下,我不知错了哪里,敬请哪位高手指点迷津,不胜感激。
SCL EQU P1.4;时钟
SDA EQU P1.3;数据线
LED1 EQU P1.7
LED2 EQU P1.6
CPL P1.7;延时杳看单片机是否工作
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
MOV P1,#0FFH
CALL START24C02
MOV A,#10100000B
CALL W24C02
CALL ACK24C02
MOV A,#06H
CALL W24C02
CALL ACK24C02
MOV A,#10111111B
CALL W24C02
CALL ACK24C02
CALL STOP24C02
CALL DEPLAY
SETB P1.6
SETB P1.7
CALL START24C02
MOV A,#10100001B
CALL W24C02
CALL ACK24C02
MOV A,#06H
CALL W24C02
CLR SDA
CALL ACK24C02
CALL R24C02
CALL ACK24C02
CALL STOP24C02
MOV P1,A
MAINLOOP:CPL P3.5;杳看单片是否读写完毕
CALL DEPLAY
SJMP MAINLOOP
R24C02:MOV R7,#8;读24c02
RLOOP:SETB SCL
CALL DE50US
MOV C,SDA
RLC A
CLR SCL
CALL DE50US
DJNZ R7,RLOOP
RET
ACK24C02: CLR SDA;应答
CALL DE50US
SETB SCL
CALL DE50US
MOV C,SDA
ACKLOOP: JC $
CLR SCL
CALL DE50US
RET
W24C02: MOV R7,#8;写24c01
WLOOP: RLC A
MOV SDA,C
SETB SCL
CALL DE50US
CLR SCL
CALL DE50US
DJNZ R7,WLOOP
RET
START24C02:SETB SDA; 开始24c02操作
SETB SCL
CALL DE50US
CLR SDA
CALL DE50US
CLR SCL
CALL DE50US
RET
STOP24C02: CLR SDA;停止24c02操作
CALL DE50US
SETB SCL
CALL DE50US
SETB SDA
RET
DEPLAY: MOV R0,#00H;延时
DE1: MOV R1,#00H
DJNZ R1,$
DJNZ R0,DE1
RET
DE50US: MOV R0,#100;延时
DJNZ R0,$
RET
end
发表时间:2005年11月22日21:24:30