📄 tcmain.lst
字号:
331 2 LEDTwoC = 0;
332 2 Delay_510();
333 2 LEDTwoC = 1; //显示十位数
334 2 LEDPort = LED_Three;
335 2 LEDThreeC = 0;
336 2 Delay_510();
337 2 LEDThreeC = 1; //显示个位数
338 2 }
339 1 InitEnd:;
340 1 }
341
342 void V2ToV(void) //数值转换
343 {
344 1 TLV = TLV >> 4;
345 1 THV = THV << 4; //读出的高低位数值移位
346 1 TMV = TLV | THV; //合并高低位放入TM为实际温度值
347 1 Sign = 0;
348 1 if (SetTF || !Key_SET)
349 1 Sign = TMSetV >> 7; //取符号
350 1 else
351 1 Sign = TMV >> 7;
352 1
353 1 if (Sign)
354 1 {
355 2 if (SetTF || !Key_SET)
356 2 {
357 3 LED_One = (~(TMSetV-1)) / 100; //SET状态下显示设定值
358 3 LED_Two = ((~(TMSetV-1)) - LED_One * 100)/10;
359 3 LED_Three = (~(TMSetV-1)) - LED_One * 100 - LED_Two * 10;
360 3 }
361 2 else
362 2 {
363 3 LED_One = (~(TMV-1)) / 100; //转换百位值
C51 COMPILER V7.06 TCMAIN 01/06/2008 17:24:20 PAGE 7
364 3 LED_Two = ((~(TMV-1)) - LED_One * 100)/10;
365 3 LED_Three = (~(TMV-1)) - LED_One * 100 - LED_Two * 10;
366 3 }
367 2 }
368 1 else
369 1 {
370 2 if (SetTF || !Key_SET)
371 2 {
372 3 LED_One = (TMSetV) / 100; //SET状态下显示设定值
373 3 LED_Two = (TMSetV - LED_One * 100)/10;
374 3 LED_Three = TMSetV - LED_One * 100 - LED_Two * 10;
375 3 }
376 2 else
377 2 {
378 3 LED_One = (TMV) / 100; //转换百位值
379 3 LED_Two = (TMV - LED_One * 100)/10;
380 3 LED_Three = TMV - LED_One * 100 - LED_Two * 10;
381 3 }
382 2 }
383 1
384 1 //转LED字段
385 1 if (LED_One) //超过百时十位的处理
386 1 LED_Two = LEDDis[LED_Two];
387 1 else
388 1 {
389 2 if (LED_Two == 0)
390 2 LED_Two = LEDDis[10];
391 2 else
392 2 LED_Two = LEDDis[LED_Two];
393 2 }
394 1 if (Sign)
395 1 LED_One = LEDDis[11];
396 1 else
397 1 {
398 2 if (LED_One == 0)
399 2 LED_One = LEDDis[10];
400 2 else
401 2 LED_One = LEDDis[LED_One];
402 2 }
403 1 LED_Three = LEDDis[LED_Three];
404 1 }
405
406 void InitDS1820(void) //初始化DS1820
407 {
408 1 TMPort = 1; //拉高TMPort
409 1 _nop_(); //保持一个周期
410 1 TMPort = 0; //拉低TMPort
411 1 Delay_510(); //延时 DS1820复位时间要500us的低电平
412 1 TMPort = 1; //拉高TMPort
413 1 _nop_(); //保持
414 1 _nop_();
415 1 _nop_();
416 1
417 1 Delay_110(); //延时110us 等待DS1820回应
418 1 if (!TMPort) //回应信号为低电平
419 1 DS1820ON = 1;
420 1 else
421 1 DS1820ON = 0;
422 1 Delay_110(); //延时
423 1 Delay_110();
424 1 TMPort = 1; //拉高TMPort
425 1 }
C51 COMPILER V7.06 TCMAIN 01/06/2008 17:24:20 PAGE 8
426
427 void ROMDS1820(void) //跳过ROM匹配
428 {
429 1 #pragma asm
430 1 MOV A,#0CCH
431 1 MOV R2,#8
432 1 CLR C
433 1 WR1:
434 1 CLR P3_0
435 1 MOV R3,#6
436 1 DJNZ R3,$
437 1 RRC A
438 1 MOV P3_0,C
439 1 MOV R3,#23
440 1 DJNZ R3,$
441 1 SETB P3_0
442 1 NOP
443 1 DJNZ R2,WR1
444 1 SETB P3_0
445 1 #pragma endasm
446 1 }
447
448 void TMVDS1820(void) //温度转换指令
449 {
450 1 #pragma asm
451 1 MOV A,#44H
452 1 MOV R2,#8
453 1 CLR C
454 1 WR2:
455 1 CLR P3_0
456 1 MOV R3,#6
457 1 DJNZ R3,$
458 1 RRC A
459 1 MOV P3_0,C
460 1 MOV R3,#23
461 1 DJNZ R3,$
462 1 SETB P3_0
463 1 NOP
464 1 DJNZ R2,WR2
465 1 SETB P3_0
466 1 #pragma endasm
467 1 }
468
469 void TMRDS1820(void) //读出温度指令
470 {
471 1 #pragma asm
472 1 MOV A,#0BEH
473 1 MOV R2,#8
474 1 CLR C
475 1 WR3:
476 1 CLR P3_0
477 1 MOV R3,#6
478 1 DJNZ R3,$
479 1 RRC A
480 1 MOV P3_0,C
481 1 MOV R3,#23
482 1 DJNZ R3,$
483 1 SETB P3_0
484 1 NOP
485 1 DJNZ R2,WR3
486 1 SETB P3_0
487 1 #pragma endasm
C51 COMPILER V7.06 TCMAIN 01/06/2008 17:24:20 PAGE 9
488 1 }
489
490 void TMWDS1820(void) //写入温度限制指令
491 {
492 1 #pragma asm
493 1 MOV A,#04EH
494 1 MOV R2,#8
495 1 CLR C
496 1 WR13:
497 1 CLR P3_0
498 1 MOV R3,#6
499 1 DJNZ R3,$
500 1 RRC A
501 1 MOV P3_0,C
502 1 MOV R3,#23
503 1 DJNZ R3,$
504 1 SETB P3_0
505 1 NOP
506 1 DJNZ R2,WR13
507 1 SETB P3_0
508 1 #pragma endasm
509 1 }
510
511 void TMREDS1820(void) //COPY RAM to E2PRAM
512 {
513 1 #pragma asm
514 1 MOV A,#48H
515 1 MOV R2,#8
516 1 CLR C
517 1 WR33:
518 1 CLR P3_0
519 1 MOV R3,#6
520 1 DJNZ R3,$
521 1 RRC A
522 1 MOV P3_0,C
523 1 MOV R3,#23
524 1 DJNZ R3,$
525 1 SETB P3_0
526 1 NOP
527 1 DJNZ R2,WR33
528 1 SETB P3_0
529 1 #pragma endasm
530 1 }
531
532 void TMERDS1820(void) //COPY E2PRAM to RAM
533 {
534 1 #pragma asm
535 1 MOV A,#0B8H
536 1 MOV R2,#8
537 1 CLR C
538 1 WR43:
539 1 CLR P3_0
540 1 MOV R3,#6
541 1 DJNZ R3,$
542 1 RRC A
543 1 MOV P3_0,C
544 1 MOV R3,#23
545 1 DJNZ R3,$
546 1 SETB P3_0
547 1 NOP
548 1 DJNZ R2,WR43
549 1 SETB P3_0
C51 COMPILER V7.06 TCMAIN 01/06/2008 17:24:20 PAGE 10
550 1 #pragma endasm
551 1 }
552
553 void WriteDS1820(void) //写入温度限制值
554 {
555 1 #pragma asm
556 1 MOV A,26H //发出4EH写ROM指令后连发两个字节分别为上下限
557 1 MOV R2,#8
558 1 CLR C
559 1 WR23:
560 1 CLR P3_0
561 1 MOV R3,#6
562 1 DJNZ R3,$
563 1 RRC A
564 1 MOV P3_0,C
565 1 MOV R3,#23
566 1 DJNZ R3,$
567 1 SETB P3_0
568 1 NOP
569 1 DJNZ R2,WR23
570 1 SETB P3_0
571 1 #pragma endasm
572 1 }
573
574 void ReadDS1820(void) //读出温度值
575 {
576 1 #pragma asm
577 1 MOV R4,#3 ; 将温度高位和低位,高温限制位从DS18B20中读出
578 1 MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H),高温限制位存入27H(TMRomV)
579 1 RE00:
580 1 MOV R2,#8
581 1 RE01:
582 1 CLR C
583 1 SETB P3_0
584 1 NOP
585 1 NOP
586 1 CLR P3_0
587 1 NOP
588 1 NOP
589 1 NOP
590 1 SETB P3_0
591 1 MOV R3,#09
592 1 RE10:
593 1 DJNZ R3,RE10
594 1 MOV C,P3_0
595 1 MOV R3,#23
596 1 RE20:
597 1 DJNZ R3,RE20
598 1 RRC A
599 1 DJNZ R2,RE01
600 1 MOV @R1,A
601 1 DEC R1
602 1 DJNZ R4,RE00
603 1 #pragma endasm
604 1 }
605
606 void Delay_510(void) //延时510微秒
607 {
608 1 #pragma asm
609 1 MOV R0,#7DH
610 1 MOV R1,#02H
611 1 TSR1:
C51 COMPILER V7.06 TCMAIN 01/06/2008 17:24:20 PAGE 11
612 1 DJNZ R0,TSR1
613 1 MOV R0,#7DH
614 1 DJNZ R1,TSR1
615 1 #pragma endasm
616 1 }
617
618 void Delay_110(void) //延时110微秒
619 {
620 1 #pragma asm
621 1 MOV R0,#19H
622 1 MOV R1,#02H
623 1 TSR2:
624 1 DJNZ R0,TSR2
625 1 MOV R0,#19H
626 1 DJNZ R1,TSR2
627 1 #pragma endasm
628 1 }
629
630 void Delay_10ms(void) //延时10ms
631 {
632 1 #pragma asm
633 1 MOV R0,#19H
634 1 MOV R1,#0C8H
635 1 TSR3:
636 1 DJNZ R0,TSR3
637 1 MOV R0,#19H
638 1 DJNZ R1,TSR3
639 1 #pragma endasm
640 1 }
641
642 void Delay_4s(void) //延时4s
643 {
644 1 #pragma asm
645 1 MOV R2,#28H
646 1 TSR5:
647 1 MOV R0,#0FAH
648 1 MOV R1,#0C8H
649 1 TSR4:
650 1 DJNZ R0,TSR4
651 1 MOV R0,#0FAH
652 1 DJNZ R1,TSR4
653 1 DJNZ R2,TSR5
654 1 #pragma endasm
655 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1358 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 ----
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 + -