📄 lcd1.bak
字号:
LJMP KEYCHK0
READDW: DEC @R0
MOV A,@R0
CLR CY
RLC A
MOV 40H,#40H ;首字符
MOV 41H,#00
MOV 42H,A
INC @R0
MOV MTD, #41H
MOV R5,MTD
MOV SLA,#SLAW0
MOV NUMBYT,#2
LCALL WRNBYT
MOV MRD,#41H
MOV R5,MRD
MOV SLA,#SLAR0 ;读记录地址
MOV NUMBYT,#2
LCALL RDNBYT
MOV MTD, #41H
MOV R5,MTD
MOV SLA,#SLAW0
MOV NUMBYT,#2
LCALL WRNBYT
MOV MRD,#43H
MOV R5,MRD
MOV SLA,#SLAR0 ;读数据
MOV NUMBYT,#42H ;#82H
LCALL RDNBYT
LCALL CLEARSCR
NOP
NOP
LCALL WRITEDATA
NOP
;SETB EA
LJMP RET_TTM0
KEYCLR: CJNE A,#02H,KEYDEL ;清屏
LCALL CLEARSCR
CLR F_PAGE
;SETB EA
RET_KEY: LJMP RET_TTM0
KEYDEL: CJNE A,#01H,RET_KEY ;删除
JNB F_PAGE,DELRET
NOP
MOV A,38H
CJNE A,#0,DELDATA
DELRET: LCALL CLEARSCR
LJMP RET_TTM0
DELDATA: MOV 41H,#00
MOV 42H,#00H
MOV MTD, #41H
MOV R5,MTD
MOV SLA,#SLAW0
MOV NUMBYT,#2
LCALL WRNBYT
MOV MRD,#0B0H
MOV R5,MRD
MOV SLA,#SLAR0 ;读帧地址
MOV NUMBYT,#40H
LCALL RDNBYT
MOV R5,39H
LCALL DEC_MUL2
MOV A,R6
ADD A,MRD ;得出该帧地址
MOV R0,A
MOV R1,#0F2H ;保存空白的空间
MOV A,@R0
MOV @R1,A
INC R1
INC R0
MOV A,@R0
MOV @R1,A
DEC R0
MOV A,38H
SUBB A,39H
MOV R2,A
LCALL LP_PLACE
;写入所有帧地址
MOV R0,#0AEH
MOV @R0,#0
INC R0
MOV @R0,#0
MOV MTD, #0AEH
MOV R5,MTD
MOV SLA,#SLAW0
MOV NUMBYT,#42H
LCALL RSTDOG
LCALL WRNBYT
;读出帧地址 tst
MOV 41H,#00
MOV 42H,#00H
MOV MTD, #41H
MOV R5,MTD
MOV SLA,#SLAW0
MOV NUMBYT,#2
LCALL WRNBYT
MOV MRD,#0B0H
MOV R5,MRD
MOV SLA,#SLAR0 ;读帧地址
MOV NUMBYT,#40H
LCALL RDNBYT
;调整EEPROM
MOV MTD,#41H
MOV MRD,#0B0H
MOV R5,MTD
MOV 41H,#00
MOV 42H,#40H
MOV SLA,#SLAW0
MOV NUMBYT,#2
LCALL WRNBYT
MOV SLA,#SLAR0
MOV NUMBYT,#42H
MOV R5,MRD
LCALL RDNBYT
DEC 38H
MOV R0,#0E8H
MOV @R0,38H
MOV R0,#0B0H
MOV A,@R0
MOV R5,A ;空白空间地址
LCALL MUL2
MOV A,R6
INC A
ADD A,#0B0H
MOV R0,A
MOV R1,#0F2H
MOV A,@R1
MOV @R0,A
INC R0
INC R1
MOV A,@R1
MOV @R0,A
MOV R0,#0B0H
INC @R0
MOV MTD, #0AEH
MOV R5,MTD
MOV R0,#0AEH
MOV @R0,#0
INC R0
MOV @R0,#40H
MOV SLA,#SLAW0
MOV NUMBYT,#42H
LCALL RSTDOG
LCALL WRNBYT
;显示记录
INC 38H
MOV A,38H
DEC 38H
CJNE A,39H,TONEWREC
DEC 39H
TONEWREC: MOV A,39H
CJNE A,#0,NEWREC1
LCALL CLEARSCR
LJMP RET_TTM0
NEWREC1: MOV R5,39H
LCALL DEC_MUL2
MOV 40H,#40H ;首字符
MOV 41H,#00
MOV 42H,R6
MOV MTD, #41H
MOV R5,MTD
MOV SLA,#SLAW0
MOV NUMBYT,#2
LCALL WRNBYT
MOV MRD,#41H
MOV R5,MRD
MOV SLA,#SLAR0 ;读记录地址
MOV NUMBYT,#2
LCALL RDNBYT
MOV MTD, #41H
MOV R5,MTD
MOV SLA,#SLAW0
MOV NUMBYT,#2
LCALL WRNBYT
MOV MRD,#43H
MOV R5,MRD
MOV SLA,#SLAR0 ;读数据
MOV NUMBYT,#42 ;#82H
LCALL RDNBYT
LCALL CLEARSCR
NOP
NOP
LCALL WRITEDATA
NOP
;SETB EA
RET_TTM0: SETB EA
POP 29H
MOV R0,29H
POP 29H
MOV R1,29H
POP PSW
POP ACC
RETI
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;取得按键状态
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
KEYSTATE: MOV A,P0
SWAP A
CPL A
ANL A,#0FH
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;延时10 ms
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
DELAY10: LCALL RSTDOG
MOV R7,#100
D1: MOV R6,#90
DJNZ R6,$
DJNZ R7,D1
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;启动 IIC总线
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
STA: SETB VSDA
;NOP
SETB VSCL
NOP
NOP
NOP
NOP
CLR VSDA
NOP
NOP
NOP
NOP
CLR VSCL
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;停止IIC数据总线传送
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
STOP: CLR VSDA
;NOP
;NOP
SETB VSCL
NOP
NOP
NOP
NOP
SETB VSDA
NOP
NOP
NOP
NOP
NOP
CLR VSDA
NOP
NOP
CLR VSCL
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;发送应答位
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
MACK: CLR VSDA
;NOP
SETB VSCL
NOP
NOP
NOP
NOP
CLR VSCL
NOP
NOP
SETB VSDA
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;发送非应答位
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
MNACK: LCALL RSTDOG
SETB VSDA
NOP
NOP
SETB VSCL
NOP
NOP
NOP
NOP
CLR VSCL
NOP
NOP
CLR VSDA
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;应答位检查
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
CACK: LCALL RSTDOG
SETB VSDA
NOP
NOP
SETB VSCL
NOP
NOP
CLR F0
MOV C,VSDA
JNC CEND ;C=0转
SETB F0
CEND: NOP
CLR VSCL
NOP
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;向VSDA线上发送一个数据字节
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
WRBYT: LCALL RSTDOG
MOV R0,#08H
WLP: RLC A
JC WR1
AJMP WR0
WLP1: DJNZ R0,WLP
RET
WR1: SETB VSDA
NOP
NOP
NOP
NOP
SETB VSCL
NOP
NOP
NOP
NOP
NOP
NOP
CLR VSCL
NOP
NOP
CLR VSDA
AJMP WLP1
WR0: CLR VSDA
NOP
NOP
NOP
NOP
SETB VSCL
NOP
NOP
NOP
NOP
NOP
NOP
CLR VSCL
AJMP WLP1
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;从VSDA线上读取一个字节数据
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
RDBYT: MOV R0,#08H
RLP: ;LCALL RSTDOG
SETB VSDA
NOP
NOP
NOP
NOP
NOP
NOP
SETB VSCL
MOV C,VSDA
MOV A,R2
RLC A
MOV R2,A
CLR VSCL
DJNZ R0,RLP
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;虚拟IIC总线发送N个字节数据
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
WRNBYT: LCALL RSTDOG
MOV R3,NUMBYT ;虚拟IIC总线发送N个字节数据
LCALL STA
MOV A,SLA
LCALL WRBYT
LCALL CACK
JB F0,WRNBYT
MOV A,R5
MOV R1,A
WRDA: MOV A,@R1
LCALL WRBYT
LCALL CACK
JB F0,WRNBYT
INC R1
DJNZ R3,WRDA
LCALL STOP
LCALL DELAY10
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;模拟IIC总线接收N个字节数据
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
RDNBYT: LCALL RSTDOG
MOV R3,NUMBYT ;模拟IIC总线接收N个字节数据
LCALL STA
MOV A,SLA
LCALL WRBYT
LCALL CACK
JB F0,RDNBYT
RDN: MOV A,R5
MOV R1,A
RDN1: LCALL RDBYT
MOV @R1,A
DJNZ R3,ACK
LCALL MNACK
LCALL STOP
LCALL DELAY10
RET
ACK: LCALL MACK
INC R1
SJMP RDN1
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;看门狗复位
;################################
RSTDOG: NOP
NOP
NOP
CLR FDOG
NOP
NOP
NOP
NOP
NOP
NOP
SETB FDOG
RET
;################################
;清屏
;@@@@@@@@@@@@@@@@@@@@@@@@@@
CLEARSCR: MOV A,#0F4H
LCALL SENDCMD
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -