⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_main.lst

📁 LCD显示温控器制作成功 参考了明浩的温度控制器V1.5和使用1602液晶显示和PS/2键盘的示例
💻 LST
📖 第 1 页 / 共 3 页
字号:
 504   1        Delay_110();  //延时110us 等待DS1820回应
 505   1        if (!TMPort)  //回应信号为低电平
 506   1          DS1820ON = 1;
 507   1        else
 508   1          DS1820ON = 0;
 509   1        Delay_110();  //延时
 510   1        Delay_110();
 511   1        TMPort = 1;   //拉高TMPort
 512   1      }
 513          
 514          void ROMDS1820(void)  //跳过ROM匹配
 515          {
 516   1      #pragma asm
 517   1        MOV A,#0CCH
 518   1        MOV R2,#8
 519   1        CLR C
 520   1        WR1:
 521   1        CLR P2_7
 522   1        MOV R3,#6
 523   1        DJNZ R3,$
 524   1        RRC A
 525   1        MOV P2_7,C
 526   1        MOV R3,#23
 527   1        DJNZ R3,$
 528   1        SETB P2_7
 529   1        NOP
 530   1        DJNZ R2,WR1
 531   1        SETB P2_7
 532   1      #pragma endasm
 533   1      }
 534          
 535          void TMVDS1820(void)  //温度转换指令
 536          {
 537   1      #pragma asm
 538   1        MOV A,#44H
 539   1        MOV R2,#8
 540   1        CLR C
 541   1        WR2:
 542   1        CLR P2_7
 543   1        MOV R3,#6
 544   1        DJNZ R3,$
 545   1        RRC A
 546   1        MOV P2_7,C
 547   1        MOV R3,#23
 548   1        DJNZ R3,$
 549   1        SETB P2_7
C51 COMPILER V7.09   LCD_MAIN                                                              08/12/2004 17:38:42 PAGE 10  

 550   1        NOP
 551   1        DJNZ R2,WR2
 552   1        SETB P2_7
 553   1      #pragma endasm
 554   1      }
 555          
 556          void TMRDS1820(void)  //读出温度指令
 557          {
 558   1      #pragma asm
 559   1        MOV A,#0BEH
 560   1        MOV R2,#8
 561   1        CLR C
 562   1        WR3:
 563   1        CLR P2_7
 564   1        MOV R3,#6
 565   1        DJNZ R3,$
 566   1        RRC A
 567   1        MOV P2_7,C
 568   1        MOV R3,#23
 569   1        DJNZ R3,$
 570   1        SETB P2_7
 571   1        NOP
 572   1        DJNZ R2,WR3
 573   1        SETB P2_7
 574   1      #pragma endasm
 575   1      }
 576          
 577          void TMWDS1820(void)  //写入温度限制指令
 578          {
 579   1      #pragma asm
 580   1        MOV A,#04EH
 581   1        MOV R2,#8
 582   1        CLR C
 583   1        WR13:
 584   1        CLR P2_7
 585   1        MOV R3,#6
 586   1        DJNZ R3,$
 587   1        RRC A
 588   1        MOV P2_7,C
 589   1        MOV R3,#23
 590   1        DJNZ R3,$
 591   1        SETB P2_7
 592   1        NOP
 593   1        DJNZ R2,WR13
 594   1        SETB P2_7
 595   1      #pragma endasm
 596   1      }
 597          
 598          void TMREDS1820(void)           //COPY RAM to E2PRAM
 599          {
 600   1      #pragma asm
 601   1        MOV A,#48H
 602   1        MOV R2,#8
 603   1        CLR C
 604   1        WR33:
 605   1        CLR P2_7
 606   1        MOV R3,#6
 607   1        DJNZ R3,$
 608   1        RRC A
 609   1        MOV P2_7,C
 610   1        MOV R3,#23
 611   1        DJNZ R3,$
C51 COMPILER V7.09   LCD_MAIN                                                              08/12/2004 17:38:42 PAGE 11  

 612   1        SETB P2_7
 613   1        NOP
 614   1        DJNZ R2,WR33
 615   1        SETB P2_7
 616   1      #pragma endasm
 617   1      }
 618          
 619          void TMERDS1820(void)           //COPY E2PRAM to RAM
 620          {
 621   1      #pragma asm
 622   1        MOV A,#0B8H
 623   1        MOV R2,#8
 624   1        CLR C
 625   1        WR43:
 626   1        CLR P2_7
 627   1        MOV R3,#6
 628   1        DJNZ R3,$
 629   1        RRC A
 630   1        MOV P2_7,C
 631   1        MOV R3,#23
 632   1        DJNZ R3,$
 633   1        SETB P2_7
 634   1        NOP
 635   1        DJNZ R2,WR43
 636   1        SETB P2_7
 637   1      #pragma endasm
 638   1      }
 639          
 640          void WriteDS1820(void)  //写入温度限制值
 641          {
 642   1      #pragma asm
 643   1              MOV A,26H                                       //发出4EH写ROM指令后连发两个字节分别为上下限
 644   1        MOV R2,#8
 645   1        CLR C
 646   1        WR23:
 647   1        CLR P2_7
 648   1        MOV R3,#6
 649   1        DJNZ R3,$
 650   1        RRC A
 651   1        MOV P2_7,C
 652   1        MOV R3,#23
 653   1        DJNZ R3,$
 654   1        SETB P2_7
 655   1        NOP
 656   1        DJNZ R2,WR23
 657   1        SETB P2_7       
 658   1      #pragma endasm
 659   1      }
 660          
 661          void ReadDS1820(void) //读出温度值
 662          {
 663   1      #pragma asm
 664   1        MOV R4,#3 ; 将温度高位和低位,高温限制位从DS18B20中读出
 665   1        MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H),高温限制位存入27H(TMRomV)
 666   1        RE00:
 667   1        MOV R2,#8
 668   1        RE01:
 669   1        CLR C
 670   1        SETB P2_7
 671   1        NOP
 672   1        NOP
 673   1        CLR P2_7
C51 COMPILER V7.09   LCD_MAIN                                                              08/12/2004 17:38:42 PAGE 12  

 674   1        NOP
 675   1        NOP
 676   1        NOP
 677   1        SETB P2_7
 678   1        MOV R3,#09
 679   1        RE10: 
 680   1        DJNZ R3,RE10
 681   1        MOV C,P2_7
 682   1        MOV R3,#23
 683   1        RE20: 
 684   1        DJNZ R3,RE20
 685   1        RRC A
 686   1        DJNZ R2,RE01
 687   1        MOV @R1,A
 688   1        DEC R1
 689   1        DJNZ R4,RE00
 690   1      #pragma endasm
 691   1      }
 692          
 693          void Delay_510(void)    //延时510微秒
 694          {
 695   1      #pragma asm
 696   1              MOV R0,#7DH
 697   1              MOV R1,#02H
 698   1              TSR1:
 699   1              DJNZ R0,TSR1
 700   1              MOV R0,#7DH
 701   1              DJNZ R1,TSR1
 702   1      #pragma endasm
 703   1      }
 704          
 705          void Delay_110(void)    //延时110微秒
 706          {
 707   1      #pragma asm
 708   1              MOV R0,#19H
 709   1              MOV R1,#02H
 710   1              TSR2:
 711   1              DJNZ R0,TSR2
 712   1              MOV R0,#19H
 713   1              DJNZ R1,TSR2
 714   1      #pragma endasm
 715   1      }
 716          
 717          void Delay_10ms(void)   //延时10ms
 718          {
 719   1      #pragma asm
 720   1              MOV R0,#19H
 721   1              MOV R1,#0C8H
 722   1              TSR3:
 723   1              DJNZ R0,TSR3
 724   1              MOV R0,#19H
 725   1              DJNZ R1,TSR3
 726   1      #pragma endasm
 727   1      }
 728          
 729          void Delay_4s(void)     //延时4s
 730          {
 731   1      #pragma asm
 732   1        MOV R2,#28H
 733   1        TSR5:
 734   1              MOV R0,#0FAH
 735   1              MOV R1,#0C8H
C51 COMPILER V7.09   LCD_MAIN                                                              08/12/2004 17:38:42 PAGE 13  

 736   1              TSR4:
 737   1              DJNZ R0,TSR4
 738   1              MOV R0,#0FAH
 739   1              DJNZ R1,TSR4
 740   1        DJNZ R2,TSR5
 741   1      #pragma endasm
 742   1      }
 743          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1737    ----
   CONSTANT SIZE    =     46    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     52       9
   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 + -