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

📄 tcmain.lst

📁 温度控制器V1.5 显示为三个共阳极LED 温度传感器用单总线DS18B20 CPU为2051
💻 LST
📖 第 1 页 / 共 2 页
字号:
 284   3                              LED_One = (TMV) / 100;                                                  //转换百位值            
 285   3                              LED_Two = (TMV - LED_One * 100)/10;
 286   3                                  LED_Three = TMV - LED_One * 100 - LED_Two * 10;
 287   3                                      }
 288   2                      }
 289   1      
 290   1       //转LED字段    
 291   1              if (LED_One) //超过百时十位的处理
 292   1                      LED_Two = LEDDis[LED_Two];              
 293   1              else
 294   1                      {
 295   2                              if (LED_Two == 0)
 296   2                                      LED_Two = LEDDis[10];
 297   2                              else
 298   2                                      LED_Two = LEDDis[LED_Two];
 299   2                      }
 300   1              if (Sign)
C51 COMPILER V7.06   TCMAIN                                                                04/11/2008 16:55:01 PAGE 6   

 301   1                      LED_One = LEDDis[11];
 302   1              else
 303   1                      {
 304   2                              if (LED_One == 0)
 305   2                                      LED_One = LEDDis[10];
 306   2                              else
 307   2                                      LED_One = LEDDis[LED_One];
 308   2                      }
 309   1              LED_Three = LEDDis[LED_Three];
 310   1      }
 311          
 312          void InitDS1820(void)           //初始化DS1820
 313          {
 314   1              TMPort = 1;             //拉高TMPort
 315   1              _nop_();      //保持一个周期
 316   1              TMPort = 0;             //拉低TMPort
 317   1        Delay_510();  //延时  DS1820复位时间要500us的低电平
 318   1        TMPort = 1;   //拉高TMPort
 319   1              _nop_();      //保持  
 320   1              _nop_();
 321   1              _nop_();
 322   1      
 323   1        Delay_110();  //延时110us 等待DS1820回应
 324   1        if (!TMPort)  //回应信号为低电平
 325   1          DS1820ON = 1;
 326   1        else
 327   1          DS1820ON = 0;
 328   1        Delay_110();  //延时
 329   1        Delay_110();
 330   1        TMPort = 1;   //拉高TMPort
 331   1      }
 332          
 333          void ROMDS1820(void)  //跳过ROM匹配
 334          {
 335   1      #pragma asm
 336   1        MOV A,#0CCH
 337   1        MOV R2,#8
 338   1        CLR C
 339   1        WR1:
 340   1        CLR P3_7
 341   1        MOV R3,#6
 342   1        DJNZ R3,$
 343   1        RRC A
 344   1        MOV P3_7,C
 345   1        MOV R3,#23
 346   1        DJNZ R3,$
 347   1        SETB P3_7
 348   1        NOP
 349   1        DJNZ R2,WR1
 350   1        SETB P3_7
 351   1      #pragma endasm
 352   1      }
 353          
 354          void TMVDS1820(void)  //温度转换指令
 355          {
 356   1      #pragma asm
 357   1        MOV A,#44H
 358   1        MOV R2,#8
 359   1        CLR C
 360   1        WR2:
 361   1        CLR P3_7
 362   1        MOV R3,#6
C51 COMPILER V7.06   TCMAIN                                                                04/11/2008 16:55:01 PAGE 7   

 363   1        DJNZ R3,$
 364   1        RRC A
 365   1        MOV P3_7,C
 366   1        MOV R3,#23
 367   1        DJNZ R3,$
 368   1        SETB P3_7
 369   1        NOP
 370   1        DJNZ R2,WR2
 371   1        SETB P3_7
 372   1      #pragma endasm
 373   1      }
 374          
 375          void TMRDS1820(void)  //读出温度指令
 376          {
 377   1      #pragma asm
 378   1        MOV A,#0BEH
 379   1        MOV R2,#8
 380   1        CLR C
 381   1        WR3:
 382   1        CLR P3_7
 383   1        MOV R3,#6
 384   1        DJNZ R3,$
 385   1        RRC A
 386   1        MOV P3_7,C
 387   1        MOV R3,#23
 388   1        DJNZ R3,$
 389   1        SETB P3_7
 390   1        NOP
 391   1        DJNZ R2,WR3
 392   1        SETB P3_7
 393   1      #pragma endasm
 394   1      }
 395          
 396          void TMWDS1820(void)  //写入温度限制指令
 397          {
 398   1      #pragma asm
 399   1        MOV A,#04EH
 400   1        MOV R2,#8
 401   1        CLR C
 402   1        WR13:
 403   1        CLR P3_7
 404   1        MOV R3,#6
 405   1        DJNZ R3,$
 406   1        RRC A
 407   1        MOV P3_7,C
 408   1        MOV R3,#23
 409   1        DJNZ R3,$
 410   1        SETB P3_7
 411   1        NOP
 412   1        DJNZ R2,WR13
 413   1        SETB P3_7
 414   1      #pragma endasm
 415   1      }
 416          
 417          void TMREDS1820(void)           //COPY RAM to E2PRAM
 418          {
 419   1      #pragma asm
 420   1        MOV A,#48H
 421   1        MOV R2,#8
 422   1        CLR C
 423   1        WR33:
 424   1        CLR P3_7
C51 COMPILER V7.06   TCMAIN                                                                04/11/2008 16:55:01 PAGE 8   

 425   1        MOV R3,#6
 426   1        DJNZ R3,$
 427   1        RRC A
 428   1        MOV P3_7,C
 429   1        MOV R3,#23
 430   1        DJNZ R3,$
 431   1        SETB P3_7
 432   1        NOP
 433   1        DJNZ R2,WR33
 434   1        SETB P3_7
 435   1      #pragma endasm
 436   1      }
 437          
 438          void TMERDS1820(void)           //COPY E2PRAM to RAM
 439          {
 440   1      #pragma asm
 441   1        MOV A,#0B8H
 442   1        MOV R2,#8
 443   1        CLR C
 444   1        WR43:
 445   1        CLR P3_7
 446   1        MOV R3,#6
 447   1        DJNZ R3,$
 448   1        RRC A
 449   1        MOV P3_7,C
 450   1        MOV R3,#23
 451   1        DJNZ R3,$
 452   1        SETB P3_7
 453   1        NOP
 454   1        DJNZ R2,WR43
 455   1        SETB P3_7
 456   1      #pragma endasm
 457   1      }
 458          
 459          void WriteDS1820(void)  //写入温度限制值
 460          {
 461   1      #pragma asm
 462   1              MOV A,26H                                       //发出4EH写ROM指令后连发两个字节分别为上下限
 463   1        MOV R2,#8
 464   1        CLR C
 465   1        WR23:
 466   1        CLR P3_7
 467   1        MOV R3,#6
 468   1        DJNZ R3,$
 469   1        RRC A
 470   1        MOV P3_7,C
 471   1        MOV R3,#23
 472   1        DJNZ R3,$
 473   1        SETB P3_7
 474   1        NOP
 475   1        DJNZ R2,WR23
 476   1        SETB P3_7       
 477   1      #pragma endasm
 478   1      }
 479          
 480          void ReadDS1820(void) //读出温度值
 481          {
 482   1      #pragma asm
 483   1        MOV R4,#3 ; 将温度高位和低位,高温限制位从DS18B20中读出
 484   1        MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H),高温限制位存入27H(TMRomV)
 485   1        RE00:
 486   1        MOV R2,#8
C51 COMPILER V7.06   TCMAIN                                                                04/11/2008 16:55:01 PAGE 9   

 487   1        RE01:
 488   1        CLR C
 489   1        SETB P3_7
 490   1        NOP
 491   1        NOP
 492   1        CLR P3_7
 493   1        NOP
 494   1        NOP
 495   1        NOP
 496   1        SETB P3_7
 497   1        MOV R3,#09
 498   1        RE10: 
 499   1        DJNZ R3,RE10
 500   1        MOV C,P3_7
 501   1        MOV R3,#23
 502   1        RE20: 
 503   1        DJNZ R3,RE20
 504   1        RRC A
 505   1        DJNZ R2,RE01
 506   1        MOV @R1,A
 507   1        DEC R1
 508   1        DJNZ R4,RE00
 509   1      #pragma endasm
 510   1      }
 511          
 512          void Delay_510(void)    //延时510微秒
 513          {
 514   1      #pragma asm
 515   1              MOV R0,#7DH
 516   1              MOV R1,#02H
 517   1              TSR1:
 518   1              DJNZ R0,TSR1
 519   1              MOV R0,#7DH
 520   1              DJNZ R1,TSR1
 521   1      #pragma endasm
 522   1      }
 523          
 524          void Delay_110(void)    //延时110微秒
 525          {
 526   1      #pragma asm
 527   1              MOV R0,#19H
 528   1              MOV R1,#02H
 529   1              TSR2:
 530   1              DJNZ R0,TSR2
 531   1              MOV R0,#19H
 532   1              DJNZ R1,TSR2
 533   1      #pragma endasm
 534   1      }
 535          
 536          void Delay_10ms(void)   //延时10ms
 537          {
 538   1      #pragma asm
 539   1              MOV R0,#19H
 540   1              MOV R1,#0C8H
 541   1              TSR3:
 542   1              DJNZ R0,TSR3
 543   1              MOV R0,#19H
 544   1              DJNZ R1,TSR3
 545   1      #pragma endasm
 546   1      }
 547          
 548          void Delay_4s(void)     //延时4s
C51 COMPILER V7.06   TCMAIN                                                                04/11/2008 16:55:01 PAGE 10  

 549          {
 550   1      #pragma asm
 551   1        MOV R2,#28H
 552   1        TSR5:
 553   1              MOV R0,#0FAH
 554   1              MOV R1,#0C8H
 555   1              TSR4:
 556   1              DJNZ R0,TSR4
 557   1              MOV R0,#0FAH
 558   1              DJNZ R1,TSR4
 559   1        DJNZ R2,TSR5
 560   1      #pragma endasm
 561   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1200    ----
   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 + -