📄 tcmain.lst
字号:
282 3 }
283 2 }
284 1
285 1 //转LED字段
286 1 if (LED_One) //超过百时十位的处理
287 1 LED_Two = LEDDis[LED_Two];
288 1 else
289 1 {
290 2 if (LED_Two == 0)
291 2 LED_Two = LEDDis[10];
292 2 else
293 2 LED_Two = LEDDis[LED_Two];
294 2 }
295 1 if (Sign)
296 1 LED_One = LEDDis[11];
297 1 else
298 1 {
299 2 if (LED_One == 0)
300 2 LED_One = LEDDis[10];
301 2 else
C51 COMPILER V7.09 TCMAIN 06/27/2004 13:42:31 PAGE 6
302 2 LED_One = LEDDis[LED_One];
303 2 }
304 1 LED_Three = LEDDis[LED_Three];
305 1 }
306
307 void InitDS1820(void) //初始化DS1820
308 {
309 1 TMPort = 1; //拉高TMPort
310 1 _nop_(); //保持一个周期
311 1 TMPort = 0; //拉低TMPort
312 1 Delay_510(); //延时 DS1820复位时间要500us的低电平
313 1 TMPort = 1; //拉高TMPort
314 1 _nop_(); //保持
315 1 _nop_();
316 1 _nop_();
317 1
318 1 Delay_110(); //延时110us 等待DS1820回应
319 1 if (!TMPort) //回应信号为低电平
320 1 DS1820ON = 1;
321 1 else
322 1 DS1820ON = 0;
323 1 Delay_110(); //延时
324 1 Delay_110();
325 1 TMPort = 1; //拉高TMPort
326 1 }
327
328 void ROMDS1820(void) //跳过ROM匹配
329 {
330 1 #pragma asm
331 1 MOV A,#0CCH
332 1 MOV R2,#8
333 1 CLR C
334 1 WR1:
335 1 CLR P3_7
336 1 MOV R3,#6
337 1 DJNZ R3,$
338 1 RRC A
339 1 MOV P3_7,C
340 1 MOV R3,#23
341 1 DJNZ R3,$
342 1 SETB P3_7
343 1 NOP
344 1 DJNZ R2,WR1
345 1 SETB P3_7
346 1 #pragma endasm
347 1 }
348
349 void TMVDS1820(void) //温度转换指令
350 {
351 1 #pragma asm
352 1 MOV A,#44H
353 1 MOV R2,#8
354 1 CLR C
355 1 WR2:
356 1 CLR P3_7
357 1 MOV R3,#6
358 1 DJNZ R3,$
359 1 RRC A
360 1 MOV P3_7,C
361 1 MOV R3,#23
362 1 DJNZ R3,$
363 1 SETB P3_7
C51 COMPILER V7.09 TCMAIN 06/27/2004 13:42:31 PAGE 7
364 1 NOP
365 1 DJNZ R2,WR2
366 1 SETB P3_7
367 1 #pragma endasm
368 1 }
369
370 void TMRDS1820(void) //读出温度指令
371 {
372 1 #pragma asm
373 1 MOV A,#0BEH
374 1 MOV R2,#8
375 1 CLR C
376 1 WR3:
377 1 CLR P3_7
378 1 MOV R3,#6
379 1 DJNZ R3,$
380 1 RRC A
381 1 MOV P3_7,C
382 1 MOV R3,#23
383 1 DJNZ R3,$
384 1 SETB P3_7
385 1 NOP
386 1 DJNZ R2,WR3
387 1 SETB P3_7
388 1 #pragma endasm
389 1 }
390
391 void TMWDS1820(void) //写入温度限制指令
392 {
393 1 #pragma asm
394 1 MOV A,#04EH
395 1 MOV R2,#8
396 1 CLR C
397 1 WR13:
398 1 CLR P3_7
399 1 MOV R3,#6
400 1 DJNZ R3,$
401 1 RRC A
402 1 MOV P3_7,C
403 1 MOV R3,#23
404 1 DJNZ R3,$
405 1 SETB P3_7
406 1 NOP
407 1 DJNZ R2,WR13
408 1 SETB P3_7
409 1 #pragma endasm
410 1 }
411
412 void TMREDS1820(void) //COPY RAM to E2PRAM
413 {
414 1 #pragma asm
415 1 MOV A,#48H
416 1 MOV R2,#8
417 1 CLR C
418 1 WR33:
419 1 CLR P3_7
420 1 MOV R3,#6
421 1 DJNZ R3,$
422 1 RRC A
423 1 MOV P3_7,C
424 1 MOV R3,#23
425 1 DJNZ R3,$
C51 COMPILER V7.09 TCMAIN 06/27/2004 13:42:31 PAGE 8
426 1 SETB P3_7
427 1 NOP
428 1 DJNZ R2,WR33
429 1 SETB P3_7
430 1 #pragma endasm
431 1 }
432
433 void TMERDS1820(void) //COPY E2PRAM to RAM
434 {
435 1 #pragma asm
436 1 MOV A,#0B8H
437 1 MOV R2,#8
438 1 CLR C
439 1 WR43:
440 1 CLR P3_7
441 1 MOV R3,#6
442 1 DJNZ R3,$
443 1 RRC A
444 1 MOV P3_7,C
445 1 MOV R3,#23
446 1 DJNZ R3,$
447 1 SETB P3_7
448 1 NOP
449 1 DJNZ R2,WR43
450 1 SETB P3_7
451 1 #pragma endasm
452 1 }
453
454 void WriteDS1820(void) //写入温度限制值
455 {
456 1 #pragma asm
457 1 MOV A,26H //发出4EH写ROM指令后连发两个字节分别为上下限
458 1 MOV R2,#8
459 1 CLR C
460 1 WR23:
461 1 CLR P3_7
462 1 MOV R3,#6
463 1 DJNZ R3,$
464 1 RRC A
465 1 MOV P3_7,C
466 1 MOV R3,#23
467 1 DJNZ R3,$
468 1 SETB P3_7
469 1 NOP
470 1 DJNZ R2,WR23
471 1 SETB P3_7
472 1 #pragma endasm
473 1 }
474
475 void ReadDS1820(void) //读出温度值
476 {
477 1 #pragma asm
478 1 MOV R4,#3 ; 将温度高位和低位,高温限制位从DS18B20中读出
479 1 MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H),高温限制位存入27H(TMRomV)
480 1 RE00:
481 1 MOV R2,#8
482 1 RE01:
483 1 CLR C
484 1 SETB P3_7
485 1 NOP
486 1 NOP
487 1 CLR P3_7
C51 COMPILER V7.09 TCMAIN 06/27/2004 13:42:31 PAGE 9
488 1 NOP
489 1 NOP
490 1 NOP
491 1 SETB P3_7
492 1 MOV R3,#09
493 1 RE10:
494 1 DJNZ R3,RE10
495 1 MOV C,P3_7
496 1 MOV R3,#23
497 1 RE20:
498 1 DJNZ R3,RE20
499 1 RRC A
500 1 DJNZ R2,RE01
501 1 MOV @R1,A
502 1 DEC R1
503 1 DJNZ R4,RE00
504 1 #pragma endasm
505 1 }
506
507 void Delay_510(void) //延时510微秒
508 {
509 1 #pragma asm
510 1 MOV R0,#7DH
511 1 MOV R1,#02H
512 1 TSR1:
513 1 DJNZ R0,TSR1
514 1 MOV R0,#7DH
515 1 DJNZ R1,TSR1
516 1 #pragma endasm
517 1 }
518
519 void Delay_110(void) //延时110微秒
520 {
521 1 #pragma asm
522 1 MOV R0,#19H
523 1 MOV R1,#02H
524 1 TSR2:
525 1 DJNZ R0,TSR2
526 1 MOV R0,#19H
527 1 DJNZ R1,TSR2
528 1 #pragma endasm
529 1 }
530
531 void Delay_10ms(void) //延时10ms
532 {
533 1 #pragma asm
534 1 MOV R0,#19H
535 1 MOV R1,#0C8H
536 1 TSR3:
537 1 DJNZ R0,TSR3
538 1 MOV R0,#19H
539 1 DJNZ R1,TSR3
540 1 #pragma endasm
541 1 }
542
543 void Delay_4s(void) //延时4s
544 {
545 1 #pragma asm
546 1 MOV R2,#28H
547 1 TSR5:
548 1 MOV R0,#0FAH
549 1 MOV R1,#0C8H
C51 COMPILER V7.09 TCMAIN 06/27/2004 13:42:31 PAGE 10
550 1 TSR4:
551 1 DJNZ R0,TSR4
552 1 MOV R0,#0FAH
553 1 DJNZ R1,TSR4
554 1 DJNZ R2,TSR5
555 1 #pragma endasm
556 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1186 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -