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

📄 csy.lst

📁 本程序能实现温度的实时采集与显示
💻 LST
📖 第 1 页 / 共 5 页
字号:
 251   2          case(1):ch1=1;break;
 252   2          case(2):ch1=2;break;
 253   2          case(3):ch1=3;break;
 254   2          case(4):ch1=4;break;
 255   2          case(5):ch1=5;break;
 256   2          case(6):ch1=6;break;
 257   2          case(7):ch1=7;break;
 258   2          case(8):ch1=8;break;
 259   2          case(9):ch1=9;break;
 260   2          default:break;
 261   2          }
 262   1          return(ch1);
 263   1       } 
 264          /*----------------------------------------------------
 265          *   delay N count  c里的一个while语句相当于汇编里的一个DJNZ语句,即两个机器周期
 266          *----------------------------------------------------*/
 267          void Delay_Count (unsigned char Count ) //延时时间为:(Count*2+5)*0.362  us
 268          {
 269   1          while(--Count);  
 270   1      }
 271          
 272          
 273          /*----------------------------------------------------
 274          *   HEX->BCD查表程序,小数部分
 275          *----------------------------------------------------*/
 276          unsigned char hextobcd1(unsigned char tab)
 277          {
 278   1      unsigned int tab1;
 279   1              switch(tab)
 280   1              {
 281   2                      case(0x00):     tab1=0x000; break;
 282   2                      case(0x01): tab1=0x001; break;
 283   2                      case(0x02): tab1=0x001; break;
 284   2                      case(0x03): tab1=0x002; break;
 285   2                      case(0x04): tab1=0x003; break;
 286   2                      case(0x05): tab1=0x003; break;
 287   2                      case(0x06): tab1=0x004; break;
 288   2                      case(0x07): tab1=0x004; break;
 289   2                      case(0x08): tab1=0x005; break;
 290   2                      case(0x09): tab1=0x006; break;
 291   2                      case(0x0A): tab1=0x006; break;
 292   2                      case(0x0B): tab1=0x007; break;
 293   2                      case(0x0C): tab1=0x008; break;
 294   2                      case(0x0D): tab1=0x008; break;
 295   2                      case(0x0E): tab1=0x009; break;
 296   2                      case(0x0F): tab1=0x009; break;
 297   2      
 298   2                      default: tab1=0x00;break;
 299   2              }
 300   1              return(tab1);
 301   1      }
 302          
 303          /*----------------------------------------------------
C51 COMPILER V7.06   CSY                                                                   11/07/2007 17:19:43 PAGE 6   

 304          *   start Reset Pulse
 305          ----------------------------------------------------*/
 306          void tmreset(void)
 307          {
 308   1          TMDAT=0;
 309   1         Delay_Count(255);
 310   1         Delay_Count(255);
 311   1         Delay_Count(255);
 312   1         Delay_Count(255);
 313   1          TMDAT=1;
 314   1              Delay_Count(70);
 315   1              while(TMDAT);
 316   1      //      printf("已调用完判忙函数3\r\n");
 317   1              while(~TMDAT);
 318   1      //      printf("已调用完判忙函数2\r\n");
 319   1          Delay_Count(255);
 320   1      
 321   1      }
 322          
 323          
 324          /*----------------------------------------------------
 325          *   start Reset Pulse
 326          ----------------------------------------------------/
 327          void  tmreset()
 328          {
 329          
 330          //      P0=0xfe;
 331          
 332          //      FLAG1=0;
 333              TMDAT=1;
 334              Delay_Count(1);             //2.5us
 335              TMDAT=0;
 336              Delay_Count(250);   //505us
 337              Delay_Count(250);   //505us
 338              Delay_Count(250);   //505us
 339              TMDAT=1;
 340              Delay_Count(28);    //61us
 341              Delay_Count(28);    //61us
 342              Delay_Count(28);    //61us
 343              while(TMDAT);
 344          
 345          //      printf("初始化成功\n");
 346           while(~TMDAT);
 347           //printf("初始化成功1\n");
 348                                  Delay_Count(110);       //225us
 349                                  Delay_Count(110);       //225us
 350                                  Delay_Count(110);       //225us
 351                          
 352          }
 353          
 354          /*----------------------------------------------------
 355          *   Read a bit from 1820
 356          *----------------------------------------------------*/
 357          bit tmrbit(void)
 358          {
 359   1       int i=0;
 360   1          bit dat;
 361   1          TMDAT=0;
 362   1              _nop_();
 363   1          _nop_();
 364   1          _nop_();
 365   1      
C51 COMPILER V7.06   CSY                                                                   11/07/2007 17:19:43 PAGE 7   

 366   1              _nop_();
 367   1          _nop_();
 368   1          _nop_();
 369   1      
 370   1              _nop_();
 371   1          _nop_();
 372   1          _nop_();
 373   1      
 374   1              _nop_();
 375   1          _nop_();
 376   1          _nop_();
 377   1          TMDAT=1;
 378   1          _nop_();
 379   1      
 380   1          _nop_();
 381   1      
 382   1          _nop_();
 383   1      
 384   1          _nop_();
 385   1          dat = TMDAT;
 386   1          Delay_Count(30);
 387   1      
 388   1          Delay_Count(30);
 389   1      
 390   1          Delay_Count(30);
 391   1      
 392   1          Delay_Count(30);
 393   1          TMDAT=1;
 394   1          return dat;
 395   1      }
 396          /*----------------------------------------------------
 397          *   Read a byte from 1820
 398          *----------------------------------------------------*/
 399          unsigned char tmrbyte()
 400          {
 401   1      unsigned char i,j,dat=0;
 402   1          for(i=1;i<=8;i++)
 403   1          {
 404   2              j=tmrbit();
 405   2              dat=(j<<7)|(dat>>1);
 406   2          }
 407   1          return dat;
 408   1      }
 409          /*----------------------------------------------------
 410          *   Write a byte from 1820
 411          *----------------------------------------------------*/
 412          void tmwbyte(unsigned char dat)
 413          {
 414   1       unsigned char i;
 415   1       for(i=0;i<8;i++)
 416   1       {
 417   2       TMDAT=0;
 418   2      _nop_();
 419   2      _nop_();
 420   2      _nop_();
 421   2      _nop_();
 422   2      
 423   2      _nop_();
 424   2      _nop_();
 425   2      _nop_();
 426   2      _nop_();
 427   2      
C51 COMPILER V7.06   CSY                                                                   11/07/2007 17:19:43 PAGE 8   

 428   2      _nop_();
 429   2      _nop_();
 430   2      _nop_();
 431   2      _nop_();
 432   2      
 433   2      _nop_();
 434   2      _nop_();
 435   2      _nop_();
 436   2      _nop_();
 437   2      TMDAT=dat&0x01;
 438   2      Delay_Count(20);
 439   2      _nop_();
 440   2      _nop_();
 441   2      
 442   2      Delay_Count(20);
 443   2      _nop_();
 444   2      _nop_();
 445   2      
 446   2      Delay_Count(20);
 447   2      _nop_();
 448   2      _nop_();
 449   2      
 450   2      Delay_Count(20);
 451   2      _nop_();
 452   2      _nop_();
 453   2      
 454   2      TMDAT=1;
 455   2      _nop_();
 456   2      _nop_();
 457   2      
 458   2      _nop_();
 459   2      _nop_();
 460   2      
 461   2      _nop_();
 462   2      _nop_();
 463   2      
 464   2      _nop_();
 465   2      _nop_();
 466   2      dat>>=1;
 467   2      }
 468   1      }
 469          /*----------------------------------------------------
 470          *    Main
 471          *----------------------------------------------------*/
 472          void temp()
 473          {
 474   1      unsigned char a,b,a2,b2,i,j,cha[6];
 475   1      unsigned int w1;
 476   1      unsigned int da1,da2;
 477   1      float fa1,fa2,fa3;
 478   1      while(1)
 479   1      {
 480   2                                      tmreset();
 481   2                                      tmwbyte(0x0CC);
 482   2                                      tmwbyte(0x044);
 483   2                      
 484   2                                      tmreset();
 485   2                                      tmwbyte(0x0CC);
 486   2                                      tmwbyte(0x0BE);
 487   2                              
 488   2                                      a=tmrbyte(); //低8位
 489   2                                      b=tmrbyte(); //高8位
C51 COMPILER V7.06   CSY                                                                   11/07/2007 17:19:43 PAGE 9   

 490   2      
 491   2                                      a2=a&0x0F;
 492   2                                      w1=hextobcd1(a2); //小数(整型)
 493   2      
 494   2                                      a2=a&0x0F0;
 495   2                                      a2=a2>>4;
 496   2                                      b2=b&0x00F;
 497   2                                      b2=b2<<4;
 498   2                                      a2=a2|b2;
 499   2      
 500   2                                      da1=a2/10; //整数部分十位
 501   2                                      da2=a2%10; //整数部分个位
 502   2      
 503   2                                      cha[0]=' ';
 504   2                                      b2=b&0x0F0;
 505   2                                      if(b2)
 506   2                                              cha[1]='-';     
 507   2                                      else
 508   2                                              cha[1]='+';
 509   2                                      cha[2]=inttochar(da1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -