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

📄 main.lst

📁 有水位检测
💻 LST
📖 第 1 页 / 共 2 页
字号:
 247          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 248          //+ 函数: GemTemp
 249          //+ 功能: 读取温度
 250          //+ 参数: 无
 251          //+ 返回: 无
 252          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 253          void GemTemp (void)
 254          {
 255   1         read_bytes (9);
 256   1         if (CRC(9) == 0)         //校验正确
 257   1         {
 258   2            Temperature = temp_buff[1]*0x100 + temp_buff[0];
 259   2            Temperature /= 16;
 260   2      //     SetTemp = Temperature;
 261   2            delay(1);
 262   2         }
 263   1      }
 264          
 265          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 266          //+ 函数: CRC
 267          //+ 功能: 查表校验
 268          //+ 参数: j
 269          //+ 返回: 无
 270          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 271          uchar CRC (uchar j)
 272          {
 273   1         uchar i,crc_data = 0;
 274   1         for(i = 0; i < j; i ++)        //查表校验
 275   1         crc_data = CrcTable[crc_data^temp_buff[i]];
 276   1         return (crc_data);
 277   1      }
 278          
 279          
 280          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 281          //+ 函数: GetKey
 282          //+ 功能: 取键值
 283          //+ 参数: 无
 284          //+ 返回: uchar
 285          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 286          void GetKey(void)
 287          {
 288   1         
 289   1         if(!key_up | !key_do)
 290   1         {
 291   2            kdelay(50);
 292   2            if(!key_up & !key_do) 
 293   2            {
 294   3               kdelay(100);
 295   3               if(!key_up & !key_do)
 296   3                  DisFlag = ~DisFlag;
 297   3            }                          //两键同时按下。
 298   2            
 299   2            if (!DisFlag)
 300   2            {
 301   3               
C51 COMPILER V8.08   MAIN                                                                  11/06/2007 17:19:43 PAGE 6   

 302   3               if(!key_do)
 303   3               {
 304   4                  kdelay(100);
 305   4                  if(!key_do)
 306   4                  {
 307   5                     if (SetTemp > LoTemp)
 308   5                        SetTemp--;
 309   5                     else
 310   5                        SetTemp = LoTemp;
 311   5                  }
 312   4               }
 313   3               
 314   3               if(!key_up)
 315   3               {
 316   4                  kdelay(100);
 317   4                  if(!key_up)
 318   4                  {
 319   5                     if (SetTemp < HiTemp)
 320   5                        SetTemp++;
 321   5                     else
 322   5                        SetTemp = HiTemp;
 323   5                  }
 324   4               }
 325   3            }
 326   2         }
 327   1      
 328   1      }
 329          
 330          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 331          //+ 函数: timer0() interrupt 1
 332          //+ 功能: 定时器0用作显示
 333          //+ 输入: 无
 334          //+ 返回: 无
 335          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 336          /*void timer0() reentrant interrupt 1 using 3 
 337          {
 338             uchar j, tmp;
 339             uchar BitCou;
 340          
 341             TL0 = 0x00;
 342             TH0 = 0x00;
 343          
 344           }    */
 345          
 346          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 347          //+ 函数: display
 348          //+ 功能: 显示数值
 349          //+ 输入: 无
 350          //+ 返回: 无
 351          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 352          void display(void)
 353          {
 354   1         uchar i, j, tmp;
 355   1      
 356   1         DisCon[0] = 12;
 357   1         
 358   1         if (!ErFlag)
 359   1         {
 360   2            led_r     = 0;
 361   2            led_y = 1;
 362   2            led_g = 1;
 363   2            Error = 0;
C51 COMPILER V8.08   MAIN                                                                  11/06/2007 17:19:43 PAGE 7   

 364   2            DisCon[0] = 10;   // E
 365   2            DisCon[1] = 12;   //nul
 366   2            if (Ld)  
 367   2               DisCon[2] = 1;
 368   2            if (!Sw)
 369   2               DisCon[1] = 2; 
 370   2            if (!Flag)
 371   2               DisCon[2] = 3;
 372   2         }
 373   1         else
 374   1         {
 375   2            if (DisFlag)
 376   2            {
 377   3               DisCon[1] = Temperature / 10;
 378   3               DisCon[2] = Temperature - DisCon[1] * 10;
 379   3            }
 380   2            else
 381   2            {
 382   3               DisCon[0] = 14; 
 383   3               DisCon[1] = SetTemp / 10;
 384   3               DisCon[2] = SetTemp - DisCon[1] * 10;
 385   3            }
 386   2         }
 387   1         
 388   1         for (i = 0; i < 3; i ++)
 389   1         {
 390   2            tmp = DisMode[DisCon[i]];  
 391   2            for(j = 0; j < 8; j++)
 392   2            {
 393   3               if (tmp & 0x01)
 394   3                  Qd = 1;
 395   3               else
 396   3                  Qd = 0;
 397   3               Sck = 1;
 398   3               tmp >>= 1;
 399   3               Sck =0;
 400   3            }
 401   2            Swbt(i,1);
 402   2            delay(100);
 403   2            Swbt(i,0);
 404   2         }
 405   1      }
 406          
 407          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 408          //+ 函数: TemperatuerResult
 409          //+ 功能: 读取温度全过程
 410          //+ 参数: 无
 411          //+ 返回: 无
 412          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 413          void TemperatuerResult(void)
 414          {
 415   1      //   p = id_buff;
 416   1      //   ReadID();
 417   1      // Config18b20();
 418   1         Init18b20 ();
 419   1         WriteByte(0xcc);   //skip rom
 420   1         WriteByte(0x44);   //Temperature convert
 421   1         Init18b20 ();
 422   1         WriteByte(0xcc);   //skip rom
 423   1         WriteByte(0xbe);   //read Temperature
 424   1         p = temp_buff;
 425   1         GemTemp();
C51 COMPILER V8.08   MAIN                                                                  11/06/2007 17:19:43 PAGE 8   

 426   1      }
 427          
 428          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 429          //+ 函数: main
 430          //+ 功能: 
 431          //+ 参数: 无
 432          //+ 返回: 无
 433          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 434          void main(void)
 435          {
 436   1                 
 437   1         uchar Count;
 438   1      
 439   1         Sck = 0;
 440   1         DisFlag = 1;
 441   1         Error = ErFlag = 1;
 442   1       
 443   1         Init18b20();
 444   1         if (Ld |!Sw |!Flag)
 445   1         {
 446   2            ErFlag = 0;
 447   2            display();
 448   2         }
 449   1         else
 450   1         {   
 451   2            if (Flag) 
 452   2            {
 453   3               Config18b20();
 454   3               TemperatuerResult();
 455   3               SetTemp = temp_buff[2]; 
 456   3            }
 457   2            while(1)
 458   2            {
 459   3               if (Count < 10)
 460   3               {
 461   4                  display();
 462   4                  Count ++;
 463   4               }
 464   3               else
 465   3               {
 466   4                   Count = 0;
 467   4                   if (Flag)
 468   4                     TemperatuerResult();
 469   4               }
 470   3         
 471   3               if ((Temperature <= (SetTemp - 1)) && Error)
 472   3               {
 473   4                  k1 = 0;
 474   4                  led_y = 0;
 475   4                  led_g = 1;
 476   4               }
 477   3         
 478   3               if ((Temperature >= (SetTemp + 1)) && Error)
 479   3               {
 480   4                  k1 = 1;
 481   4                  led_y = 1;
 482   4                  led_g = 0;
 483   4               }
 484   3         
 485   3               GetKey();
 486   3             } 
 487   2          } 
C51 COMPILER V8.08   MAIN                                                                  11/06/2007 17:19:43 PAGE 9   

 488   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    724    ----
   CONSTANT SIZE    =    270    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13       3
   IDATA SIZE       =      9    ----
   BIT SIZE         =      4       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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