ORG 0000H
SCL BIT P1.0;定义24C02的串行时钟线
SDA BIT P1.1;定义24C02的串行数据线
LJMP START
START:
LCALL STAR;调用
MOV R2,#08H;一个数据有8位
MOV DPTR,#0600H ;定义源数据的位置
LOOP:
MOV A,#00H
MOVC A,@A+DPTR
LCALL SDATA
LCALL ACK
JC LOOP
INC DPTR
DJNZ R2,LOOP
LCALL STOP;调用停止子程序
STAR:
SETB SDA
SETB SCL
NOP
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
CLR SCL
RET
SDATA: MOV R0,#10H
LOOP0:
RLC A
MOV SDA,C
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
CLR SCL
DJNZ R0,LOOP0
RET
ACK:
SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
MOV C,SDA
CLR SCL
RET
STOP:
CLR SDA
NOP
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
NOP
RET
MAIN1:
ORG 0060H
MOV R3,#0A0H;(命令1010+器件3位地址+读/写。 器件地址一个芯片,是000)
MOV R4,#00H;置片内字节地址
MOV R1,#71H;置欲写数据存放地址指针
MOV R7,#01H;置连续写字节数n
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_1
SETB P1.0;若是最后一个字节置A=1
AJMP SETOK
LOW_1: CLR P1.0;否则置A=0
SETOK: ACALL DELAY
SETB P1.1
ACALL DELAY
CLR P1.1
ACALL DELAY
SETB P1.0;应答毕,SDA置1
RET
LCALL DA_
DA_:
MOV A,P0
MOV DPTR,#0FEFFH
MOVX @DPTR,A
RET
MAIN:
ORG 001BH
LJMP TIINT
ORG 0030H
LCALL INIT
;初始化子程序:
INIT:
CLR RS0
CLR RS1
MOV R0,#10H
MOV R1,#00H
MOV P1,#0FFH
CLR TR1
MOV TMOD,#19H
MOV TL1,#19H
MOV TH1,#0FCH
SETB TR1
SETB ET1
SETB EA
RET
;定时扫描子程序:
TIINT:
SETB RS0
CLR EA
CLR TR1
MOV A,#1EH
ADD A,TL1
MOV TL1,A
MOV A,#0FCH
ADDC A,TH1
MOV TH1,A
SETB TR1
SETB EA
TIINT1:
CJNE R1,#08H,TIINT2
MOV 10H,20H
MOV 11H,21H
MOV 12H,22H
MOV 13H,23H
MOV 14H,24H
MOV 15H,25H
MOV 16H,26H
MOV 17H,27H
TIINT2:
CJNE R1,#08H,TIINT3
MOV A,@R0
SJMP TIINT4
TIINT3:
MOV A,@R0
ADD A,#15
MOVC A,@A+PC
TIINT4:
LCALL SENDLED
INC R0
INC R1
TIINTE:
CLR RS0
DB 03H,9FH,25H,0DH,99H
DB 49H,41H,1FH,01H,09H
;显示子程序:
SENDLED:
CLR P1.3
MOV R2,#8
SLED0:
RRC A
JNC SLED1
SETB P1.2
<span lang="EN-US"><font face="Calibri"><font size="3"><span style="mso-tab-count: 2"> &nb