📄 text1.lst
字号:
190: 0133 D2 02 SETB FLAG3
191: 0135 LOGIC4:
192: 0135 20 01 05 JB FLAG2,LOGIC7
193: 0138 D5 39 02 DJNZ WATER1,LOGIC7
194: 013B D2 01 SETB FLAG2
195: 013D LOGIC7:
196: 013D 75 37 00 MOV MINUTE,#00H
197: 0140 05 36 INC HOUR ;时
198: 0142 E5 36 MOV A,HOUR
199:
200: 0144 B4 18 03 CJNE A,#24,COMEBACK
201:
202: 0147 75 36 00 MOV HOUR,#00H
203: 014A COMEBACK:
204: 014A D0 E0 POP ACC
205: 014C D0 D0 POP PSW
206: 014E 32 RETI
207: ;=====================================================
208: ;采集温度命令发出,及温度数据采回.
209: ;=====================================================
210: 014F TRANSFORM:
211: 014F 12 01 78 LCALL RESET0
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 5
Line I Addr Code Source
212: 0152 30 00 FA JNB FLAG1,TRANSFORM
213: 0155 74 CC MOV A,#0CCH ; 跳过ROM匹配
214: 0157 12 01 A2 LCALL WRITE
215: 015A 74 44 MOV A,#044H ; 发出温度转换命令
216: 015C 12 01 A2 LCALL WRITE
217: 015F 22 RET
218:
219: 0160 C2 8E GETTEMP: CLR TR1
220: 0162 12 01 78 LCALL RESET0
221: 0165 30 00 F8 JNB FLAG1,GETTEMP
222: 0168 74 CC MOV A,#0CCH ; 跳过ROM匹配
223: 016A 12 01 A2 LCALL WRITE
224: 016D 74 BE MOV A,#0BEH ; 发出读温度命令
225: 016F 12 01 A2 LCALL WRITE
226: 0172 12 01 BB LCALL READ ;读温度数据
227: 0175 D2 8E SETB TR1
228: 0177 22 RET
229: ;=====================================================
230: ;DS18B20 复位与检测子程序
231: ;FLAG1=1 OK, FLAG1=0 ERROR
232: ;=====================================================
233: 0178 RESET0:
234: 0178 D2 97 SETB TX
235: 017A 00 NOP
236: 017B C2 97 CLR TX
237: 017D 7F 64 MOV R7,#64H ;主机发出延时600微秒的复位低脉冲
238: 017F 7E 03 MOV R6,#03H
239: 0181 DF FE RESET1: DJNZ R7,$ ;200v
240: 0183 7F 64 MOV R7,#64H
241: 0185 DE FA DJNZ R6,RESET1
242: 0187 D2 97 SETB TX ;然后拉高数据线
243: 0189 00 NOP
244: 018A 7F 25 MOV R7,#25H
245: 018C 30 96 04 RESET2: JNB RX,RESET3 ;等待DS18B20回应
246: 018F DF FB DJNZ R7,RESET2
247: 0191 80 04 SJMP RESET4 ; 延时
248: 0193 D2 00 RESET3: SETB FLAG1 ; 置标志位,表示DS1820存在
249: 0195 80 04 SJMP RESET5
250: 0197 C2 00 RESET4: CLR FLAG1 ; 清标志位,表示DS1820不存在
251: 0199 80 04 SJMP RESET6
252: 019B 78 F0 RESET5: MOV R0,#0F0H
253: 019D D8 FE DJNZ R0,$ ; 时序要求延时一段时间
254: 019F D2 97 RESET6: SETB TX
255: 01A1 22 RET
256: ;======================================================
257: ;写1BYTE数据
258: ;======================================================
259: 01A2 7F 08 WRITE: MOV R7,#8 ;一共8位数据
260: 01A4 C2 D7 CLR CY
261: 01A6 WR1:
262: 01A6 C2 97 CLR TX ;开始写入DS18B20总线要处于复位(低)状态
263: 01A8 7E 09 MOV R6,#09
264: 01AA DE FE DJNZ R6,$ ;总线复位保持18微妙以上
265: 01AC 13 RRC A ;把一个字节DATA 分成8个BIT环移给C
266: 01AD 92 97 MOV TX,C ;写入一个BIT
267: 01AF 7E 17 MOV R6,#23
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 6
Line I Addr Code Source
268: 01B1 DE FE DJNZ R6,$ ;等待46微妙
269: 01B3 D2 97 SETB TX ;重新释放总线
270: 01B5 00 NOP
271: 01B6 DF EE DJNZ R7,WR1 ;写入下一个BIT
272: 01B8 D2 97 SETB TX
273: 01BA 22 RET
274: ;======================================================
275: ;从DS18B20中读出温度低位、高位和报警值TH、TL
276: ;存入26H、27H、28H、29H
277: ;======================================================
278: 01BB 7C 04 READ: MOV R4,#4 ; 将温度高位和低位从DS18B20中读出
279: 01BD 79 26 MOV R1,#26H ; 存入26H、27H、28H、29H
280: 01BF 7A 08 RE00: MOV R2,#8
281: 01C1 C3 RE01: CLR C
282: 01C2 D2 97 SETB TX
283: 01C4 00 NOP
284: 01C5 00 NOP
285: 01C6 C2 97 CLR TX ;读前总线保持为低
286: 01C8 00 NOP
287: 01C9 00 NOP
288: 01CA 00 NOP
289: 01CB D2 97 SETB TX ;开始读总线释放
290: 01CD 7B 09 MOV R3,#09 ;延时18微妙
291: 01CF DB FE DJNZ R3,$
292: 01D1 A2 96 MOV C,RX ;从DS18B20总线读得一个BIT
293: 01D3 7B 17 MOV R3,#23
294: 01D5 DB FE DJNZ R3,$ ;等待46微妙
295: 01D7 13 RRC A ;把读得的位值环移给A
296: 01D8 DA E7 DJNZ R2,RE01 ;读下一个BIT
297: 01DA F7 MOV @R1,A
298: 01DB 09 INC R1
299: 01DC DC E1 DJNZ R4,RE00
300: 01DE 22 RET
301:
302: ;=======================================================
303: ;采集温度转化:符号位存于TEMP1(30H),
304: ;整数位存于TEMP2(31H),
305: ;小数位存于TEMP3(32H).
306: ;=======================================================
307: 01DF CONVERT:
308: 01DF 12 01 ED LCALL CONVERTZ
309: 01E2 E5 30 MOV A,TEMP1
310: 01E4 B4 00 02 CJNE A,#00H,LOOP
311: 01E7 80 03 SJMP FANHUI
312: 01E9 12 02 1B LOOP: LCALL CONVERTF
313: 01EC 22 FANHUI: RET
314:
315: 01ED CONVERTZ: ;采集温度为+。
316: 01ED 7F 03 MOV R7,#3
317: 01EF E5 27 MOV A,27H
318: 01F1 C3 CONVERT1: CLR C
319: 01F2 13 RRC A
320: 01F3 DF FC DJNZ R7,CONVERT1
321: 01F5 F5 30 MOV TEMP1,A
322:
323: 01F7 7F 04 MOV R7,#4
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 7
Line I Addr Code Source
324: 01F9 E5 27 MOV A,TEMPH
325: 01FB 85 26 34 MOV ZC2,TEMPL
326: 01FE C3 CONVERT2: CLR C
327: 01FF 13 RRC A
328: 0200 F5 33 MOV ZC1,A
329: 0202 E5 26 MOV A,TEMPL
330: 0204 13 RRC A
331: 0205 F5 26 MOV TEMPL,A
332: 0207 E5 33 MOV A,ZC1
333: 0209 DF F3 DJNZ R7,CONVERT2
334: 020B E5 26 MOV A,TEMPL
335: 020D C2 E7 CLR ACC.7
336: 020F F5 31 MOV TEMP2,A
337: 0211 85 34 26 MOV TEMPL,ZC2
338:
339: 0214 E5 26 CONVERT3: MOV A,TEMPL
340: 0216 54 0F ANL A,#0FH
341: 0218 F5 32 MOV TEMP3,A
342: 021A 22 RET
343:
344: 021B CONVERTF: ;采集温度为-。
345: 021B E5 32 MOV A,TEMP3
346: 021D F4 CPL A
347: 021E 54 0F ANL A,#0FH
348: 0220 F5 32 MOV TEMP3,A
349:
350: 0222 E5 31 MOV A,TEMP2
351: 0224 F4 CPL A
352: 0225 54 7F ANL A,#7FH
353: 0227 F5 31 MOV TEMP2,A
354:
355: 0229 E5 32 MOV A,TEMP3
356: 022B 24 01 ADD A,#01H
357: 022D B4 10 0B CJNE A,#10H,LOOP1
358: 0230 75 32 00 MOV TEMP3,#0
359: 0233 E5 31 MOV A,TEMP2
360: 0235 24 01 ADD A,#01H
361: 0237 F5 31 MOV TEMP2,A
362: 0239 80 02 SJMP RETURN
363: 023B F5 32 LOOP1: MOV TEMP3,A
364: 023D 22 RETURN: RET
365: ;=======================================================
366: ;延时子程序
367: ;=======================================================
368: 023E DELAY: ;(1S)
369: 023E 7F 0A MOV R7,#10
370: 0240 7E C8 D1: MOV R6,#200
371: 0242 7D FA D2: MOV R5,#250
372: 0244 DD FE DJNZ R5,$
373: 0246 DE FA DJNZ R6,D2
374: 0248 DF F6 DJNZ R7,D1
375: 024A 22 RET
376:
377: 024B DELAY1: ;(4MS)
378: 024B 7E 0A MOV R6,#10
379: 024D 7D C8 D3: MOV R5,#200
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 8
Line I Addr Code Source
380: 024F DD FE DJNZ R5,$
381: 0251 DE FA DJNZ R6,D3
382: 0253 22 RET
383: ;=======================================================
384: ;温度表
385: ;=======================================================
386: 0254 00 01 01 02 TAB1: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,08H,09H,09H ;采集小数位(四舍五入).
0258 03 03 04 04
025C 05 06 06 07
0260 08 08 09 09
387:
388: 0264 BF 86 DB CF TAB2: DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;个位带小数点(共阴带小
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -