📄 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 + -