发表于:2006/11/28 18:27:00
#0楼
WRITE:NOP
MOV R2,#03H;一次写字节个数
MOV DPTR,#TAA;定义源数据的位置
START:LCALL STAR
MOV A,#0A0H;发控制字
LCALL SDATA
LCALL ACK
JB F0,START
MOV A,#00H;发送地址
LCALL SDATA
LCALL ACK
JB F0,START
LOOP: MOV A,#00H
MOVC A,@A+DPTR
LCALL SDATA
LCALL ACK
JB F0,LOOP
INC DPTR
DJNZ R2,LOOP
LCALL STOP;调用停止子程序
RET
STAR: SETB SDA
SETB SCL
NOP
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
NOP
CLR SCL
RET
SDATA:MOV R0,#08H
LOOP0:SETB SCL
NOP
NOP
RLC A
MOV SDA,C
NOP
NOP
NOP
NOP
CLR SCL
DJNZ R0,LOOP0
RET
ACK: SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
CLR F0
MOV C,SDA
JNC GENG
SETB F0
GENG: CLR SCL
RET
STOP: CLR SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
NOP
CLR SDA
CLR SCL
RET
READ: NOP
MOV R2,#03H
MOV DPTR,#30H
START1:LCALL STAR
MOV A,#0A1H
LCALL SDATA
LCALL ACK
JB F0,START1
MOV A,#00H
LCALL SDATA
LCALL ACK
JB F0,START1
LCALL STAR
LO1P: LCALL SDATA1
LCALL ACK
JB F0,LO1P
MOVX @DPTR,A
INC DPTR
DJNZ R2,LO1P
LCALL STOP
RET
SDATA1:MOV R0,#08H
LOOP1:SETB SCL
NOP
NOP
MOV C,SDA
RLC A
NOP
NOP
NOP
NOP
CLR SCL
DJNZ R0,LOOP1
RET
MOV R2,#03H;一次写字节个数
MOV DPTR,#TAA;定义源数据的位置
START:LCALL STAR
MOV A,#0A0H;发控制字
LCALL SDATA
LCALL ACK
JB F0,START
MOV A,#00H;发送地址
LCALL SDATA
LCALL ACK
JB F0,START
LOOP: MOV A,#00H
MOVC A,@A+DPTR
LCALL SDATA
LCALL ACK
JB F0,LOOP
INC DPTR
DJNZ R2,LOOP
LCALL STOP;调用停止子程序
RET
STAR: SETB SDA
SETB SCL
NOP
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
NOP
CLR SCL
RET
SDATA:MOV R0,#08H
LOOP0:SETB SCL
NOP
NOP
RLC A
MOV SDA,C
NOP
NOP
NOP
NOP
CLR SCL
DJNZ R0,LOOP0
RET
ACK: SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
CLR F0
MOV C,SDA
JNC GENG
SETB F0
GENG: CLR SCL
RET
STOP: CLR SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
NOP
CLR SDA
CLR SCL
RET
READ: NOP
MOV R2,#03H
MOV DPTR,#30H
START1:LCALL STAR
MOV A,#0A1H
LCALL SDATA
LCALL ACK
JB F0,START1
MOV A,#00H
LCALL SDATA
LCALL ACK
JB F0,START1
LCALL STAR
LO1P: LCALL SDATA1
LCALL ACK
JB F0,LO1P
MOVX @DPTR,A
INC DPTR
DJNZ R2,LO1P
LCALL STOP
RET
SDATA1:MOV R0,#08H
LOOP1:SETB SCL
NOP
NOP
MOV C,SDA
RLC A
NOP
NOP
NOP
NOP
CLR SCL
DJNZ R0,LOOP1
RET
[此贴子已经被作者于2006-11-28 19:21:32编辑过]