📄 时钟温度显示1114.asm
字号:
MOV DATDB,A
CLR E
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLS: MOV A,#01H;清显示屏
CALL WRITE
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PRSTRING: PUSH ACC
PRLOOP: CLR A
mov a,r3
MOVC A,@A+DPTR;查显示内容表
JZ EPR;判断是否查到结束标志位00H
CALL WRITELCDDATA
INC DPTR
JMP PRLOOP
EPR: POP ACC
RET
PRSTRING1: PUSH ACC
PRLOOP1: CLR A
mov a,r3
MOVC A,@A+DPTR;查显示内容表
CALL WRITELCDDATA
EPR1: POP ACC
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY: MOV R6,#5
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 主菜单
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JREADRECORD:LJMP READRECORD;由于JB无法跳转太远,由此转跳
JMPSETTIME: LJMP SETTIME;由于JB无法跳转太远,由此转跳
FILE: PUSH ACC;主菜单
PUSH PSW
PUSH 00H
FUNCTION0A: LCALL CLS; 清屏
LCALL DS20MS
JNB K1,$
FF0A11:MOV A,#10000000B;
CALL WRITE
MOV DPTR,#LINE4;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
MOV A,#11000000B;
CALL WRITE
MOV DPTR,#LINE5;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
JNB K2, JREADRECORD
FF0A:JB K1,FF0A11
LCALL DS20MS
JNB K1,FF0A
FUNCTION0B: LCALL CLS; 清屏
FF0B1: MOV A,#10000000B;
CALL WRITE
MOV DPTR,#LINE6;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
MOV A,#11000000B;
CALL WRITE
MOV DPTR,#LINE7;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
JNB K2,JMPSETTIME
FF0B: JB K1,FF0B1
LCALL DS100MS
JNB K1, FF0B
FUNCTION1A: LCALL CLS; 清屏
FF1A1 :MOV A,#10000000B;
CALL WRITE
MOV DPTR,#LINE8;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
MOV A,#11000000B;
CALL WRITE
MOV DPTR,#LINE9;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
JNB K2,JMPALARM
FF1A :JB K1,FF1A1
LCALL DS100MS
JNB K1,FF1A
FUNCTION1B: LCALL CLS; 清屏
FF1B1:MOV A,#10000000B;
CALL WRITE
MOV DPTR,#LINE10;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
MOV A,#11000000B;
CALL WRITE
MOV DPTR,#LINE11;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
JNB K2,JMPCALEN
FF1B: JB K1,FF1B1
LCALL DS100MS
JNB K1, FF1B
;FUNCTION2A: LCALL CLS; 清屏
;FF2A1: MOV A,#10000000B;
; CALL WRITE
; MOV DPTR,#LINE12;指向显示内容
;mov R3,#0
; LCALL PRSTRING;查显示内容
;JNB K2,JMPDISMODE
; FF2B1: JB K1,FF2A1
; LCALL DS100MS
; JNB K1,$
OUTF: LCALL CLS; 清屏
POP 00H
POP PSW
POP ACC
LJMP START1
JMPDISMODE: LJMP DISMODE;由于JB无法跳转太远,由此转跳
JMPALARM: LJMP TEMPALARM;由于JB无法跳转太远,由此转跳
JMPCALEN: LJMP CALENDAR;由于JB无法跳转太远,由此转跳
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; record temperature 子菜单
;;; 读取温度
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READRECORD: JNB K2,$
LCALL CLS; 清屏
RE: MOV R1,4AH;4A为温度储存单元指针
MOV R0,#51H;51H,50H为查看温度时的时间显示单元
MOV 51H,35H;当前时间放到查看温度时的时间显示单元
MOV 50H,34H
RE2: DEC R1;每按一次K1,温度指向下一单元
MOV TEMPL,@R1;把采集的一个温度显示出来
DEC R1;
MOV TEMPH,@R1
LCALL TRANNUM
LCALL DISPLAY3A
LCALL DISPLAY26
LCALL DISPLAY27
RRR1: JNB K1,OUTR
JB K2,RRR1
LCALL DS20MS
JNB K2,RRR1
LCALL DEC1;时间减一
CLR C
MOV A,R4
CJNE A,#00H,RE44
RRR2: LCALL DISPLAY3A
LCALL DISPLAY26
LCALL DISPLAY27
JNB K1,OUTR
RRR22: JB K2,RRR2
LCALL DS20MS
JNB K2,RRR22
MOV 51H,#02H
MOV 50H,#03H
JMP RE2
RE44:JMP RE2
OUTR: LJMP OUTF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 采集温度 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RECORD: PUSH ACC
PUSH PSW
PUSH 00H
PUSH 01H
MOV R1, 4AH;温度地址指针给R1
MOV @R1,TEMPH
INC R1
MOV @R1,TEMPL
INC R1
MOV 4AH,R1
MOV A,R1
CLR C
CJNE A,#0F0H,RECORDC;是否已经存到最后一个单元
REOUT: POP 01H
POP 00H
POP PSW
POP ACC
RET
RECORDC:JC REOUT;没到最后单元则返回;到则重新使指针指向60H
MOV 4AH,#60H
POP 00H
POP PSW
POP ACC
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; setting time 子菜单 ;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETTIME: NOP
SETTIME1: LCALL CLS
LCALL DISPLAY2
LCALL DISPLAY4
SS2:JNB K2,SETHH;按K2跳到调时
JB K1, SS2
LCALL DS20MS
JNB K1,OUTT3
JMP SS2
OUTT3: LCALL DS200MS
LCALL CLS;清显示屏
LCALL INITIAL;启动显示
LJMP OUTF
SETHH:MOV A,#00001110B
LCALL WRITE
LCALL DS200MS
JNB K1,OUTT3
JNB K2, SETMM;按K2跳到调分
JB K3,SETHH
;LCALL DS20MS
SS3:MOV A,#10000110B;显示时间在第一行
CALL WRITE
LCALL DS200MS
MOV R0,#35H
SS4:JNB K1,OUTT3
JNB K2, SETMM
JB K3,SS4
LCALL ADD1
LCALL DISPLAY2
LCALL DISPLAY4
MOV A,R2
CLR C
CJNE A,#23H,CLEARHH
JMP SS3
CLEARHH:JC SS3
LCALL CLR0
CLR C
LCALL DISPLAY2
LCALL DISPLAY4
JMP SS3
SETMM: MOV A,#10001001B;显示时间在第一行
CALL WRITE
LCALL DS200MS
MOV R0,#33H
JNB K1,OUTT3
JNB K2, SETSS
JB K3,SETMM
LCALL ADD1
LCALL DISPLAY2
MOV A,R2
CLR C
CJNE A,#59H,CLEARMM
JMP SETMM
CLEARMM:JC SETMM
LCALL CLR0
CLR C
LCALL DISPLAY2
LCALL DISPLAY4
JMP SETMM
SETSS: MOV A,#10001100B;显示时间在第一行
CALL WRITE
LCALL DS200MS
MOV R0,#31H
JNB K1,JMPOUTT3
JNB K2, JMPSS3
JB K3,SETSS
LCALL ADD1
LCALL DISPLAY2
LCALL DISPLAY4
MOV A, R2
CLR C
CJNE A,#59H,CLEARSS
JMP SETSS
CLEARSS:JC SETSS
LCALL CLR0
CLR C
LCALL DISPLAY2
LCALL DISPLAY4
JMP SETSS
JMPSS3: LJMP SS3
JMPOUTT3:LJMP OUTT3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; temp alarm 子菜单 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TEMPALARM: NOP
TEMPALARM0A:LCALL CLS; 清屏
LCALL DS20MS
JNB K1,$
TT0A1: MOV A,#10000000B;
CALL WRITE
MOV DPTR,#LINE30;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
MOV A,#11000000B;
CALL WRITE
MOV DPTR,#LINE31;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
JNB K1,OUTTT
JNB K3,SETALARMH
TMP0A: JB K2,TT0A1
LCALL DS100MS
JNB K2,TMP0A
TEMPALARM0B: LCALL CLS; 清屏
TT0B1: MOV A,#10000000B;
CALL WRITE
MOV DPTR,#LINE32;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
MOV A,#11000000B;
CALL WRITE
MOV DPTR,#LINE33;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
JNB K1,OUTTT
JNB K3,SETALARML
TMP0B: JB K2,TT0B1
LCALL DS100MS
JNB K2, TMP0B
JMP TT0A1
OUTTT: LCALL CLS; 清屏
LJMP OUTF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; TEMP ALARM ;
;; 报警温度调整 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETALARMH: LCALL CLS; 上限时间调整
SETALARMH1: LCALL DISPLAY21
JNB K1, JMPONOFF
SETALA1: JB K3,SETALARMH1
LCALL DS20MS
JNB K3,SETALA1
ALA3:LCALL DS200MS
MOV R0,#41H
ALA4:JNB K1, JMPONOFF
JNB K2,ALARADEC
JB K3,ALA4
LCALL ADD1
LCALL INITIAL; 启动显示
LCALL DISPLAY21
JMP ALA3
ALARADEC: LCALL DS200MS
MOV R0,#41H
ALA5:JNB K1, ONOFF
JNB K3,ALA3
JB K2,ALA4
LCALL DEC1
LCALL INITIAL; 启动显示
LCALL DISPLAY21
JMP ALARADEC
JMPONOFF:LJMP ONOFF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 报捷温度下限调整
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETALARML: LCALL CLS;
SETALARML1: LCALL DISPLAY22
JNB K1, ONOFF
SETALAL1:JB K3,SETALARML1
LCALL DS20MS
JNB K3,SETALAL1
ALAL3:LCALL DS200MS
MOV R0,#43H
ALAL4:JNB K1, ONOFF
JNB K2,ALALRADEC
JB K3,ALAL4
LCALL ADD1
LCALL INITIAL; 启动显示
LCALL DISPLAY22
JMP ALAL3
ALALRADEC:LCALL DS200MS
MOV R0,#43H
ALAL5:JNB K1, ONOFF
JNB K3,ALAL3
JB K2,ALAL4
LCALL DEC1
LCALL INITIAL; 启动显示
LCALL DISPLAY22
JMP ALALRADEC
OUTT0B1: LJMP OUTTT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ONOFF alarm ;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ONOFF: LCALL CLS; 清屏
LCALL DS20MS
JNB K1,$
ONOFF0A1: MOV A,#10000000B;
CALL WRITE
MOV DPTR,#LINE34;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
MOV A,#11000000B;
CALL WRITE
MOV DPTR,#LINE35;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
JNB K3,ON
ONOFF0A: JB K2,ONOFF0A1
LCALL DS100MS
JNB K2,ONOFF0A
ONOFFALARM0B:LCALL CLS; 清屏
ONOFF0B1: MOV A,#10000000B;
CALL WRITE
MOV DPTR,#LINE36;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
MOV A,#11000000B;
CALL WRITE
MOV DPTR,#LINE37;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
JNB K3,OFF
ONOFF0B: JB K2,ONOFF0B1
LCALL DS100MS
JNB K2, ONOFF0B
JMP ONOFF0A1
ON: SETB ONALARM;开报警,标志位致1
LCALL CLS; 清屏
lcall dl05s
lcall display28
lcall display29
lcall dl2s
LCALL CLS; 清屏
lcall dl05s
JMP OUTT0B1
OFF: CLR ONALARM;关报警,标志位致0
CLR ALARMM
CLR ALARMM1
LCALL CLS; 清屏
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -