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

📄 51

📁 51单片机大量源码
💻
📖 第 1 页 / 共 2 页
字号:
 351   2          }
 352   1      InitEnd:;
 353   1      }
 354          
 355          void V2ToV(void)        //数值转换
 356          {
 357   1        TLV = TLV >> 4;                       
 358   1        THV = THV << 4;                       //读出的高低位数值移位
 359   1        TMV = TLV | THV;              //合并高低位放入TM为实际温度值
 360   1              Sign = 0;
 361   1        if (SetTF || !Key_SET)
 362   1          Sign = TMSetV >> 7;          //取符号
 363   1        else
C51 COMPILER V9.00   TCMAIN                                                                01/14/2010 22:09:38 PAGE 7   

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

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

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

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

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

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


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