lcd18b20.lst
来自「用单片机实现对温度的测量」· LST 代码 · 共 229 行
LST
229 行
A51 MACRO ASSEMBLER LCD18B20 05/03/2008 00:48:28 PAGE 1
MACRO ASSEMBLER A51 V6.23
OBJECT MODULE PLACED IN K:\JBCPU5~1\实验程序\温度试验\18B20~1\LCD18B20.OBJ
ASSEMBLER INVOKED BY: C:\COMP51\A51.EXE K:\JBCPU5~1\实验程序\温度试验\18B20~1\LCD18B20.ASM DB SB
LOC OBJ LINE SOURCE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
0024 37 TEMP_ZH DATA 24H ;实时温度值存放单元
0025 38 TEMPL DATA 25H ;
0026 39 TEMPH DATA 26H ;
0027 40 TEMP_TH DATA 27H ;高温报警值存放单元
0028 41 TEMP_TL DATA 28H ;低温报警值存放单元
0029 42 TEMPHC DATA 29H ;
002A 43 TEMPLC DATA 2AH
44
0094 45 K1 EQU P1.4
0095 46 K2 EQU P1.5
0096 47 K3 EQU P1.6
0097 48 K4 EQU P1.7
49
00B7 50 BEEP EQU P3.7
0090 51 RELAY EQU P1.0
002F 52 LCD_X EQU 2FH ;LCD 地址变量
00A0 53 LCD_RS EQU P2.0
00A1 54 LCD_RW EQU P2.1
00A2 55 LCD_EN EQU P2.2
0000 56 flag1 equ 20H.0 ;DS18B20是否存在标记
0001 57 KEY_UD EQU 20H.1 ;设定 KEY 的UP与DOWN 标记
00B3 58 date_line equ p3.3
A51 MACRO ASSEMBLER LCD18B20 05/03/2008 00:48:28 PAGE 2
59 ;=====================================================
0000 60 ORG 0000H
0000 8000 61 JMP MAIN
62
0002 758160 63 MAIN: MOV SP,#60H
0005 7400 64 MOV A,#00H
0007 7820 65 MOV R0,#20H ;将 20H-2FH 单元清零
0009 7910 66 MOV R1,#10H
000B F6 67 CLEAR: MOV @R0,A
000C 08 68 INC R0
000D D9FC 69 DJNZ R1,CLEAR
70
000F 9115 71 CALL SET_LCD
0011 31EF 72 CALL RE_18B20
73
0013 31C3 74 start: CALL RESET ;18B20复位子程序
0015 300008 75 JNB FLAG1,START1 ;DS1820不存在
0018 3161 76 CALL MENU_OK
001A 511C 77 CALL READ_E2
001C 314C 78 CALL TEMP_BJ ;显示温度标记
001E 8006 79 JMP START2
0020 3192 80 START1: CALL MENU_ERROR
0022 314C 81 CALL TEMP_BJ ;显示温度标记
0024 80FE 82 JMP $
83
0026 84 START2:
0026 31C3 85 CALL RESET
0028 3000F5 86 JNB FLAG1,START1 ;DS1820不存在
002B 74CC 87 MOV A,#0CCH ; 跳筊OM匹配
002D 5143 88 CALL WRITE
002F 7444 89 MOV A,#44H ; 发出温度转换命令
0031 5143 90 CALL WRITE
0033 31C3 91 CALL RESET
0035 74CC 92 MOV A,#0CCH ; 跳筊OM匹配
0037 5143 93 CALL WRITE
0039 74BE 94 MOV A,#0BEH ; 发出读温度命令
003B 5143 95 CALL WRITE
003D 515B 96 CALL READ
003F 5180 97 call CONVTEMP
0041 719B 98 Call DISPBCD
0043 71CF 99 CALL CONV
0045 3110 100 CALL TEMP_COMP
0047 114B 101 CALL PROC_KEY ; 键扫描
102
0049 80DB 103 SJMP START2
104 ;-----------------------------------------------------
004B 105 PROC_KEY:
004B 209415 106 JB K1,PROC_K1 ; 按键K1处理
004E 91A4 107 CALL BEEP_BL
0050 3094FD 108 JNB K1,$
0053 900319 109 MOV DPTR,#M_ALAX1
0056 7401 110 MOV A,#1
0058 9148 111 CALL LCD_PRINT
005A 51FB 112 CALL LOOK_ALARM
005C 2096FD 113 JB K3,$
005F 91A4 114 CALL BEEP_BL
0061 8015 115 JMP PROC_K2
0063 116 PROC_K1: ; 按键K2处理
0063 209516 117 JB K2,PROC_END
0066 91A4 118 CALL BEEP_BL
0068 3095FD 119 JNB K2,$
006B 900100 120 MOV DPTR,#RESET_A1
006E 7401 121 MOV A,#1
0070 9148 122 CALL LCD_PRINT
0072 117D 123 CALL SET_ALARM
0074 31EF 124 CALL RE_18B20 ;将设定的TH,TL值写入DS18B20内
A51 MACRO ASSEMBLER LCD18B20 05/03/2008 00:48:28 PAGE 3
0076 510F 125 CALL WRITE_E2
0078 126 PROC_K2:
0078 3161 127 CALL MENU_OK
007A 314C 128 CALL TEMP_BJ
007C 129 PROC_END:
007C 22 130 RET
131 ;============================================
132 ;设定报警值 TH、TL
133 ;============================================
007D 134 SET_ALARM:
135 ;CALL RESET_ALARM
007D 51FB 136 CALL LOOK_ALARM
007F 137 AS0:
007F 209407 138 JB K1,AS00
0082 91A4 139 CALL BEEP_BL
0084 3094FD 140 JNB K1,$
0087 B201 141 CPL 20H.1 ;UP/DOWN 标记
0089 200102 142 AS00: JB 20H.1,ASZ01 ;20H.1=1,UP
008C 8037 143 JMP ASJ01 ;20H.1=0,DOWN
144
008E 209514 145 ASZ01: JB K2,ASZ02 ;TH值调整(增加)
0091 91A4 146 CALL BEEP_BL
0093 0527 147 INC TEMP_TH
0095 E527 148 MOV A,TEMP_TH
0097 B47803 149 CJNE A,#120,ASZ011
009A 752700 150 MOV TEMP_TH,#0
009D 51FB 151 ASZ011: CALL LOOK_ALARM
009F 7D0A 152 MOV R5,#10
00A1 91B7 153 CALL DELAY
00A3 80E9 154 JMP ASZ01
155
00A5 209614 156 ASZ02: JB K3,ASZ03 ;TL值调整(增加)
00A8 91A4 157 CALL BEEP_BL
00AA 0528 158 INC TEMP_TL
00AC E528 159 MOV A,TEMP_TL
00AE B46303 160 CJNE A,#99,ASZ021
00B1 752800 161 MOV TEMP_TL,#00H
00B4 51FB 162 ASZ021: CALL LOOK_ALARM ;
00B6 7D0A 163 MOV R5,#10
00B8 91B7 164 CALL DELAY
00BA 80E9 165 JMP ASZ02
00BC 2097C0 166 ASZ03: JB K4,AS0 ;确定调整 OK
00BF 91A4 167 CALL BEEP_BL
00C1 3097FD 168 JNB K4,$
00C4 22 169 RET
170
00C5 171 ASJ01:
00C5 209513 172 JB K2,ASJ02 ;TH值调整 (减少)
00C8 91A4 173 CALL BEEP_BL
00CA 1527 174 DEC TEMP_TH
00CC E527 175 MOV A,TEMP_TH
00CE B4FF02 176 CJNE A,#0FFH,ASJ011
00D1 801E 177 JMP ASJ022
00D3 51FB 178 ASJ011: CALL LOOK_ALARM
00D5 7D0A 179 MOV R5,#10
00D7 91B7 180 CALL DELAY
00D9 80A4 181 JMP AS0
182
00DB 209617 183 ASJ02: JB K3,ASJ03 ;TL值调整(减少)
00DE 91A4 184 CALL BEEP_BL
00E0 1528 185 DEC TEMP_TL
00E2 E528 186 MOV A,TEMP_TL
00E4 B4FF02 187 CJNE A,#0FFH,ASJ021
00E7 8008 188 JMP ASJ022
00E9 51FB 189 ASJ021: CALL LOOK_ALARM ;
00EB 7D0A 190 MOV R5,#10
A51 MACRO ASSEMBLER LCD18B20 05/03/2008 00:48:28 PAGE 4
00ED 91B7 191 CALL DELAY
00EF 808E 192 JMP AS0
00F1 B201 193 ASJ022: CPL 20H.1
00F3 8099 194 JMP ASZ01
00F5 80C5 195 ASJ03: JMP ASZ03
00F7 22 196 RET
197
198
00F8 199 RESET_ALARM:
00F8 900100 200 MOV DPTR,#RESET_A1 ;指针指到显示信息区
00FB 7401 201 MOV A,#1 ;显示在第一行
00FD 9148 202 CALL LCD_PRINT
00FF 22 203 RET
0100 204 RESET_A1:
0100 52455345 205 DB "RESET ALERT CODE"
0104 5420414C
0108 45525420
010C 434F4445
206 ;====================================================
207 ;实际温度值与标记温度值比较子程序
208 ;====================================================
0110 209 TEMP_COMP:
0110 E527 210 MOV A,TEMP_TH
0112 9524 211 SUBB A,TEMP_ZH ;减
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?