📄 24lc64.asm
字号:
MAIN: MOV 60H,#00H
MOV 61H,#00H
MOV 62H,#00H
MOV 63H,#00H
MOV 34H,#07H
MOV 35H,#77H
MOV R5,#02
MOV R0,#34H
MOV DPTR,#0000H
NOP
NOP
LCALL WRITE
LOOP:MOV R0,#60H;显示缓冲区首地址
LCALL DISPLAY
JB P2.0,LOOP
LOOP1:MOV R0,#60H;显示缓冲区首地址
LCALL DISPLAY
JNB P2.0,LOOP1
MOV R5,#02
MOV R0,#30H
MOV DPTR,#0000H
NOP
NOP
LCALL READ;读出
MOV A,30H
MOV R6,A;高字节移出
MOV A,31H
MOV R7,A;低字节移出
LCALL HB2
MOV 32H,R4;MBCD
MOV 33H,R5;LBCD
MOV R2,#02H;N个待分离的BCD
MOV R0,#60H;分离后BCD首地址
MOV R1,#32H;待分离BCD首地址
LCALL CBCD;分离压缩的BCD码
LOOP3:MOV R0,#60H;显示缓冲区首地址
LCALL DISPLAY
LJMP LOOP3
;===================================
DISPLAY:MOV R4,#04H;位数选择
MOV R5,#00H
DISP:MOV A,R5
SWAP A
ORL A,@R0
MOV P0,A
ACALL DELAY1
INC R5
INC R0
DJNZ R4,DISP
RET
DELAY1:MOV R6,#10H
LOOP11:MOV R7,#38H
LOOP2:DJNZ R7,LOOP2
DJNZ R6,LOOP11
RET
;=============================
HB2:CLR A
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H
HB3:MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A
DJNZ R2,HB3
RET
;==============================
CBCD:
CL:MOV A,@R1 ;分离后将占2N个单元
MOV B,A
ANL A,#0F0H
SWAP A
MOV 4CH,A
MOV A,B
ANL A,#0FH
MOV 4DH,A
MOV @R0,4CH
INC R0
MOV @R0,4DH
INC R0
INC R1
DJNZ R2,CL
RET
;================================
;==============================;写24LC65
WRITE:SETB P1.4
NOP
NOP
NOP
NOP
SETB P1.3 ;启动I2C总线
W1: MOV A,#0A0H
NOP
NOP
NOP
NOP
CLR P1.3
NOP
NOP
NOP
NOP
SETB P1.3
NOP
NOP
NOP
NOP
CLR P1.4
LCALL WRITE8
SETB P1.3
MOV A,DPH
ANL A,#1FH
LCALL WRITE8
SETB P1.3
MOV A,DPL
LCALL WRITE8
SETB P1.3
MOV A,@R0
LCALL WRITE8
SETB P1.3
NOP
NOP
NOP
NOP
CLR P1.3
NOP
NOP
NOP
NOP
SETB P1.3
NOP
NOP
NOP
NOP
SETB P1.4
INC DPTR
INC R0
MOV R1,#10H
W9: MOV R2,#0FAH
W10: DJNZ R2,W10
DJNZ R1,W9
DJNZ R5,W1
SETB P1.3
RET
;========================读24LC65
READ:SETB P1.4
NOP
NOP
NOP
NOP
SETB P1.3
ER1: NOP
NOP
NOP
NOP
MOV A,#0A0H
CLR P1.3
NOP
NOP
NOP
NOP
SETB P1.3
NOP
NOP
NOP
NOP
CLR P1.4
LCALL WRITE8
SETB P1.3
MOV A,DPH
ANL A,#1FH
LCALL WRITE8
SETB P1.3
MOV A,DPL
LCALL WRITE8
SETB P1.3
NOP
NOP
NOP
NOP
CLR P1.3
NOP
NOP
NOP
NOP
SETB P1.4
NOP
NOP
NOP
NOP
SETB P1.3
NOP
NOP
NOP
NOP
CLR P1.4
MOV A,#0A1H
LCALL WRITE8
SETB P1.3
LCALL READ8
CLR P1.3
NOP
NOP
NOP
NOP
CLR P1.4
NOP
NOP
NOP
NOP
SETB P1.3
NOP
NOP
NOP
NOP
SETB P1.4
INC DPTR
INC R0
DJNZ R5,ER1
SETB P1.3
RET
;========================;写24LC65的8字节子程序
WRITE8: MOV R3,#08H
ER13: CLR P1.3
NOP
NOP
NOP
NOP
RLC A
MOV P1.4,C
SETB P1.3
NOP
NOP
NOP
NOP
DJNZ R3,ER13
CLR P1.3
NOP
NOP
NOP
NOP
CLR P1.4
RET
;============================;读24LC65的8字节子程序
READ8: MOV R3,#08H
ER11: CLR P1.3
NOP
NOP
NOP
NOP
SETB P1.4
NOP
NOP
NOP
NOP
SETB P1.3
NOP
NOP
NOP
NOP
MOV C,P1.4
RLC A
DJNZ R3,ER11
; ADD A,#30H
MOV @R0,A ;读出的数据存R0地址
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -