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

📄 tcmain.lst

📁 温度控制器V1.5 显示为三个共阳极LED 温度传感器用单总线DS18B20 CPU为2051
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -