📄 ds18b20.lst
字号:
A51 MACRO ASSEMBLER DS18B20 11/15/2006 21:06:21 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN DS18B20.OBJ
ASSEMBLER INVOKED BY: E:\Keil\C51\BIN\A51.EXE DS18B20.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;********************************************************************************
2 ;* 标题: 伟纳电子ME300B单片机开发系统演示程序 - DS18B20温度控制1602LCD显示 *
3 ;* 文件: DS18B20-LCD.asm *
4 ;* 日期: 2005-3-20 *
5 ;* 版本: 1.0 *
6 ;* 作者: gguoqing *
7 ;* 邮箱: gguoqing@willar.com *
8 ;* 网站: http://www.willar.com *
9 ;********************************************************************************
10 ;* 描述: *
11 ;* DS18B20温度控制1602LCD显示 *
12 ;* *
13 ;* 使用方法参考readme.txt文档 *
14 ;* *
15 ;* *
16 ;********************************************************************************
17 ;* 【版权】 Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
18 ;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
19 ;********************************************************************************
20
21
22
0024 23 TEMP_ZH DATA 24H ;实时温度值存放单元
0025 24 TEMPL DATA 25H ;
0026 25 TEMPH DATA 26H ;
0027 26 TEMP_TH DATA 27H ;高温报警值存放单元
0028 27 TEMP_TL DATA 28H ;低温报警值存放单元
0029 28 TEMPHC DATA 29H ;
002A 29 TEMPLC DATA 2AH
30
0094 31 K1 EQU P1.4
0095 32 K2 EQU P1.5
0096 33 K3 EQU P1.6
0097 34 K4 EQU P1.7
35
00B7 36 BEEP EQU P3.7
0093 37 RELAY EQU P1.3
002F 38 LCD_X EQU 2FH ;LCD 地址变量
00A0 39 LCD_RS EQU P2.0
00A1 40 LCD_RW EQU P2.1
00A2 41 LCD_EN EQU P2.2
0000 42 flag1 equ 20H.0 ;DS18B20是否存在标记
0001 43 KEY_UD EQU 20H.1 ;设定 KEY 的UP与DOWN 标记
00B3 44 date_line equ p3.3
45 ;=====================================================
0000 46 ORG 0000H
0000 8000 47 JMP MAIN
48
0002 758160 49 MAIN: MOV SP,#60H
0005 7400 50 MOV A,#00H
0007 7820 51 MOV R0,#20H ;将 20H-2FH 单元清零
0009 7910 52 MOV R1,#10H
000B F6 53 CLEAR: MOV @R0,A
000C 08 54 INC R0
000D D9FC 55 DJNZ R1,CLEAR
56
000F 9115 57 CALL SET_LCD
0011 31EF 58 CALL RE_18B20
A51 MACRO ASSEMBLER DS18B20 11/15/2006 21:06:21 PAGE 2
59
0013 31C3 60 start: CALL RESET ;18B20复位子程序
0015 300008 61 JNB FLAG1,START1 ;DS1820不存在
0018 3161 62 CALL MENU_OK
001A 511C 63 CALL READ_E2
001C 314C 64 CALL TEMP_BJ ;显示温度标记
001E 8006 65 JMP START2
0020 3192 66 START1: CALL MENU_ERROR
0022 314C 67 CALL TEMP_BJ ;显示温度标记
0024 80FE 68 JMP $
69
0026 70 START2:
0026 31C3 71 CALL RESET
0028 3000F5 72 JNB FLAG1,START1 ;DS1820不存在
002B 74CC 73 MOV A,#0CCH ; 跳过ROM匹配
002D 5143 74 CALL WRITE
002F 7444 75 MOV A,#44H ; 发出温度转换命令
0031 5143 76 CALL WRITE
0033 31C3 77 CALL RESET
0035 74CC 78 MOV A,#0CCH ; 跳过ROM匹配
0037 5143 79 CALL WRITE
0039 74BE 80 MOV A,#0BEH ; 发出读温度命令
003B 5143 81 CALL WRITE
003D 515B 82 CALL READ
003F 5180 83 call CONVTEMP
0041 719B 84 Call DISPBCD
0043 71CF 85 CALL CONV
0045 3110 86 CALL TEMP_COMP
0047 114B 87 CALL PROC_KEY ; 键扫描
88
0049 80DB 89 SJMP START2
90 ;-----------------------------------------------------
004B 91 PROC_KEY:
004B 209415 92 JB K1,PROC_K1 ; 按键K1处理
004E 91A4 93 CALL BEEP_BL
0050 3094FD 94 JNB K1,$
0053 900319 95 MOV DPTR,#M_ALAX1
0056 7401 96 MOV A,#1
0058 9148 97 CALL LCD_PRINT
005A 51FB 98 CALL LOOK_ALARM
005C 2096FD 99 JB K3,$
005F 91A4 100 CALL BEEP_BL
0061 8015 101 JMP PROC_K2
0063 102 PROC_K1: ; 按键K2处理
0063 209516 103 JB K2,PROC_END
0066 91A4 104 CALL BEEP_BL
0068 3095FD 105 JNB K2,$
006B 900100 106 MOV DPTR,#RESET_A1
006E 7401 107 MOV A,#1
0070 9148 108 CALL LCD_PRINT
0072 117D 109 CALL SET_ALARM
0074 31EF 110 CALL RE_18B20 ;将设定的TH,TL值写入DS18B20内
0076 510F 111 CALL WRITE_E2
0078 112 PROC_K2:
0078 3161 113 CALL MENU_OK
007A 314C 114 CALL TEMP_BJ
007C 115 PROC_END:
007C 22 116 RET
117 ;============================================
118 ;设定报警值 TH、TL
119 ;============================================
007D 120 SET_ALARM:
121 ;CALL RESET_ALARM
007D 51FB 122 CALL LOOK_ALARM
007F 123 AS0:
007F 209407 124 JB K1,AS00
A51 MACRO ASSEMBLER DS18B20 11/15/2006 21:06:21 PAGE 3
0082 91A4 125 CALL BEEP_BL
0084 3094FD 126 JNB K1,$
0087 B201 127 CPL 20H.1 ;UP/DOWN 标记
0089 200102 128 AS00: JB 20H.1,ASZ01 ;20H.1=1,UP
008C 8037 129 JMP ASJ01 ;20H.1=0,DOWN
130
008E 209514 131 ASZ01: JB K2,ASZ02 ;TH值调整(增加)
0091 91A4 132 CALL BEEP_BL
0093 0527 133 INC TEMP_TH
0095 E527 134 MOV A,TEMP_TH
0097 B47803 135 CJNE A,#120,ASZ011
009A 752700 136 MOV TEMP_TH,#0
009D 51FB 137 ASZ011: CALL LOOK_ALARM
009F 7D0A 138 MOV R5,#10
00A1 91B7 139 CALL DELAY
00A3 80E9 140 JMP ASZ01
141
00A5 209614 142 ASZ02: JB K3,ASZ03 ;TL值调整(增加)
00A8 91A4 143 CALL BEEP_BL
00AA 0528 144 INC TEMP_TL
00AC E528 145 MOV A,TEMP_TL
00AE B46303 146 CJNE A,#99,ASZ021
00B1 752800 147 MOV TEMP_TL,#00H
00B4 51FB 148 ASZ021: CALL LOOK_ALARM ;
00B6 7D0A 149 MOV R5,#10
00B8 91B7 150 CALL DELAY
00BA 80E9 151 JMP ASZ02
00BC 2097C0 152 ASZ03: JB K4,AS0 ;确定调整 OK
00BF 91A4 153 CALL BEEP_BL
00C1 3097FD 154 JNB K4,$
00C4 22 155 RET
156
00C5 157 ASJ01:
00C5 209513 158 JB K2,ASJ02 ;TH值调整 (减少)
00C8 91A4 159 CALL BEEP_BL
00CA 1527 160 DEC TEMP_TH
00CC E527 161 MOV A,TEMP_TH
00CE B4FF02 162 CJNE A,#0FFH,ASJ011
00D1 801E 163 JMP ASJ022
00D3 51FB 164 ASJ011: CALL LOOK_ALARM
00D5 7D0A 165 MOV R5,#10
00D7 91B7 166 CALL DELAY
00D9 80A4 167 JMP AS0
168
00DB 209617 169 ASJ02: JB K3,ASJ03 ;TL值调整(减少)
00DE 91A4 170 CALL BEEP_BL
00E0 1528 171 DEC TEMP_TL
00E2 E528 172 MOV A,TEMP_TL
00E4 B4FF02 173 CJNE A,#0FFH,ASJ021
00E7 8008 174 JMP ASJ022
00E9 51FB 175 ASJ021: CALL LOOK_ALARM ;
00EB 7D0A 176 MOV R5,#10
00ED 91B7 177 CALL DELAY
00EF 808E 178 JMP AS0
00F1 B201 179 ASJ022: CPL 20H.1
00F3 8099 180 JMP ASZ01
00F5 80C5 181 ASJ03: JMP ASZ03
00F7 22 182 RET
183
184
00F8 185 RESET_ALARM:
00F8 900100 186 MOV DPTR,#RESET_A1 ;指针指到显示信息区
00FB 7401 187 MOV A,#1 ;显示在第一行
00FD 9148 188 CALL LCD_PRINT
00FF 22 189 RET
0100 190 RESET_A1:
A51 MACRO ASSEMBLER DS18B20 11/15/2006 21:06:21 PAGE 4
0100 52455345 191 DB "RESET ALERT CODE"
0104 5420414C
0108 45525420
010C 434F4445
192 ;====================================================
193 ;实际温度值与标记温度值比较子程序
194 ;====================================================
0110 195 TEMP_COMP:
0110 E527 196 MOV A,TEMP_TH
0112 9524 197 SUBB A,TEMP_ZH ;减数>被减数,则
0114 400E 198 JC CHULI1 ;借位标志位C=1,转
0116 E524 199 MOV A,TEMP_ZH
0118 9528 200 SUBB A,TEMP_TL ;减数>被减数,则
011A 4012 201 JC CHULI2 ;借位标志位C=1,转
011C 90014A 202 MOV DPTR,#BJ5
011F 3136 203 CALL TEMP_BJ3
0121 C293 204 CLR RELAY ;继电器吸合
0123 22 205 RET
0124 206 CHULI1:
0124 900146 207 MOV DPTR,#BJ3
0127 3136 208 CALL TEMP_BJ3
0129 D293 209 SETB RELAY ;继电器关闭
012B 91A4 210 CALL BEEP_BL
012D 22 211 RET
012E 212 CHULI2:
012E 900148 213 MOV DPTR,#BJ4
0131 3136 214 CALL TEMP_BJ3
0133 91A4 215 CALL BEEP_BL
0135 22 216 RET
217 ;-----------------------------------------
0136 218 TEMP_BJ3:
0136 74CE 219 MOV A,#0CEH
0138 917B 220 CALL WCOM
013A 7900 221 MOV R1,#0
013C 7802 222 MOV R0,#2
223
013E E9 224 BBJJ3: MOV A,R1
013F 93 225 MOVC A,@A+DPTR
0140 9188 226 CALL WDATA
0142 09 227 INC R1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -