SCL BIT P1.7;定义24C02的串行时钟线 ClimberWin 2005.8.4
SDA BIT P1.6;定义24C02的串行数据线
ORG 00H
START:
MOV R1,#20H ; 数据保存地址
MOV R7,#120 ; 取数据的个数
;;**********************************
CALL FIRST ;开始命令
MOV A,#0A0H ;写器件地址
CALL SUBS
;;**********************************
MOV A,#00h ;所要读的器件的地址
CALL SUBS
;;**********************************
CALL FIRST ;开始命令
MOV A,#0A1H ;开始读数据
CALL SUBS
;;**********************************
WIN: CALL SUBR
MOV @R1,A
INC R1
DJNZ R7,WIN
CLR SDA
CALL DELAY
SETB SCL
CALL DELAY
SETB SDA
JMP $
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SUBR: MOV R0,#08H
LOOP2: SETB SCL
CALL DELAY
MOV C,SDA
RLC A
CLR SCL
CALL DELAY
DJNZ R0,LOOP2
CJNE R7,#00h,LOW1 ;改
SETB SDA
JMP CLIMBER
LOW1: CLR SDA
CLIMBER:CALL DELAY
SETB SCL
CALL DELAY
CLR SCL
CALL DELAY
SETB SDA
RET
SUBS: MOV R5,#08H
LOOP: CLR SCL
RLC A
MOV SDA ,C
NOP
SETB SCL
CALL DELAY
DJNZ R5,LOOP
CLR SCL
CALL DELAY
SETB SCL
REP: MOV C, SDA
JC REP
CLR SCL
RET
DELAY: NOP
NOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FIRST: SETB SDA
SETB SCL
CALL DELAY
CLR SDA
CALL DELAY
CLR SCL ;开始传数据
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END