?? ds18b20.lst
字號:
0013 2560 141 ADD A,TEMPER_NUM
0015 F560 142 MOV TEMPER_NUM,A ; 保存變換后的溫度數據
0017 120000 F 143 LCALL BIN_BCD
001A AF60 144 mov R7,TEMPER_NUM
001C 22 145 RET
146
147 ;-------將16進制的溫度數據轉換成壓縮BCD碼
001D 148 BIN_BCD:
001D 900000 F 149 MOV DPTR,#TEMP_TAB
0020 E560 150 MOV A,TEMPER_NUM
0022 93 151 MOVC A,@A+DPTR
0023 F560 152 MOV TEMPER_NUM,A
0025 22 153 RET
0026 154 TEMP_TAB:
0026 00010203 155 DB 00H,01H,02H,03H,04H,05H,06H,07H
002A 04050607
002E 08091011 156 DB 08H,09H,10H,11H,12H,13H,14H,15H
0032 12131415
0036 16171819 157 DB 16H,17H,18H,19H,20H,21H,22H,23H
003A 20212223
003E 24252627 158 DB 24H,25H,26H,27H,28H,29H,30H,31H
0042 28293031
0046 32333435 159 DB 32H,33H,34H,35H,36H,37H,38H,39H
004A 36373839
004E 40414243 160 DB 40H,41H,42H,43H,44H,45H,46H,47H
0052 44454647
0056 48495051 161 DB 48H,49H,50H,51H,52H,53H,54H,55H
005A 52535455
005E 56575859 162 DB 56H,57H,58H,59H,60H,61H,62H,63H
0062 60616263
0066 64656667 163 DB 64H,65H,66H,67H,68H,69H,70H,71H
006A 68697071
006E 72737475 164 DB 72H,73H,74H,75H,76H,77H,78H,79H
0072 76777879
0076 80818283 165 DB 80H,81H,82H,83H,84H,85H,86H,87H
007A 84858687
007E 88899091 166 DB 88H,89H,90H,91H,92H,93H,94H,95H
0082 92939495
0086 96979899 167 DB 96H,97H,98H,99H
168
169 ;-------DS18B20初始化程序
008A 170 INIT_1820:
008A D2B3 171 SETB DQ
008C 00 172 NOP
008D C2B3 173 CLR DQ
008F 7880 174 MOV R0,#80H
0091 D8FE 175 TSR1: DJNZ R0,TSR1 ; 延時
0093 D2B3 176 SETB DQ
0095 7825 177 MOV R0,#25H ;96US-25H
0097 D8FE 178 TSR2: DJNZ R0,TSR2
A51 MACRO ASSEMBLER DS18B20 07/26/2007 20:21:38 PAGE 4
0099 30B303 179 JNB DQ,TSR3
009C 020000 F 180 LJMP TSR4 ; 延時
009F D200 181 TSR3: SETB FLAG1 ; 置標志位,表示DS1820存在
00A1 020000 F 182 LJMP TSR5
00A4 C200 183 TSR4: CLR FLAG1 ; 清標志位,表示DS1820不存在
00A6 020000 F 184 LJMP TSR7
00A9 786B 185 TSR5: MOV R0,#06BH ;200US
00AB D8FE 186 TSR6: DJNZ R0,TSR6 ; 延時
00AD D2B3 187 TSR7: SETB DQ
00AF 22 188 RET
189
190 ;-------重新寫DS18B20暫存存儲器設定值
00B0 191 RE_CONFIG:
00B0 200001 192 JB FLAG1,RE_CONFIG1 ; 若DS18B20存在,轉RE_CONFIG1
00B3 22 193 RET
00B4 194 RE_CONFIG1:
00B4 74CC 195 MOV A,#0CCH ; 發SKIP ROM命令
00B6 120000 F 196 LCALL WRITE_1820
00B9 744E 197 MOV A,#4EH ; 發寫暫存存儲器命令
00BB 120000 F 198 LCALL WRITE_1820
199
00BE 7400 200 MOV A,#00H ; TH(報警上限)中寫入00H
00C0 120000 F 201 LCALL WRITE_1820
00C3 7400 202 MOV A,#00H ; TL(報警下限)中寫入00H
00C5 120000 F 203 LCALL WRITE_1820
00C8 747F 204 MOV A,#7FH ; 選擇12位溫度分辨率
00CA 120000 F 205 LCALL WRITE_1820
00CD 22 206 RET
207
208 ;------------------延時子程序
00CE 209 DELAY:
00CE 7F00 210 MOV R7,#00H
00D0 DF01 211 MIN: DJNZ R7,YS500
00D2 22 212 RET
00D3 120000 F 213 YS500: LCALL YS500US
00D6 020000 F 214 LJMP MIN
00D9 7E00 215 YS500US:MOV R6,#00H
00DB DEFE 216 DJNZ R6,$
00DD 22 217 RET
00DE 7F20 218 DELAY1: MOV R7,#20H
00E0 DFFE 219 DJNZ R7,$
00E2 22 220 RET
221
222 END
A51 MACRO ASSEMBLER DS18B20 07/26/2007 20:21:38 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?PR?GET_TEMPER?DS18B20. C SEG 0095H REL=UNIT
?PR?_TEMPER_COV?DS18B20 C SEG 00E3H REL=UNIT
ABC . . . . . . . . . . C ADDR 0028H R SEG=?PR?GET_TEMPER?DS18B20
ACC . . . . . . . . . . D ADDR 00E0H A
BCD . . . . . . . . . . C ADDR 0002H R SEG=?PR?GET_TEMPER?DS18B20
BIN_BCD . . . . . . . . C ADDR 001DH R SEG=?PR?_TEMPER_COV?DS18B20
CBA . . . . . . . . . . C ADDR 001FH R SEG=?PR?GET_TEMPER?DS18B20
DELAY . . . . . . . . . C ADDR 00CEH R SEG=?PR?_TEMPER_COV?DS18B20
DELAY1. . . . . . . . . C ADDR 00DEH R SEG=?PR?_TEMPER_COV?DS18B20
DQ. . . . . . . . . . . B ADDR 00B0H.3 A
FLAG1 . . . . . . . . . B ADDR 0020H.0 A
GET_TEMPER. . . . . . . C ADDR 0000H R SEG=?PR?GET_TEMPER?DS18B20
INIT_1820 . . . . . . . C ADDR 008AH R SEG=?PR?_TEMPER_COV?DS18B20
MIN . . . . . . . . . . C ADDR 00D0H R SEG=?PR?_TEMPER_COV?DS18B20
P3. . . . . . . . . . . D ADDR 00B0H A
RE00. . . . . . . . . . C ADDR 0075H R SEG=?PR?GET_TEMPER?DS18B20
RE01. . . . . . . . . . C ADDR 0077H R SEG=?PR?GET_TEMPER?DS18B20
RE1 . . . . . . . . . . C ADDR 003FH R SEG=?PR?GET_TEMPER?DS18B20
READ_1820 . . . . . . . C ADDR 003DH R SEG=?PR?GET_TEMPER?DS18B20
READ_18200. . . . . . . C ADDR 0071H R SEG=?PR?GET_TEMPER?DS18B20
RE_CONFIG . . . . . . . C ADDR 00B0H R SEG=?PR?_TEMPER_COV?DS18B20
RE_CONFIG1. . . . . . . C ADDR 00B4H R SEG=?PR?_TEMPER_COV?DS18B20
S22 . . . . . . . . . . C ADDR 000BH R SEG=?PR?GET_TEMPER?DS18B20
TEMPER_COV1 . . . . . . C ADDR 000EH R SEG=?PR?_TEMPER_COV?DS18B20
TEMPER_H. . . . . . . . N NUMB 0035H A
TEMPER_L. . . . . . . . N NUMB 0036H A
TEMPER_NUM. . . . . . . N NUMB 0060H A
TEMP_TAB. . . . . . . . C ADDR 0026H R SEG=?PR?_TEMPER_COV?DS18B20
TSR1. . . . . . . . . . C ADDR 0091H R SEG=?PR?_TEMPER_COV?DS18B20
TSR2. . . . . . . . . . C ADDR 0097H R SEG=?PR?_TEMPER_COV?DS18B20
TSR3. . . . . . . . . . C ADDR 009FH R SEG=?PR?_TEMPER_COV?DS18B20
TSR4. . . . . . . . . . C ADDR 00A4H R SEG=?PR?_TEMPER_COV?DS18B20
TSR5. . . . . . . . . . C ADDR 00A9H R SEG=?PR?_TEMPER_COV?DS18B20
TSR6. . . . . . . . . . C ADDR 00ABH R SEG=?PR?_TEMPER_COV?DS18B20
TSR7. . . . . . . . . . C ADDR 00ADH R SEG=?PR?_TEMPER_COV?DS18B20
WR1 . . . . . . . . . . C ADDR 005CH R SEG=?PR?GET_TEMPER?DS18B20
WRITE_1820. . . . . . . C ADDR 0059H R SEG=?PR?GET_TEMPER?DS18B20
YS500 . . . . . . . . . C ADDR 00D3H R SEG=?PR?_TEMPER_COV?DS18B20
YS500US . . . . . . . . C ADDR 00D9H R SEG=?PR?_TEMPER_COV?DS18B20
_TEMPER_COV . . . . . . C ADDR 0000H R SEG=?PR?_TEMPER_COV?DS18B20
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -