📄 键显调试1.asm
字号:
RS EQu p2.0
CS8279 EQU P2.1
E_LCD EQU P2.2
RW EQU P3.6
DATAPORT EQU P0
COM EQU 20H
DAT EQU 21H
FLAG EQU 22H
SETTEMP1 EQU 23H
SETTEMP2 EQU 24H
SETTEMP3 EQU 25H
TEMP1 EQU 26H
TEMP2 EQU 27H
TEMP3 EQU 28H
TEMP4 EQU 29H
SECOND1 EQU 30H
SECOND2 EQU 31H
MINUTE1 EQU 32H
MINUTE2 EQU 33H
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXT0
ORG 000BH
ORG 0100H
MAIN: CLR EA
MOV SP,#60H
MOV COM,#02H
CALL WRI8279
MOV COM,#34H
CALL WRI8279
MOV COM,#0DFH
CALL WRI8279
MOV COM,#01H
ACALL LcdWRI
LCALL DELAY
MOV COM,#38H
ACALL LcdWRI
LCALL DELAY
MOV COM,#0CH
ACALL LcdWRI
LCALL DELAY
MOV COM,#06H
ACALL LcdWRI
LCALL DELAY
MOV COM,#01H
ACALL LcdWRI
LCALL DELAY
MOV COM,#02H
ACALL LcdWRI
MOV FLAG,#00H
MOV TEMP1,#30H
MOV TEMP2,#30H
MOV TEMP3,#30H
MOV TEMP4,#30H
MOV SETTEMP1,#30H
MOV SETTEMP2,#30H
MOV SETTEMP3,#30H
MOV SECOND1,#30H
MOV SECOND2,#30H
MOV MINUTE1,#30H
MOV MINUTE2,#30H
MOV IE,#81H
SETB IT0
CALL DISPAGE
CALL DISPSETTEMP
JMP $
;-----------------------------------初始化
;----------------------------------8279写入命令子程
WRI8279:PUSH ACC
CLR E_LCD
MOV DPTR,#00FFH
MOV A,COM
MOVX @DPTR,A
CALL DELAY
SETB CS8279
POP ACC
RET
;---------------------------------8279读取数据子程
RDD8279:PUSH ACC
CLR E_LCD
MOV DPTR,#00FFH
MOV A,#40H
MOVX @DPTR,A
CALL DELAY
MOV DPTR,#01FFH
MOVX A,@DPTR
MOV DAT,A
SETB CS8279
POP ACC
RET
;----------------------------------
LcdWRI: PUSH ACC
SETB CS8279
CLR RS
SETB RW
LcdWRI1:MOV DATAPORT,#0FFH
SETB E_LCD
MOV A,P0
CLR E_LCD
JB ACC.7,LcdWRI1
CLR RW
MOV DATAPORT,COM
SETB E_LCD
CLR E_LCD
POP ACC
RET
;--------------------------------液晶写数据子程序
LcdWRD: PUSH ACC
SETB CS8279
CLR RS
SETB RW
LcdWRD1:MOV DATAPORT,#0FFH
SETB E_LCD
MOV A,P0
CLR E_LCD
JB ACC.7,LcdWRD1
SETB RS
CLR RW
MOV DATAPORT,DAT
SETB E_LCD
CLR E_LCD
POP ACC
RET
;--------------------------------------
DELAY:
MOV R7,#0FFH
DELAY4: MOV R6,#02FH
LOOP2: DJNZ R6,LOOP2
DJNZ R7,DELAY4
RET
DELAY1:
MOV R4,#04H
DELAY11:MOV R7,#0FFH
DELAY41:MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,DELAY41
DJNZ R4,DELAY11
RET
;------------------------------------------
DISPLAY:
PUSH ACC
PUSH PSW
DISP: CLR A
MOVC A,@A+DPTR
SUBB A,#00H
JZ FINISHD
MOV DAT,A
LCALL LcdWRD
INC DPTR
JMP DISP
FINISHD:POP PSW
POP ACC
RET
;----------------------------------------
DISPSETTEMP:
PUSH ACC
PUSH PSW
MOV COM,#85H
LCALL LcdWRI
MOV DAT,SETTEMP1
ACALL LcdWRD
MOV DAT,SETTEMP2
ACALL LcdWRD
MOV DAT,#02EH
ACALL LcdWRD
MOV DAT,SETTEMP3
ACALL LcdWRD
POP PSW
POP ACC
RET
;----------------------------------------
DISPAGE:
MOV COM,#80H
LCALL LcdWRI
MOV DPTR,#DAB
CALL DISPLAY
;MOV COM,#87H
;LCALL LcdWRI
;MOV DAT,#0A1H
;LCALL LcdWRD
;MOV DAT,#0E6H
;LCALL LcdWRD
MOV COM,#90H
LCALL LcdWRI
MOV DPTR,#DAB1
CALL DISPLAY
MOV COM,#88H
LCALL LcdWRI
MOV DPTR,#DAB2
CALL DISPLAY
MOV COM,#98H
LCALL LcdWRI
MOV DPTR,#DAB3
CALL DISPLAY
RET
;----------------------------------------
EXT0: PUSH PSW
PUSH A
CALL DELAY
CALL RDD8279
MOV A,DAT
ANL A,#1FH
SUBB A,#12H
JC NUM
MOV A,DAT
ANL A,#1FH
CJNE A,#18H,RETURN
MOV A,FLAG
JB ACC.7,CONFIRM
MOV FLAG,#80H
MOV COM,#34H
CALL LcdWRI
MOV COM,#04H
CALL LcdWRI
MOV COM,#30H
CALL LcdWRI
JMP RETURN
CONFIRM:MOV FLAG,#00H
CALL DISPSETTEMP
JMP RETURN
NUM: MOV A,FLAG
JNB ACC.7,RETURN
ANL A,03H
MOV R0,#SETTEMP1
ADD A,R0
MOV R0,A
MOV A,DAT
ANL A,#1FH
MOV B,#04H
DIV AB
RL A
ADD A,B
INC A
MOV B,#0AH
DIV AB
MOV @R0,A
INC FLAG
MOV R0,FLAG
CJNE @R0,#84H,RETURN
MOV FLAG,#80H
JMP RETURN
CALL DISPSETTEMP
RETURN:
POP A
POP PSW
RETI
DAB: DB "设定温度: ℃",00H
DAB1: DB "当前温度: ℃",00H
DAB2: DB "调整时间: :",00H
DAB3: DB "电炉功率: 4W",00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -