📄 set1.asm
字号:
;This programe is used to control
;the temperature.
;You can set the temperature from
; 20'C to 60'C step 5'C freely.
;and the LED will indicate the
;variable of the temperature.
SMG0 EQU 40H
SMG1 EQU 41H
SMG2 EQU 42H
SMG3 EQU 43H
SMG4 EQU 44H
TEMP EQU 60H
FLAG EQU 01H
GOOD EQU 61H
ZANCL EQU 45H
ZANCH EQU 46H
RONG EQU 47H
ORG 0000H
AJMP START
ORG 0100H
START: MOV SMG0,#10H ;INITIALIZE THE DISP
MOV SMG1,#10H
MOV SMG2,#10H
MOV SMG3,#02H
MOV SMG4,#00H
LCALL DIS
LCALL BCDB
LCALL ZBCX
MAIN: MOV R1,#00H
LCALL PJSF
JNZ MAIN
LCALL JPAN
CJNE R1,#4FH,MAIN
CJNE A,#0EH,NEXT
AJMP KEYUP
NEXT: CJNE A,#0DH,NEXT1
AJMP KEYDOWN
NEXT1: CJNE A,#0BH,RESET
AJMP QUEDING
RESET: CJNE A,#07H,error
ljmp start
ERROR: AJMP ERR
;********************************************
KEYUP: MOV R1,SMG3 ;rise the temperature
CJNE R1,#06H,NEXT3
AJMP MAIN
NEXT3: MOV A,SMG4
CJNE A,#05H,NEXT2
MOV SMG4,#00H
MOV R1,SMG3
INC R1
MOV SMG3,R1
SJMP XYG
NEXT2: MOV SMG4,#05H
XYG: lcall dis
LCALL BCDB
LCALL ZBCX
;LCALL DIS
AJMP MAIN
;--------------------------------------------
KEYDOWN:MOV A,SMG4 ;drop the temperature
CJNE A,#00H,NEXT4
MOV A,SMG3
CJNE A,#02H,NEXT5
AJMP MAIN
NEXT5: MOV SMG4,#05H
MOV R1,SMG3
DEC R1
MOV SMG3,R1
SJMP XYG
NEXT4: MOV SMG4,#00H
SJMP XYG
;+++++++++++++++++++++++++++++++++++++++++++++
QUEDING:CLR FLAG ;confirm key
SETB P3.4
MAIN1: MOV SMG0,#10H
MOV SMG1,#10H
MOV SMG2,#10H
MOV SMG3,#10H
MOV SMG4,#10H
SETB P3.3
LCALL DIS
MOV A,P1 ;decide if reset key
ANL A,#0FH
CJNE A,#0FH,LOP
AJMP lop1
LOP: MOV 48H,A
LCALL YS1S
MOV A,P1
anl a,#0fh
CJNE A,#0FH,lop2
ajmp lop1
LOP2: CJNE A,48H, LOP1
CJNE A,#07H,LOP1
AJMP START
LOP1: MOV DPTR,#0FEF3H ;start A/D
MOVX @DPTR,A
NOP
HERE: JB P3.3,HERE
MOV DPTR,#0FEF3H ;read the result of A/D
MOVX A,@DPTR
MOV B,A
ANL A,#0FH
MOV SMG4,A
MOV A,B
SWAP A
ANL A,#0FH
MOV R4,A
MOV SMG3,A
MOV SMG0,#10H
MOV SMG1,#10H
MOV SMG2,#10H
LCALL DIS
LCALL delay
MOV A,R4
SWAP A
ORL A,SMG4
JB FLAG,OK
CJNE A,ZANCH,XYH
XYH: JC QUEDING
SETB FLAG
CLR P3.4
hh: AJMP MAIN1
OK: CJNE A,ZANCL,OK1
OK1: JNC hh
ljmp QUEDING
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
ZBCX: MOV A,RONG ;
SUBB A,#20
MOV B,#05H
DIV AB
RL A
MOV R2,A
MOV DPTR,#QTAB
MOVC A,@A+DPTR
MOV ZANCL,A
MOV A,R2
INC A
MOVC A,@A+DPTR
MOV ZANCH,A
RET
QTAB: DB 40H,45H,4aH,4fH,50H,55H
DB 5aH,5fH,60H,65H,6aH,6fH
DB 70H,75H,7aH,7fH,80h,82h
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
BCDB: MOV A,SMG3
MOV B,#0AH
MUL AB
ADD A,SMG4
MOV RONG,A
RET
;||||||||||||||||||||||||||||||||||||||||
JPAN: MOV A,P1 ;key sub_programe
ANL A,#0FH
CJNE A,#0FH,JX
AJMP JPAN
JX: MOV 4FH,A
LCALL YS1S
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,YJAX
AJMP JPAN
YJAX: CJNE A,4FH,JPAN
MOV R1,#4FH
RET
;###########################################
DIS: MOV R0,#SMG0 ;display sub_programe
MOV R1,#TEMP
MOV R2,#5
DP10: MOV DPTR,#SEG
MOV A,@R0
MOVC A,@A+DPTR
MOV @R1,A
INC R0
INC R1
DJNZ R2,DP10
MOV R0,#TEMP
MOV R1,#5
DP12: MOV R2,#8
MOV A,@R0
DP13: CLR C
NOP
NOP
RLC A
MOV P3.0,C
MOV P3.0,C
NOP
NOP
CLR P3.1
CLR P3.1
NOP
NOP
SETB P3.1
SETB P3.1
DJNZ R2,DP13
INC R0
DJNZ R1,DP12
RET
SEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH
DB 07H,7FH,6FH,77H,7CH,39H,5EH
DB 79H,71H,00H,79H,50H,5CH
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
YS1S: MOV R7,#40H ;delay sub_programe
YS0: MOV R6,#0FFH
YS1: DJNZ R6,YS1
DJNZ R7,YS0
RET
DELAY: MOV R7,#0
DLY: MOV R6,#0
AA1: DJNZ R6,AA1
DJNZ R7,DLY
RET
PJSF: MOV A,P1
CPL A
ANL A,#0FH
RET
ERR: MOV SMG0,#11H
MOV SMG1,#12H
MOV SMG2,#12H
MOV SMG3,#13H
MOV SMG4,#12H
LCALL DIS
ERR1: MOV R1,#00H
LCALL PJSF
JNZ ERR1
lcall jpan
cjne R1,#4fh,err1
cjne a,#07h,err1
ljmp start
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -