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

📄 温测b.lst

📁 基于80c51的温度采集测量系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 201          {
 202   1           while( x-- );
 203   1      }
 204          void writecommandtods18b20( uchar command )
 205          {
 206   1          uchar a;
 207   1          for( a=8; a>0; a-- )
 208   1          {
 209   2              DQ = 0;
 210   2             _nop_();            // dalay 5us;
 211   2             _nop_();
 212   2              _nop_();
 213   2              DQ = command&0x01;
 214   2                      DS1820_delay(5);                   //dalay 60us;
 215   2              command >>= 1;
 216   2              DQ = 1;
 217   2             _nop_();            // dalay 5us;
 218   2            _nop_();
 219   2             _nop_();
 220   2          }
 221   1      }
 222          uchar readdatafromds18b20()
 223          {
 224   1          uchar i;
 225   1          uchar da;
 226   1          for( i=8; i>0; i-- )
 227   1          {
 228   2              DQ = 0;
 229   2              _nop_();  
 230   2              da >>= 1;                  //delay 1us;
 231   2              DQ = 1;
 232   2              if (DQ)
 233   2                  da |= 0x80;
 234   2              DS1820_delay(4);                       // dalay 50us;
 235   2             _nop_();            // dalay 5us;
 236   2             _nop_();
 237   2      }
 238   1          return da;
 239   1      }
 240          void resetpulse()
 241          {
C51 COMPILER V8.05a   温测B                                                                07/04/2008 19:10:02 PAGE 5   

 242   1      loop:
 243   1          DQ = 1;
 244   1         _nop_();            // dalay 5us;
 245   1          _nop_();
 246   1         _nop_();
 247   1          _nop_();
 248   1          _nop_();
 249   1          DQ = 0;
 250   1          DS1820_delay(80);                   //delay >480us;
 251   1          DQ = 1;
 252   1          DS1820_delay(10);                    //delay = 100us;
 253   1          if( DQ )
 254   1             goto loop;
 255   1          DS1820_delay(20);
 256   1          DQ = 1;
 257   1          _nop_();            // dalay 5us;
 258   1          _nop_();
 259   1          _nop_();
 260   1          _nop_();
 261   1          _nop_();
 262   1      }
 263          void IIC_delay(uchar x)
 264          {  
 265   1              uint i;
 266   1              for(i=0;i<x;i++);
 267   1      }
 268          
 269          void flash()
 270          {  ;  ; }
 271          void x24c02_init()  //24c02初始化子程序
 272          {
 273   1              scl=1; 
 274   1              flash(); 
 275   1              sda=1; 
 276   1              flash();
 277   1      }
 278          void start()        //启动I2C总线
 279          {
 280   1              sda=1; 
 281   1              flash(); 
 282   1              scl=1; 
 283   1              flash(); 
 284   1              sda=0; 
 285   1              flash(); 
 286   1              scl=0; 
 287   1              flash();
 288   1      }
 289          void stop()         //停止I2C总线
 290          {
 291   1              sda=0; 
 292   1              flash(); 
 293   1              scl=1; 
 294   1              flash(); 
 295   1              sda=1; 
 296   1              flash();
 297   1      }
 298          void writex(uchar j)  //写一个字节
 299          {  
 300   1              uchar i,temp;
 301   1          temp=j;
 302   1          for (i=0;i<8;i++)
 303   1                      {
C51 COMPILER V8.05a   温测B                                                                07/04/2008 19:10:02 PAGE 6   

 304   2                              temp=temp<<1; 
 305   2                              scl=0; 
 306   2                              flash(); 
 307   2                              sda=CY; 
 308   2                              flash(); 
 309   2                              scl=1; 
 310   2                              flash();
 311   2                      }
 312   1      
 313   1              scl=0; 
 314   1              flash(); 
 315   1              sda=1; 
 316   1              flash();
 317   1      }
 318          uchar readx()   //读一个字节
 319          {
 320   1              uchar i,j,k=0;
 321   1              scl=0; 
 322   1              flash(); 
 323   1              sda=1;
 324   1          for (i=0;i<8;i++)
 325   1                      {  
 326   2                              flash(); 
 327   2                              scl=1; 
 328   2                              flash();
 329   2                              if (sda==1) j=1;
 330   2                              else j=0;
 331   2                              k=(k<<1)|j;
 332   2                              scl=0;
 333   2                      }
 334   1              flash(); 
 335   1              return(k);
 336   1      }
 337          void clock()         //I2C总线时钟
 338          {
 339   1              uchar i=0;
 340   1              scl=1; 
 341   1              flash();
 342   1              while ((sda==1)&&(i<255))i++;
 343   1              scl=0; 
 344   1              flash();
 345   1      }
 346          
 347          ////////从24c02的地址address中读取一个字节数据/////
 348          
 349          uchar x24c02_read(uchar address)
 350          {
 351   1              uchar i;
 352   1              start(); 
 353   1              writex(0xa0);
 354   1              clock(); 
 355   1              writex(address);
 356   1              clock(); 
 357   1              start();
 358   1              writex(0xa1); 
 359   1              clock();
 360   1              i=readx(); 
 361   1              stop();
 362   1              IIC_delay(10);
 363   1              return(i);
 364   1      }
 365          
C51 COMPILER V8.05a   温测B                                                                07/04/2008 19:10:02 PAGE 7   

 366          //////向24c02的address地址中写入一字节数据info/////
 367          
 368          void x24c02_write(uchar address,uchar info)
 369          {
 370   1              EA=0;
 371   1              start(); 
 372   1              writex(0xa0);
 373   1              clock(); 
 374   1              writex(address);
 375   1              clock(); 
 376   1              writex(info);
 377   1              clock(); 
 378   1              stop(); 
 379   1              EA=1;
 380   1              IIC_delay(100);
 381   1      }
 382          void MCU_init()
 383          { 
 384   1        TMOD=0x11;
 385   1        TH0=(65536-4000)/256;
 386   1        TL0=(65536-4000)%256;
 387   1        ET0=1;
 388   1        TH1=(65536-4000)/256;
 389   1        TL1=(65536-4000)%256;
 390   1        ET1=1;
 391   1        TR1=0;
 392   1        EA=1;
 393   1        TR0=1;
 394   1      }  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1269    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     62    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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