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

📄 tcmain.lst

📁 RZ-51V20 实例程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 350   1      }
 351          
 352          void V2ToV(void)        //数值转换
 353          {
 354   1        TLV = TLV >> 4;                       
 355   1        THV = THV << 4;                       //读出的高低位数值移位
 356   1        TMV = TLV | THV;              //合并高低位放入TM为实际温度值
 357   1              Sign = 0;
 358   1        if (SetTF || !Key_SET)
 359   1          Sign = TMSetV >> 7;          //取符号
 360   1        else
 361   1           Sign = TMV >> 7;
 362   1      
 363   1              if (Sign)
C51 COMPILER V8.02   TCMAIN                                                                08/10/2012 16:38:28 PAGE 7   

 364   1                      {
 365   2                      if (SetTF || !Key_SET)
 366   2                                      {
 367   3                              LED_One = (~(TMSetV-1)) / 100;          //SET状态下显示设定值
 368   3                              LED_Two = ((~(TMSetV-1)) - LED_One * 100)/10;
 369   3                                  LED_Three = (~(TMSetV-1)) - LED_One * 100 - LED_Two * 10;
 370   3                                      inbuf1[0]=dis_8[LED_Two];
 371   3        inbuf1[1]=dis_8[LED_Three];
 372   3        //inbuf1[2]=dis_8[ LED_Three];
 373   3        inbuf1[2]=0x0d;
 374   3        inbuf1[3]=0x0a;
 375   3                                      }
 376   2                      else
 377   2                                      {
 378   3                              LED_One = (~(TMV-1)) / 100;                                                     //转换百位值            
 379   3                              LED_Two = ((~(TMV-1)) - LED_One * 100)/10;
 380   3                                  LED_Three = (~(TMV-1)) - LED_One * 100 - LED_Two * 10;
 381   3                                              inbuf1[0]=dis_8[LED_Two];
 382   3        inbuf1[1]=dis_8[LED_Three];
 383   3       inbuf1[2]=dis_8[0];
 384   3        inbuf1[3]=0x0d;
 385   3        inbuf1[4]=0x0a;
 386   3                                      }
 387   2                      }
 388   1              else
 389   1                      { 
 390   2                      if (SetTF || !Key_SET)
 391   2                                      {
 392   3                              LED_One = (TMSetV) / 100;          //SET状态下显示设定值
 393   3                              LED_Two = (TMSetV - LED_One * 100)/10;
 394   3                                  LED_Three = TMSetV - LED_One * 100 - LED_Two * 10;
 395   3                                              inbuf1[0]=dis_8[LED_Two];
 396   3        inbuf1[1]=dis_8[LED_Three];
 397   3       inbuf1[2]=dis_8[0];
 398   3        inbuf1[3]=0x0d;
 399   3        inbuf1[4]=0x0a;
 400   3                                      }
 401   2                      else
 402   2                                      {
 403   3                              LED_One = (TMV) / 100;                                                  //转换百位值            
 404   3                              LED_Two = (TMV - LED_One * 100)/10;
 405   3                                  LED_Three = TMV - LED_One * 100 - LED_Two * 10;
 406   3                                              inbuf1[0]=dis_8[LED_Two];
 407   3        inbuf1[1]=dis_8[LED_Three];
 408   3       inbuf1[2]=dis_8[0];
 409   3        inbuf1[3]=0x0d;
 410   3        inbuf1[4]=0x0a;
 411   3                                      }
 412   2                      }
 413   1      
 414   1         init_serialcomm(); //初始化串口
 415   1      
 416   1      //while ( 1 )
 417   1      //{
 418   1      send_string_com(inbuf1,INBUF_LEN);
 419   1      
 420   1       //转LED字段    
 421   1              if (LED_One) //超过百时十位的处理
 422   1                      LED_Two = LEDDis[LED_Two];              
 423   1              else
 424   1                      {
 425   2                              if (LED_Two == 0)
C51 COMPILER V8.02   TCMAIN                                                                08/10/2012 16:38:28 PAGE 8   

 426   2                                      LED_Two = LEDDis[10];
 427   2                              else
 428   2                                      LED_Two = LEDDis[LED_Two];
 429   2                      }
 430   1              if (Sign)
 431   1                      LED_One = LEDDis[11];
 432   1              else
 433   1                      {
 434   2                              if (LED_One == 0)
 435   2                                      LED_One = LEDDis[10];
 436   2                              else
 437   2                                      LED_One = LEDDis[LED_One];
 438   2                      }
 439   1              LED_Three = LEDDis[LED_Three];
 440   1      }
 441          
 442          void InitDS1820(void)           //初始化DS1820
 443          {
 444   1              TMPort = 1;             //拉高TMPort
 445   1              _nop_();      //保持一个周期
 446   1              TMPort = 0;             //拉低TMPort
 447   1        Delay_510();  //延时  DS1820复位时间要500us的低电平
 448   1        TMPort = 1;   //拉高TMPort
 449   1              _nop_();      //保持  
 450   1              _nop_();
 451   1              _nop_();
 452   1      
 453   1        Delay_110();  //延时110us 等待DS1820回应
 454   1        if (!TMPort)  //回应信号为低电平
 455   1          DS1820ON = 1;
 456   1        else
 457   1          DS1820ON = 0;
 458   1        Delay_110();  //延时
 459   1        Delay_110();
 460   1        TMPort = 1;   //拉高TMPort
 461   1      }
 462          
 463          void ROMDS1820(void)  //跳过ROM匹配
 464          {
 465   1      #pragma asm
 466   1        MOV A,#0CCH
 467   1        MOV R2,#8
 468   1        CLR C
 469   1        WR1:
 470   1        CLR P3_3
 471   1        MOV R3,#6
 472   1        DJNZ R3,$
 473   1        RRC A
 474   1        MOV P3_3,C
 475   1        MOV R3,#23
 476   1        DJNZ R3,$
 477   1        SETB P3_3
 478   1        NOP
 479   1        DJNZ R2,WR1
 480   1        SETB P3_3
 481   1      #pragma endasm
 482   1      }
 483          
 484          void TMVDS1820(void)  //温度转换指令
 485          {
 486   1      #pragma asm
 487   1        MOV A,#44H
C51 COMPILER V8.02   TCMAIN                                                                08/10/2012 16:38:28 PAGE 9   

 488   1        MOV R2,#8
 489   1        CLR C
 490   1        WR2:
 491   1        CLR P3_3
 492   1        MOV R3,#6
 493   1        DJNZ R3,$
 494   1        RRC A
 495   1        MOV P3_3,C
 496   1        MOV R3,#23
 497   1        DJNZ R3,$
 498   1        SETB P3_3
 499   1        NOP
 500   1        DJNZ R2,WR2
 501   1        SETB P3_3
 502   1      #pragma endasm
 503   1      }
 504          
 505          void TMRDS1820(void)  //读出温度指令
 506          {
 507   1      #pragma asm
 508   1        MOV A,#0BEH
 509   1        MOV R2,#8
 510   1        CLR C
 511   1        WR3:
 512   1        CLR P3_3
 513   1        MOV R3,#6
 514   1        DJNZ R3,$
 515   1        RRC A
 516   1        MOV P3_3,C
 517   1        MOV R3,#23
 518   1        DJNZ R3,$
 519   1        SETB P3_3
 520   1        NOP
 521   1        DJNZ R2,WR3
 522   1        SETB P3_3
 523   1      #pragma endasm
 524   1      }
 525          
 526          void TMWDS1820(void)  //写入温度限制指令
 527          {
 528   1      #pragma asm
 529   1        MOV A,#04EH
 530   1        MOV R2,#8
 531   1        CLR C
 532   1        WR13:
 533   1        CLR P3_3
 534   1        MOV R3,#6
 535   1        DJNZ R3,$
 536   1        RRC A
 537   1        MOV P3_3,C
 538   1        MOV R3,#23
 539   1        DJNZ R3,$
 540   1        SETB P3_3
 541   1        NOP
 542   1        DJNZ R2,WR13
 543   1        SETB P3_3
 544   1      #pragma endasm
 545   1      }
 546          
 547          void TMREDS1820(void)           //COPY RAM to E2PRAM
 548          {
 549   1      #pragma asm
C51 COMPILER V8.02   TCMAIN                                                                08/10/2012 16:38:28 PAGE 10  

 550   1        MOV A,#48H
 551   1        MOV R2,#8
 552   1        CLR C
 553   1        WR33:
 554   1        CLR P3_3
 555   1        MOV R3,#6
 556   1        DJNZ R3,$
 557   1        RRC A
 558   1        MOV P3_3,C
 559   1        MOV R3,#23
 560   1        DJNZ R3,$
 561   1        SETB P3_3
 562   1        NOP
 563   1        DJNZ R2,WR33
 564   1        SETB P3_3
 565   1      #pragma endasm
 566   1      }
 567          
 568          void TMERDS1820(void)           //COPY E2PRAM to RAM
 569          {
 570   1      #pragma asm
 571   1        MOV A,#0B8H
 572   1        MOV R2,#8
 573   1        CLR C
 574   1        WR43:
 575   1        CLR P3_3
 576   1        MOV R3,#6
 577   1        DJNZ R3,$
 578   1        RRC A
 579   1        MOV P3_3,C
 580   1        MOV R3,#23
 581   1        DJNZ R3,$
 582   1        SETB P3_3
 583   1        NOP
 584   1        DJNZ R2,WR43
 585   1        SETB P3_3
 586   1      #pragma endasm
 587   1      }
 588          
 589          void WriteDS1820(void)  //写入温度限制值
 590          {
 591   1      #pragma asm
 592   1              MOV A,26H                                       //发出4EH写ROM指令后连发两个字节分别为上下限
 593   1        MOV R2,#8
 594   1        CLR C
 595   1        WR23:
 596   1        CLR P3_3
 597   1        MOV R3,#6
 598   1        DJNZ R3,$
 599   1        RRC A
 600   1        MOV P3_3,C
 601   1        MOV R3,#23
 602   1        DJNZ R3,$
 603   1        SETB P3_3
 604   1        NOP
 605   1        DJNZ R2,WR23
 606   1        SETB P3_3       
 607   1      #pragma endasm
 608   1      }
 609          
 610          void ReadDS1820(void) //读出温度值
 611          {
C51 COMPILER V8.02   TCMAIN                                                                08/10/2012 16:38:28 PAGE 11  

 612   1      #pragma asm
 613   1        MOV R4,#3 ;// 将温度高位和低位,高温限制位从DS18B20中读出
 614   1        MOV R1,#29H ; //低位存入29H(TEMPER_L),高位存入28H(TEMPER_H),高温限制位存入27H(TMRomV)
 615   1        RE00:
 616   1        MOV R2,#8
 617   1        RE01:
 618   1        CLR C
 619   1        SETB P3_3
 620   1        NOP
 621   1        NOP
 622   1        CLR P3_3
 623   1        NOP
 624   1        NOP
 625   1        NOP
 626   1        SETB P3_3
 627   1        MOV R3,#09
 628   1        RE10: 
 629   1        DJNZ R3,RE10
 630   1        MOV C,P3_3
 631   1        MOV R3,#23
 632   1        RE20: 
 633   1        DJNZ R3,RE20
 634   1        RRC A
 635   1        DJNZ R2,RE01
 636   1        MOV @R1,A
 637   1        DEC R1
 638   1        DJNZ R4,RE00
 639   1      #pragma endasm
 640   1      }
 641          
 642          void Delay_510(void)    //延时510微秒
 643          {
 644   1      #pragma asm
 645   1              MOV R0,#7DH
 646   1              MOV R1,#02H
 647   1              TSR1:
 648   1              DJNZ R0,TSR1
 649   1              MOV R0,#7DH
 650   1              DJNZ R1,TSR1
 651   1      #pragma endasm
 652   1      }
 653          
 654          void Delay_110(void)    //延时110微秒
 655          {
 656   1      #pragma asm
 657   1              MOV R0,#19H
 658   1              MOV R1,#02H
 659   1              TSR2:
 660   1              DJNZ R0,TSR2
 661   1              MOV R0,#19H
 662   1              DJNZ R1,TSR2
 663   1      #pragma endasm
 664   1      }
 665          
 666          void Delay_10ms(void)   //延时10ms
 667          {
 668   1      #pragma asm
 669   1              MOV R0,#19H
 670   1              MOV R1,#0C8H
 671   1              TSR3:
 672   1              DJNZ R0,TSR3
 673   1              MOV R0,#19H
C51 COMPILER V8.02   TCMAIN                                                                08/10/2012 16:38:28 PAGE 12  

 674   1              DJNZ R1,TSR3
 675   1      #pragma endasm
 676   1      }
 677          
 678          void Delay_4s(void)     //延时4s
 679          {
 680   1      #pragma asm
 681   1        MOV R2,#28H
 682   1        TSR5:
 683   1              MOV R0,#0FAH
 684   1              MOV R1,#0C8H
 685   1              TSR4:
 686   1              DJNZ R0,TSR4
 687   1              MOV R0,#0FAH
 688   1              DJNZ R1,TSR4
 689   1        DJNZ R2,TSR5
 690   1      #pragma endasm
 691   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1444    ----
   CONSTANT SIZE    =     12    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     82       6
   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 + -