?? wdj.lst
字號:
8215 C4 177 SWAP A
8216 2537 178 ADD A,TEMPER_NUM
8218 F537 179 MOV TEMPER_NUM,A ; 保存變換后的溫度數據
180
821A 12821E 181 LCALL BIN_BCD
182
821D 22 183 RET
184
185
186 ;-------將16進制的溫度數據轉換成壓縮BCD碼
821E 187 BIN_BCD:
821E 908227 188 MOV DPTR,#TEMP_TAB
8221 E537 189 MOV A,TEMPER_NUM
8223 93 190 MOVC A,@A+DPTR
A51 MACRO ASSEMBLER WDJ 01/22/2007 15:43:45 PAGE 4
8224 F537 191 MOV TEMPER_NUM,A
8226 22 192 RET
8227 193 TEMP_TAB:
8227 00010203 194 DB 00H,01H,02H,03H,04H,05H,06H,07H
822B 04050607
822F 08091011 195 DB 08H,09H,10H,11H,12H,13H,14H,15H
8233 12131415
8237 16171819 196 DB 16H,17H,18H,19H,20H,21H,22H,23H
823B 20212223
823F 24252627 197 DB 24H,25H,26H,27H,28H,29H,30H,31H
8243 28293031
8247 32333435 198 DB 32H,33H,34H,35H,36H,37H,38H,39H
824B 36373839
824F 40414243 199 DB 40H,41H,42H,43H,44H,45H,46H,47H
8253 44454647
8257 48495051 200 DB 48H,49H,50H,51H,52H,53H,54H,55H
825B 52535455
825F 56575859 201 DB 56H,57H,58H,59H,60H,61H,62H,63H
8263 60616263
8267 64656667 202 DB 64H,65H,66H,67H,68H,69H,70H,71H
826B 68697071
826F 72737475 203 DB 72H,73H,74H,75H,76H,77H,78H,79H
8273 76777879
8277 80818283 204 DB 80H,81H,82H,83H,84H,85H,86H,87H
827B 84858687
827F 88899091 205 DB 88H,89H,90H,91H,92H,93H,94H,95H
8283 92939495
8287 96979899 206 DB 96H,97H,98H,99H
828B 207 CIN_BCD:
828B 908294 208 MOV DPTR,#TEMP_CAB
828E E545 209 MOV A,TEMPER_SUB
8290 93 210 MOVC A,@A+DPTR
8291 F545 211 MOV TEMPER_SUB,A
8293 22 212 RET
8294 213 TEMP_CAB:
8294 00010203 214 DB 00H,01H,02H,03H,04H,05H,06H,07H
8298 04050607
829C 08091011 215 DB 08H,09H,10H,11H,12H,13H,14H,15H
82A0 12131415
82A4 16171819 216 DB 16H,17H,18H,19H,20H,21H,22H,23H
82A8 20212223
82AC 24252627 217 DB 24H,25H,26H,27H,28H,29H,30H,31H
82B0 28293031
82B4 32333435 218 DB 32H,33H,34H,35H,36H,37H,38H,39H
82B8 36373839
82BC 40414243 219 DB 40H,41H,42H,43H,44H,45H,46H,47H
82C0 44454647
82C4 48495051 220 DB 48H,49H,50H,51H,52H,53H,54H,55H
82C8 52535455
82CC 56575859 221 DB 56H,57H,58H,59H,60H,61H,62H,63H
82D0 60616263
82D4 64656667 222 DB 64H,65H,66H,67H,68H,69H,70H,71H
82D8 68697071
82DC 72737475 223 DB 72H,73H,74H,75H,76H,77H,78H,79H
82E0 76777879
82E4 80818283 224 DB 80H,81H,82H,83H,84H,85H,86H,87H
82E8 84858687
82EC 88899091 225 DB 88H,89H,90H,91H,92H,93H,94H,95H
82F0 92939495
82F4 96979899 226 DB 96H,97H,98H,99H
227 ;-------DS18B20初始化程序
82F8 228 INIT_1820:
82F8 D2B3 229 SETB DQ
82FA 00 230 NOP
82FB C2B3 231 CLR DQ
82FD 7880 232 MOV R0,#80H
A51 MACRO ASSEMBLER WDJ 01/22/2007 15:43:45 PAGE 5
82FF D8FE 233 TSR1: DJNZ R0,TSR1 ; 延時
8301 D2B3 234 SETB DQ
8303 7825 235 MOV R0,#25H ;96US-25H
8305 D8FE 236 TSR2: DJNZ R0,TSR2
8307 30B303 237 JNB DQ,TSR3
830A 028312 238 LJMP TSR4 ; 延時
830D D200 239 TSR3: SETB FLAG1 ; 置標志位,表示DS1820存在
830F 028317 240 LJMP TSR5
8312 C200 241 TSR4: CLR FLAG1 ; 清標志位,表示DS1820不存在
8314 02831B 242 LJMP TSR7
8317 786B 243 TSR5: MOV R0,#06BH ;200US
8319 D8FE 244 TSR6: DJNZ R0,TSR6 ; 延時
831B D2B3 245 TSR7: SETB DQ
831D 22 246 RET
247
248 ;-------重新寫DS18B20暫存存儲器設定值
831E 249 RE_CONFIG:
831E 200001 250 JB FLAG1,RE_CONFIG1 ; 若DS18B20存在,轉RE_CONFIG1
8321 22 251 RET
8322 252 RE_CONFIG1:
8322 74CC 253 MOV A,#0CCH ; 發SKIP ROM命令
8324 1281C7 254 LCALL WRITE_1820
8327 744E 255 MOV A,#4EH ; 發寫暫存存儲器命令
8329 1281C7 256 LCALL WRITE_1820
257
832C 7400 258 MOV A,#00H ; TH(報警上限)中寫入00H
832E 1281C7 259 LCALL WRITE_1820
8331 7400 260 MOV A,#00H ; TL(報警下限)中寫入00H
8333 1281C7 261 LCALL WRITE_1820
8336 747F 262 MOV A,#7FH ; 選擇12位溫度分辨率
8338 1281C7 263 LCALL WRITE_1820
833B 22 264 RET
265
266 ;------------------延時子程序
833C 267 DELAY:
833C 7F00 268 MOV R7,#00H
833E DF01 269 MIN: DJNZ R7,YS500
8340 22 270 RET
8341 128347 271 YS500: LCALL YS500US
8344 02833E 272 LJMP MIN
8347 7E00 273 YS500US:MOV R6,#00H
8349 DEFE 274 DJNZ R6,$
834B 22 275 RET
834C 7F20 276 DELAY1: MOV R7,#20H
834E DFFE 277 DJNZ R7,$
8350 22 278 RET
279
280 ;$include (VI2C_ASM.INC) ;包含VIIC軟件包
+1 281 ;------------------------------------------------------------------------------------------
--------------
+1 282 ; MCS-51單片機模擬I2C軟件包(V1.1)
+1 283 ; 文件名:VI2C_ASM.INC
+1 284 ; 功能說明:本模擬I2C軟件包包含了I2C操作的底層子程序,使用前要定義
+1 285 ;好SCL和SDA。在標準8051模式(12 Clock)下,對主頻要求是不高于12MHz(即1個
+1 286 ;機器周期1us);若Fosc>12MHz則要增加相應的NOP指令數(總線時序符合I2C標
+1 287 ;準模式,100Kbit/S)
+1 288 ; 版本說明:本版新增了兩個子程序,IWRNBYTEEXT,IRDNBYTEEXT兩個子程序,
+1 289 ;這兩個子程序用于主從通訊上及一此特殊器件的讀寫操作較為方便.
+1 290 ; 更新時間:2002.06.04
+1 291 ;------------------------------------------------------------------------------------------
--------------
+1 292
+1 293 ;啟動I2C總線子程序
8351 D297 +1 294 START: SETB SDA
8353 00 +1 295 NOP
8354 D296 +1 296 SETB SCL ;起始條件建立時間大于4.7us
A51 MACRO ASSEMBLER WDJ 01/22/2007 15:43:45 PAGE 6
8356 00 +1 297 NOP
8357 00 +1 298 NOP
8358 00 +1 299 NOP
8359 00 +1 300 NOP
835A 00 +1 301 NOP
835B C297 +1 302 CLR SDA
835D 00 +1 303 NOP ;起始條件鎖定時大于4us
835E 00 +1 304 NOP
835F 00 +1 305 NOP
8360 00 +1 306 NOP
8361 00 +1 307 NOP
8362 C296 +1 308 CLR SCL ;鉗住總線,準備發數據
8364 00 +1 309 NOP
8365 22 +1 310 RET
+1 311
+1 312 ;結束總線子程序
8366 C297 +1 313 STOP: CLR SDA
8368 00 +1 314 NOP
8369 D296 +1 315 SETB SCL ;發送結束條件的時鐘信號
836B 00 +1 316 NOP ;結束總線時間大于4us
836C 00 +1 317 NOP
836D 00 +1 318 NOP
836E 00 +1 319 NOP
836F 00 +1 320 NOP
8370 D297 +1 321 SETB SDA ;結束總線
8372 00 +1 322 NOP ;保證一個終止信號和起始信號的空閑時間大于4.7us
8373 00 +1 323 NOP
8374 00 +1 324 NOP
8375 00 +1 325 NOP
8376 22 +1 326 RET
+1 327
+1 328 ;發送應答信號子程序
8377 C297 +1 329 MACK: CLR SDA ;將SDA置0
8379 00 +1 330 NOP
837A 00 +1 331 NOP
837B D296 +1 332 SETB SCL
837D 00 +1 333 NOP ;保持示菔奔洌
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -