📄 at89s51开发温度巡检.txt
字号:
LED_0 EQU 30H
LED_1 EQU 31H
LED_2 EQU 32H
ADC EQU 35H
TCNTA EQU 36H
TCNTB EQU 37H
H_TEMP EQU 38H ;温度上限
L_TEMP EQU 39H ;温度下限
FLAG BIT 00H
H_ALM BIT P3.0
L_ALM BIT P3.1
SOUND BIT P3.7
CLOCK BIT P2.4
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7
ORG 00H
SJMP START
ORG 0BH
LJMP INT_T0
ORG 1BH
LJMP INT_T1
START: MOV LED_0,#00H
MOV LED_1,#00H
MOV LED_2,#00H
MOV H_TEMP,#125
MOV L_TEMP,#3
MOV TMOD,#12H
MOV TH0,#245
MOV TL0,#0
MOV TH1,#(65536-1000)/256
MOV TL1,#(65536-1000)%256
MOV IE,#8aH
CLR C
SETB TR0 ;为ADC0809提供时钟
WAIT: SETB H_ALM
SETB L_ALM
CLR ST
SETB ST
CLR ST ;启动转换
JNB EOC,$
SETB OE
MOV ADC,P1 ;读取AD转换结果
CLR OE
MOV A,ADC
SUBB A,#3 ;判断是否低于下限
JC LALM
MOV A,H_TEMP
MOV R0,ADC
SUBB A,R0 ;判断是否高于上限
JC HALM
CLR TR1
LJMP PROCK
LALM: ;低温报警
CLR L_ALM
SETB TR1
CLR FLAG
LJMP PROCK
HALM: ;高温报警
CLR H_ALM
SETB TR1
SETB FLAG
LJMP PROCK
PROCK: MOV A,ADC ;数值转换
MOV DPTR,#TABLE2
MOVC A,@A+DPTR
MOV B,#100
DIV AB
MOV LED_2,A
MOV A,B
MOV B,#10
DIV AB
MOV LED_1,A
MOV LED_0,B
LCALL DISP
SJMP WAIT
INT_T0:CPL CLOCK ;提供ADC0809时钟
RETI
INT_T1:MOV TH1,#(65536-1000)/256
MOV TL1,#(65536-1000)%256
CPL SOUND
INC TCNTA
MOV A,TCNTA
JB FLAG,I1 ;判断是高温警报还是低温警报
CJNE A,#30,RETUNE ;低温警报声
SJMP I2
I1: CJNE A,#20,RETUNE ;高温警报声
I2: MOV TCNTA,#0
INC TCNTB
MOV A,TCNTB
CJNE A,#25,RETUNE
MOV TCNTA,#0
MOV TCNTB,#0
LCALL DELAY2
RETUNE: RETI
DISP: MOV A,LED_0 ;数码显示子程序
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
CLR P2.3
MOV P0,A
LCALL DELAY
SETB P2.3
MOV A,LED_1
MOVC A,@A+DPTR
CLR P2.2
MOV P0,A
LCALL DELAY
SETB P2.2
MOV A,LED_2
MOVC A,@A+DPTR
CLR P2.1
MOV P0,A
LCALL DELAY
SETB P2.1
RET
DELAY: MOV R6,#10
D1: MOV R7,#100
DJNZ R7,$
DJNZ R6,D1
RET
DELAY2:MOV R5,#20
D2: MOV R6,#20
D3: MOV R7,#250
DJNZ R7,$
DJNZ R6,D3
DJNZ R5,D2
RET
TABLE1: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
TABLE2: DB 0,0,1,1,2
DB 2,2,3,3,4
DB 4,4,5,5,5
DB 6,6,7,7,7
DB 8,8,9,9,9
DB 10,10,11,11,11
DB 12,12,13,13,13
DB 14,14,14,15,15
DB 16,16,16,17,17
DB 18,18,18,19,19
DB 20,20,20,21,21
DB 21,22,22,23,23
DB 23,24,24,25,25
DB 25,26,26,27,27
DB 27,28,28,29,29
DB 29,30,30,30,31
DB 31,32,32,32,33
DB 33,34,34,34,35
DB 35,36,36,36,37
DB 37,38,38,38,39
DB 39,39,40,40,41
DB 41,41,42,42,43
DB 43,43,44,44,45
DB 45,45,46,46,46
DB 47,47,48,48,48
DB 49,49,50,50,50
DB 51,51,52,52,52
DB 53,53,54,54,54
DB 55,55,55,56,56
DB 57,57,57,58,58
DB 59,59,59,60,60
DB 61,61,61,62,62
DB 63,63,63,64,64
DB 64,65,65,66,66
DB 66,67,67,68,68
DB 68,69,69,70,70
DB 70,71,71,71,72
DB 72,73,73,73,74
DB 74,75,75,75,76
DB 76,77,77,77,78
DB 78,79,79,79,80
DB 80,80,81,81,82
DB 82,82,83,83,84
DB 84,84,85,85,86
DB 86,86,87,87,87
DB 88,88,89,89,89
DB 90,90,91,91,91
DB 92,92,92,93,93
DB 94,94,94,95,95
DB 96,96,96,97,97
DB 98,98,98,99,99
DB 100,100
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -