📄 wendu.asm
字号:
ORG 0000H
AJMP K
ORG 0073H ;A/D中断入口
AJMP AD
ORG 0100H
AD: PUSH ACC
PUSH DPL
PUSH DPH; 保护现场
TO1: SETB P0.6
SETB P0.0
SETB P0.2
ACALL DELAY5S
CLR P0.6
CLR P0.0
ACALL DELAY5S
ACALL SHOW
ACALL DELAY5S
SJMP TO1
POP DPH
POP DPL
POP ACC
RETI
ORG 200H
K: NOP
DISP0 equ 78H
DISP1 equ 79H
DISP2 equ 7AH
DISP3 equ 7BH
DISP4 equ 7CH
DISP5 equ 7DH
DISP6 equ 7EH
DISP7 equ 7FH
ADMODA equ 0C0H
AD1DAT0 equ 0D5H
ADCON1 equ 97H
AD1BH equ 0C4H
AD1BL equ 0BCH
EAD equ 0E8H
P0M1 equ 84H
P0M2 equ 85H
P1M1 equ 91H
P1M2 equ 92H
ADINS equ 0A3H
ADMODB equ 0A1H
IEN0 equ 0A8H
MOV SP, #50H;
CLR A
MOV DISP0, A
MOV DISP1, A
MOV DISP2, #03H
MOV DISP3, #04H
MOV DISP4, #05H
MOV DISP5, #06H
MOV DISP6, A
MOV DISP7, A
MOV 30H, A; 显示指针
MOV 31H, A
MOV 32H, A
MOV 33H, A
MOV 34H, A; 低温加数据量
MOV 35H, A; 高温加数据量
MOV 36H, A
MOV 37H, A
MOV 38H, A
MOV 39H, A
MOV 3AH, A
MOV 3BH, A
MOV 3CH, A
MOV 3DH, A
MOV 3EH, #0F6H; 温度下限单元
MOV 3FH, #0FCH ; 温度上限单元
MOV 40H, #00H; 高温减数据量
MOV 41H, #00H; 低温减数据量
MOV 42H, #00H
MOV P0, #00H
MOV P1, #03H ;清暂存单元
MOV R0, A
MOV R1, A
MOV R2, A
MOV R3, A
MOV R4, A
MOV R5, A
MOV R6, A
MOV R7, A
RESTART: MOV IEN0, #80H
MOV EAD, #80H ; 开A/D 中断
MOV P0M1, #32H
MOV P0M2, #00H; 设置A/D口仅为输入
MOV P1M1, #0CH
MOV P1M2, #00H
MOV SCON, #00H; 开串口模式0
MOV ADINS, #10H; 选择1口为 A/D口
MOV ADMODA, #00H; 选择A/D转换模式
MOV ADMODB, #60H; 选择A/D转换频率
MOV ADCON1, #085H;置A/D控制器
; MOV A, ADCON1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV ADCON1, #81H
MOV A, AD1DAT0
; ACALL CHANG
CHANG: MOV 31H, #0D8H
CLR C
SUBB A, 31H
MOV R1, A
ANL A, #03H
MOV 33H, A
MOV A, R1
ANL A, #0FCH
MOV 32H, A
MOV A, 33H
CJNE A, #02H, PP
PP: JC UN
SJMP LN
UN: MOV A, 32H
CLR C
RR A
RR A
SJMP JG
LN: MOV A, 32H
CLR C
RR A
RR A
INC A
JG: ADD A, R1
; RET
BCD: MOV B, #0AH
DIV AB
MOV R5, A
MOV R4, B
; RET
; ACALL BCD
MOV DISP1, R5
MOV DISP0, R4
MOV AD1BH, #0FDH; A/D边界高值寄存器
MOV AD1BL, #0D0H; A/D边界低值寄存器
CLR P0.7
ACALL SHOW
; MOV 30H, #06H; 设置显示指针
; MOV R0, #DISP0;
; CLR P0.7
;DIS0: MOV A, @R0
; MOV DPTR, #DISAB
; MOVC A, @A+DPTR
; MOV SBUF, A
;DENG0: JNB TI, DENG0
; CLR TI
; INC R0
; DJNZ 30H, DIS0
; MOV R0, #DISP0
; SETB P0.7
; ACALL DELAY_DIS
; CLR P0.7
MOV A, AD1DAT0
CJNE A, 3FH, BIJIAO0
BIJIAO0: JC BIJIAO1
SJMP UNDOO
BIJIAO1: CJNE A, 3EH, BIJIAO2
BIJIAO2: JNC UNDOO
SETB P1.6
CLR P0.3
NOP
NOP
NOP
SETB P0.3
NOP
NOP
NOP
CLR P0.3
NOP
NOP
NOP
SETB P0.3
NOP
NOP
NOP
CLR P0.3
CLR P1.6
SETB P0.2
AJMP RESTART
UNDOO: CLR P1.6
CLR P0.3
NOP
NOP
NOP
SETB P0.3
NOP
NOP
NOP
CLR P0.3
NOP
NOP
NOP
SETB P0.3
NOP
NOP
NOP
CLR P0.3
CLR P0.2
AJMP RESTART
;KEY: JB P1.2, KEY13
; SJMP PDP5
;KEY13: ACALL DELAY12MS
; CLR P1.2
; JB P1.2, HIGHER ; 若选种温度上限,则HIGH
;PDP5: JB P1.3, KEY14
; AJMP RESTART
;KEY14: ACALL DELAY12MS
; CLR P1.3
; JB P1.3, LOWER ; 若选种温度下限,则LOW
; CLR P1.3
; AJMP RESTART
;HIGHER: SETB P0.0 ; 按键声响
; ACALL DELAY5S
; CLR P0.0
; CLR P1.2
;SAOM: JB P1.4, KEY120
; SJMP PDP17
;KEY120: ACALL DELAY12MS
; CLR P1.4
; JB P1.4, HINC ; 若选种温度加键,则HINC
;PDP17: JB P1.7, KEY170
; SJMP SMTIM
;KEY170: ACALL DELAY12MS
; CLR P1.7
; JB P1.7, HDEC ; 若选种温度减键,则HDEC
;SMTIM: INC R6
; CJNE R6,#0FFH, SAOM ; 扫描一段时间
; CLR A
; MOV R6, A
; INC R3
; CJNE R3, #0FFH, SMTIM
; MOV R3, A
; INC 42H
; MOV A, 42H
; CJNE A, #0AH, SMTIM
; CLR A
; MOV 42H, A
; AJMP RESTART
;LOWER: AJMP TOLOW
;HINC: ; ACALL DELAY12MS ; 延时12毫秒
; SETB P0.0 ; 按键声响
; ACALL DELAY5S
; CLR P0.0
; CLR P1.2
; INC 35H
; MOV A, 35H
; CJNE A, #32H, ZHUAN0
;ZHUAN0: JC BUZUO0
; DEC 35H
;BUZUO0: MOV A, 35H
; ACALL BCD
; MOV A, 35H
; MOV B, #04H
; MUL AB
; MOV B, #05H
; DIV AB
; ADD A, #0D8H
; MOV 3FH, A
; MOV R2, B
; CJNE R2, #03H, JIN0
;JIN0 : JNC FANH0
; SJMP DO0
;FANH0 : INC 3FH
;DO0: JB P1.4, HINC
; INC R6
; CJNE R6, #0FFH , DO0
; MOV A, #00H
; MOV R6, A
; INC R3
; CJNE R3, #0FFH, DO0
; MOV R3, A
; INC 42H
; MOV A, 42H
; CJNE A, #0AH, DO0
; CLR A
; MOV 42H, A
; MOV DISP5, R5
; MOV DISP4, R4
; ACALL SHOW
; AJMP KEY
; SJMP TIAO
;TIAO: NOP
;;HDEC: SETB P0.0 ; 按键声响
; ACALL DELAY5S
; CLR P0.0
; CLR P1.7
; DEC 40H
; MOV A, 40H
; CJNE A, #0FFH, ZHUAN
;ZHUAN: JC BUZUO
; INC 40H
;BUZUO: MOV A, 40H
; ACALL BCD
; MOV A, 40H
; MOV B, #04H
; MUL AB
; MOV B, #05H
; DIV AB
; ADD A, #0D8H
; MOV 3FH, A
; MOV R2, B
; CJNE R2, #03H, JIN
;JIN : JNC FANH
; SJMP DO1
;FANH : INC 3FH
;DO1: JB P1.7, HDEC
; INC R6
; CJNE R6, #0FFH, DO1
; MOV A, #00H
; MOV R6, A
; INC R3
; CJNE R3, #0FFH, DO1
; MOV R3, A
; INC 42H
; MOV A, 42H
; CJNE A, #0AH, DO1
; CLR A
; MOV 42H, A
; MOV DISP5, R5
; MOV DISP4, R4
; ACALL SHOW
; AJMP KEY
;TOLOW: SETB P0.0 ; 按键声响
; ACALL DELAY5S
; CLR P0.0
; CLR P1.3
;SAOM1: JB P1.4, KEY121
; SJMP PDP171
;KEY121: ACALL DELAY12MS
; CLR P1.4
; JB P1.4, LINC ; 若选种温度加键,则LINC
;PDP171:
; JB P1.7, KEY171
; SJMP SMTIM1
;KEY171: ACALL DELAY12MS
; CLR P1.7
; JB P1.7, LDEC ; 若选种温度减键,则LDEC
;SMTIM1: INC R7
; CJNE R6,#80H , SAOM1 ; 扫描一段时间
; MOV A, #00H
; MOV R6, A
; INC R3
; CJNE R3, #0FFH, SMTIM1
;; MOV R3, A
; INC 42H
; MOV A, 42H
; CJNE A, #0AH, SMTIM1
; CLR A
; MOV 42H, A
; AJMP RESTART
;LINC: SETB P0.0 ; 按键声响
; ACALL DELAY5S
; CLR P0.0
; CLR P1.2
; INC 34H
; MOV A, 34H
; CJNE A, #32H, ZHUAN2
;ZHUAN2: JC BUZUO2
; DEC 34H
;BUZUO2: MOV A, 34H
; ACALL BCD
; MOV A, 34H
; MOV B, #04H
; MUL AB
; MOV B, #05H
; DIV AB
; ADD A, #0D8H
; MOV 3EH, A
; MOV R2, B
; CJNE R2, #03H, JIN2
;JIN2 : JNC FANH2
; SJMP DO2
; FANH2 : INC 3EH
;DO2: JB P1.4, LINC
; INC R6
; CJNE R6,#0FFH, DO2
; MOV A, #00H
; MOV R6, A
; INC R3
; CJNE R3, #0FFH, DO2
; MOV R3, A
; INC 42H
; MOV A, 42H
; CJNE A, #0AH, DO2
; CLR A
; MOV 42H, A
; MOV DISP3, R5
; MOV DISP2, R4
; ACALL SHOW
; AJMP KEY
;;LDEC: SETB P0.0 ; 按键声响
; ACALL DELAY5S
; CLR P0.0
; CLR P1.7
;; DEC 41H
; MOV A, 41H
; CJNE A, #0FFH, ZHUAN3
;ZHUAN3: JC BUZUO3
; INC 41H
;BUZUO3: MOV A, 41H
; ACALL BCD
; MOV A, 41H
; MOV B, #04H
; MUL AB
; MOV B, #05H
; DIV AB
; ADD A, #0D8H
; MOV 3EH, A
; MOV R2, B
; CJNE R2, #03H, JIN3
;JIN3 : JNC FANH3
; SJMP DO3
;F;ANH3 : INC 3EH
;DO3: JB P1.7, LDEC
; INC R6
; CJNE R6,#0FFH , DO3
; MOV A, #00H
; MOV R6, A
; INC R3
; CJNE R3, #0FFH, DO3
; MOV R3, A
; INC 42H
; MOV A, 42H
; CJNE A, #0AH, DO3
; CLR A
; MOV 42H, A
; MOV DISP3, R5
; MOV DISP2, R4
; ACALL SHOW
; AJMP KEY
SHOW: MOV 30H, #06H; 设置显示指针
MOV R0, #DISP0;
CLR P0.7
DIS: MOV A, @R0
MOV DPTR, #DISAB
MOVC A, @A+DPTR
MOV SBUF, A
DENG: JNB TI, DENG
CLR TI
INC R0
DJNZ 30H, DIS
MOV R0, DISP0
SETB P0.7
ACALL DELAY_DIS
CLR P0.7
RET
DISAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H
DB 0FEH,0E6H,5FH,7CH,39H,5EH,79H,71H
; 延时子程序
DELAY12MS: MOV 0CH, #96H
DY12MS1 : MOV 0DH, #0FFH
DY12MS2: DJNZ 0DH, DY12MS2
DJNZ 0CH, DY12MS1
RET
DELAY5S: MOV 3BH, #0CH
DY5S1: MOV 3AH, #0FFH
DY5S2: MOV 39H, #0FFH
DY5S3: DJNZ 39H, DY5S3
DJNZ 3AH, DY5S2
DJNZ 3BH, DY5S1
RET
DELAY_DIS: MOV 38H, #08H
DY_DIS1 : MOV 37H, #0FFH
DY_DIS2 : MOV 36H, #0FFH
DY_DIS3 : DJNZ 36H, DY_DIS3
DJNZ 37H, DY_DIS2
DJNZ 38H, DY_DIS1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -