📄 con_t.asm
字号:
;温度控制模块中的T-detect接第4模块的IN0 口,T-CON接13 模块74LS273的PO4。COOL接 13 模块74LS273的PO3。CS273接F200H。
;EOC接8032的P3.2(INT0中断),CS8279已接F238H,CS0809接F230H。
;若温度控制模块是插在扩展模块上,则须将温度控制模块上的+12V、-12V和主板上的+12V、-12V相连。
;*********************************
; Temperature control experiment *
;*********************************
;FOR EAT598
ADCS EQU 0F230H
CS273 EQU 0F200H
Com8279 EQU 0F239H
Dat8279 EQU 0F238H
READKB EQU 40H
SET_V EQU 50H
SET_VH EQU 51H
SET_VL EQU 52H
ADVAL EQU 30H
CURTM EQU 53H
ORG 0000H
SJMP 40H
ORG 03H
LJMP INT0
ORG 40H
MOV SP,#60H
LCALL INIT
MOV SET_V,#0FFH ;初始化设置温度
MOV DPTR,#ADCS
MOVX @DPTR,A
LCALL DELAY
MOVX A,@DPTR
MOV ADVAL,A ;初始采样0809一次
MOVX @DPTR,A ;启动A/D转换
SETB EX0 ;开中断
SETB IT0
SETB EA
L1:
LCALL DIS_T
LCALL SET_T
LCALL CON_T
SJMP L1
;*********************************
SET_T:
LCALL READ_KEY
CJNE A,#0,$+4
RET
MOV A,B
CJNE A,#0DH,END_ST ;If being 'D'key, start to set
ST_H:
LCALL READ_KEY
CJNE A,#0FFH,$-3
MOV A,B
CJNE A,#0EH,%H
SJMP END_ST
%H:
MOV B,A
SUBB A,#9H
JNC ST_H
MOV SET_VH,B
MOV R6,B
MOV R7,#97H
LCALL DIS_CHAR
ST_L:
LCALL READ_KEY
CJNE A,#0FFH,$-3
MOV A,B
CJNE A,#0EH,%L
SJMP END_ST
%L:
MOV B,A
SUBB A,#09H
JNC ST_L
MOV SET_VL,B
MOV R6,B
MOV R7,#96H
LCALL DIS_CHAR
SJMP ST_H
END_ST:
MOV A,SET_VH
MOV B,#0AH
MUL AB
ADD A,SET_VL
MOV SET_V,A
RET
;*********************************
READ_KEY:
MOV DPTR,#Com8279
MOVX A,@DPTR ;读8279状态
ANL A,#07H ;屏蔽D7-D3
JNZ GETVAL ;判断是否有键输入
MOV A,#0H ;置标志(无键输入)
SJMP NKBHIT
GETVAL: MOV A,#READKB ;读 FIFO RAM 命令
MOVX @DPTR,A
MOV DPTR,#Dat8279
MOVX A,@DPTR ;读键
ANL A,#3FH ;屏蔽 SHIFT 和 CTRL 键
MOV B,A ;置返回键值
MOV A,#0FFH ;置标志(有键输入)
NKBHIT:
RET
;*********************************
CON_T:
CLR C
MOV R0,#43H
MOV A,@R0
MOV B,#0AH
MUL AB
INC R0
ADD A,@R0
MOV CURTM,A
MOV A,SET_V
CJNE A,0FFH,CON_T1 ;若未设置键值,则不降温也不升温
MOV DPTR,#CS273
MOV A,#10H
MOVX @DPTR,A
JMP END_CON_T
CON_T1:
CJNE A,CURTM,%CON0
SJMP %DOWN_T
%CON0:
JNC %RISE_T
%DOWN_T:
MOV DPTR,#CS273 ;Down temp.
; MOV A,#10H
MOV A,#18H ;开风扇
MOVX @DPTR,A
SJMP END_CON_T
%RISE_T:
MOV DPTR,#CS273 ;Up temp.
MOV A,#00H
MOVX @DPTR,A
END_CON_T:
RET
;*********************************
DIS_T:
MOV A,ADVAL
MOV B,#3H
MUL AB
MOV R4,B
MOV R5,A
MOV R0,#45H
LCALL %ITAB
NOP
NOP
LCALL LED
RET
;*********************************
LED:
MOV R0,#45H
DEC R0
MOV A,@R0
MOV R6,A
MOV R7,#92H
LCALL DIS_CHAR
DEC R0
MOV A,@R0
MOV R6,A
JZ LED_CLR
CLR C
SUBB A,#9H
JNC LED_CLR
MOV A,@R0
MOV R6,A
MOV R7,#93H
LCALL DIS_CHAR
SJMP END_LED
LED_CLR:
MOV R6,#00H
MOV R7,#93H
LCALL DIS_CHAR
END_LED:
RET
;*********************************
DIS_CHAR:
MOV DPTR,#Com8279
MOV A,R7
MOVX @DPTR,A
MOV A,R6
MOV DPTR,#BCD
MOVC A,@A+DPTR
MOV DPTR,#Dat8279
MOVX @DPTR,A
RET
;*********************************
INT0:
PUSH DPL
PUSH DPH
PUSH ACC
MOV DPTR,#ADCS
MOVX A,@DPTR
MOV ADVAL,A
LCALL DELAY
MOVX @DPTR,A
POP ACC
POP DPH
POP DPL
RETI
;*********************************
INIT:
MOV DPTR,#CS273 ;将HEAT_ON灯和风扇关掉
MOV A,#10H
MOVX @DPTR,A
MOV DPTR,#Com8279
MOV A,#00H
MOVX @DPTR,A
MOV A,#2FH
MOVX @DPTR,A
MOV A,#0D1H
MOVX @DPTR,A
LCALL DELAY
MOV R0,#30H
MOV R1,#30H
MOV A,#0
N_INIT:
MOV @R1,A
INC R1
DJNZ R0,N_INIT
RET
;*********************************
DELAY:
MOV 20H,#7FH
DLY:
MOV 21H,#7FH
DJNZ 21H,$
DJNZ 20H,DLY
RET
BCD:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -