📄 ex5120.asm
字号:
ORG 0000H
SCL EQU 0B0H ;IC2401,BYTE-WR
SDA EQU 0B1H
;-------------------------------------------------------
START: MOV SP,#53H
JB P1.0,$
LCALL DL10MS
JB P1.0,START
LCALL DL10MS
MOV R0,#00H ;R0 IS RD ADDRESS
MOV DPTR,#4000H ;[4000H----407FH]=55,56,57,....................
CONR1: PUSH 00H
CPL P1.2 ;RD-LED
LCALL RD2401_1W
CJNE R5,#00H,DISPERR
POP 00H
MOVX @DPTR,A
INC DPL
INC R0
CJNE R0,#7FH,CONR1
SETB P1.2
CONDISP:LCALL DISP
SJMP CONDISP
DISPERR:
LCALL DISP1
SJMP DISPERR
DISP1: MOV 7EH,#01H
MOV 7DH,#0CH
MOV 7CH,#10H
MOV 7BH,#0EH
MOV 7AH,#14H
MOV 79H,#14H
AJMP DISP2
DL10MS: MOV R7,#0AH
DL0: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,DL0
RET
DISP: MOV 7EH,#01H
MOV 7DH,#0CH
MOV 7CH,#09H
MOV 7BH,#00H
MOV 7AH,#00H
MOV 79H,#0DH
DISP2: MOV R0,#7EH
MOV R2,#20H
MOV R3,#00H
MOV DPTR,#TAB
LS2: MOV A,@R0
MOVC A,@A+DPTR
MOV R1,#22H
MOVX @R1,A
MOV A,R2
DEC R1
MOVX @R1,A
DEC R0
DJNZ R3,$
CLR C
RRC A
MOV R2,A
JNZ LS2
INC R1
MOV A,#0FFH
MOVX @R1,A
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H,8FH
;****************************************************************************
;--------------------------------------------------
DY: MOV R7,#35H
DJNZ R7,$
RET
START2401:
SETB SDA
LCALL DY
SETB SCL
LCALL DY
CLR SDA
LCALL DY
CLR SCL
LCALL DY
RET
STOP2401:
CLR SCL ;
LCALL DY
CLR SDA
LCALL DY
SETB SCL
LCALL DY
SETB SDA
LCALL DY
RET
;---------------------------------------------------------
C_A2401: ;R0 ADDR
LCALL STOP2401
LCALL DY
LCALL START2401
MOV A,#0A0H ;WR2401
MOV R5,#08H
CONT2401:
CLR SCL
RLC A
JNC CA_CLR_SDA
SETB SDA
SJMP CA_CONT_NEXT
CA_CLR_SDA:
CLR SDA
CA_CONT_NEXT:
LCALL DY
SETB SCL
LCALL DY
DJNZ R5,CONT2401
CLR SCL
LCALL DY
SETB SCL
LCALL DY
JB SDA,C_A_ERROR
MOV R5,#08H
MOV A,R0 ;R0 INPUT ADDR
ADDR2401:
CLR SCL
RLC A
JNC AD_CLR_SDA
SETB SDA
SJMP AD_CONT_NEXT
AD_CLR_SDA:
CLR SDA
AD_CONT_NEXT:
LCALL DY
SETB SCL
LCALL DY
DJNZ R5,ADDR2401
CLR SCL
LCALL DY
SETB SCL
LCALL DY
JB SDA,C_A_ERROR
LCALL DY
CLR SCL
LCALL DY
MOV R5,#00H
RET
C_A_ERROR:
MOV R5,#5AH
RET
;-----------------------------------------------------------------------------------------
RD2401_1W: ;SUEI JI RD ,R0 INPUT ADDR,OUTPUT WORD,IN ACC
LCALL C_A2401 ;KONG WR,SET FIRST ADDRESS
CJNE R5,#00H,RD2401_ERROR
LCALL START2401 ;START
MOV R5,#08H ;DEVICE ADDERS
MOV A,#0A1H
RD_CONT2401:
CLR SCL
RLC A
JNC RD24_CLR_SDA
SETB SDA
SJMP RD_CONT2401_NEXT
RD24_CLR_SDA:
CLR SDA
RD_CONT2401_NEXT:
LCALL DY
SETB SCL
LCALL DY
DJNZ R5,RD_CONT2401
CLR SCL
LCALL DY
SETB SCL
JNB SDA,RD_CONT_OK ;ACK
LCALL STOP2401
SJMP RD2401_ERROR
RD_CONT_OK: ;READ DATA
CLR SCL
MOV R5,#08H
CLR A
RD24_BIT:
SETB SCL
LCALL DY
JNB SDA,RD24_0_DATA
SETB C
SJMP RD24_NEXT_BIT
RD24_0_DATA:
CLR C
RD24_NEXT_BIT:
CLR SCL
LCALL DY
RLC A
DJNZ R5,RD24_BIT
SETB SCL
LCALL DY
CLR SCL
LCALL DY
LCALL STOP2401
MOV R5,#00H
RET
RD2401_ERROR: ;OUTPUT IS IN ACC
MOV R5,#5AH
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -