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

📄 bdz.lst

📁 该系统是一个温度测控系统,传感器采用tlc549,内付有proteus的仿真图形,可以模拟外围电路,程序采用c,开发环境是keil c.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 281          int jiajian(int min,int max,int savx)    //加减,上限,下限
 282          {   
 283   1               bit i=1;
 284   1               int j=0,x=0;
 285   1               js(savx);
 286   1           delay(1500);
 287   1           while(i)
 288   1           {  
 289   2                if((SUB==1)&&(ADD==1))   //没有键按下时,X一直记数
 290   2                { j=0;x=x+1;
 291   3                        }
 292   2                else {j=j+1;x=0;}       //有键按下时,J一直记数
 293   2                    if(ADD==0)
 294   2                    {
 295   3                           delay(100);
 296   3                       if(ADD==0)   //有加按下
 297   3                       {   if(j<15)  
 298   4                           savx=savx+1;    
 299   4                           if((j>=15)&&(j<30))
 300   4                           savx=savx+10;
 301   4                           if(j>=30)
C51 COMPILER V7.20   BDZ                                                                   08/25/2006 20:43:45 PAGE 6   

 302   4                           savx=savx+100;
 303   4                   }
 304   3                }
 305   2                if(SUB==0)
 306   2                {
 307   3                    delay(100);  //有减按下
 308   3                    if(SUB==0)
 309   3                    {
 310   4                         if(j<15)
 311   4                         savx=savx-1;
 312   4                         if((j>=15)&&(j<30))
 313   4                         savx=savx-10;
 314   4                         if(j>=30)
 315   4                         savx=savx-100;
 316   4                    }
 317   3                }
 318   2                if(savx>max)    //如果数值大于上限,不再加
 319   2                savx=max;
 320   2                if(savx<min)    //如果数值小于下限,不再减
 321   2                savx=min;
 322   2                js(savx);       
 323   2                if(SET==0)     
 324   2                {
 325   3                    delay(100);
 326   3                    if(SET==0)        
 327   3                     i=0;      //退出循环
 328   3                }  
 329   2                if(x>=25)
 330   2                {i=0; savx=OV_TIM;}  //一定时间内没有键按下,退出循环,返回OV_TIM
 331   2                delay(1200);  
 332   2            }
 333   1            return(savx);
 334   1      }
 335          
 336          /*---------------------------------------------------
 337          功能:  将三位数码管对应的值读出后,修改,再写入
 338          参数: 1  24C02器件地址,   min  下限   max  上限   vidao  自定义字符
 339          返回: int型  修改后的值 
 340          -------------------------------------------------------*/
 341          int shd_3(int addrss,int min,int max)
 342          {       int save=0,sav=0;
 343   1              save=read(addrss,iic);
 344   1          js(save);
 345   1          delay(800);
 346   1          sav=jiajian(min,max,save);
 347   1              if(sav!=OV_TIM)
 348   1              {
 349   2                      write(addrss,sav,iic);
 350   2              }
 351   1          return(sav);
 352   1      }
 353          byte caiji(void)
 354          {
 355   1              byte cai=0,i;
 356   1              CS=1; _nop_();_nop_();
 357   1              CS=0;
 358   1              for(i=0;i<=7;i++)
 359   1              {       
 360   2                      cai=cai<<1;
 361   2                      CLK=0;
 362   2                      _nop_();_nop_();CLK=1;
 363   2                      cai|=(DA&0x01);
C51 COMPILER V7.20   BDZ                                                                   08/25/2006 20:43:45 PAGE 7   

 364   2              }
 365   1              CS=1;
 366   1              return(cai);
 367   1      
 368   1      }
 369          byte zh(byte ca)
 370          {
 371   1              byte tem_n;
 372   1              tem_n=(230-50)*ca/256+50;
 373   1              return(tem_n);
 374   1      }
 375          void stin(void)
 376          {               uint time;
 377   1                      //uint time,tem_shax,tem_xiax;   
 378   1              tem_xiax=read(tem_xiax_addr,iic);     
 379   1              tem_shax=read(tem_shax_addr,iic);
 380   1                      if((tem_xiax>230)||(tem_xiax<50))
 381   1                      {
 382   2                              tem_xiax=50;
 383   2                      }
 384   1                      if((tem_shax>230)||(tem_xiax<50)||(tem_shax<tem_xiax))
 385   1                      {
 386   2                              tem_shax=230;
 387   2                      }
 388   1                      time=read(time_addr,iic);
 389   1                      if((time>999)||(time<0))
 390   1                      {
 391   2                              time=0;
 392   2                      }
 393   1                      JDQ=1;
 394   1                      FMQ=1;
 395   1      }
 396          /*============================中断与主程序部分============================================================
             -==*/
 397          void T1_int() interrupt 3 using 3
 398          {
 399   1              TH1=HI;
 400   1              TL1=LO;
 401   1         if(cai_N>=150)
 402   1              {
 403   2                  TH0=0;
 404   2                      TL0=0;
 405   2                      cai_N=0;
 406   2                      cai_flag=1;
 407   2              }
 408   1              else
 409   1              cai_N++; 
 410   1      
 411   1          if((n>=1)&&(n<=3))
 412   1              switch(n)
 413   1              {
 414   2                      case 1:
 415   2                      duan|=0x7f;
 416   2                      _nop_();_nop_();_nop_();_nop_();
 417   2                      com0=0;com1=1;com2=1; //high
 418   2                      duan=smg[t2];
 419   2                  _nop_();_nop_();_nop_();_nop_();
 420   2                      break;
 421   2                      case 2:
 422   2                  duan|=0x7f;
 423   2                      _nop_();_nop_();_nop_();_nop_();
 424   2                      com0=1;com1=0;com2=1; //high
C51 COMPILER V7.20   BDZ                                                                   08/25/2006 20:43:45 PAGE 8   

 425   2                      duan=smg[t1];
 426   2                  _nop_();_nop_();_nop_();_nop_();
 427   2                      break;
 428   2                      case 3:
 429   2                      duan|=0x7f;
 430   2                      _nop_();_nop_();_nop_();_nop_();
 431   2                      com0=1;com1=1;com2=0; //high
 432   2                      duan=smg[t0];
 433   2                  _nop_();_nop_();_nop_();_nop_();
 434   2                      break;
 435   2              }
 436   1              n++;
 437   1              if(n>=4) n=1;
 438   1      }
 439          void init_t01(void)
 440          {
 441   1              P0=0xff;P1=0xff;P2=0xff;P3=0xff;
 442   1              TH1 = HI;
 443   1              TL1 = LO;
 444   1              TH0=0;             //| EA | |--| |--| | ES | | ET1 | |EX0| |ET0| |EX0|
 445   1              TL0=0;                 // 1              0      1       0     0    0
 446   1              TMOD = 0x11;     //| GATE | C/T | M1 | M2| GATE | C/T| M1| M2 |
 447   1              IE=0x88;          //   0     0     0    1    0     1    0    1
 448   1          TR0=1;                              //T1工作在定时器方式,T0工作在定时器方式
 449   1              TR1=1;
 450   1      }
 451          main()
 452          {
 453   1              
 454   1           I_init();   //IIC处处市
 455   1               init_t01();  //定时器,计数器初始化
 456   1               stin();     //读出2402中存储的数据
 457   1              
 458   1           while(1)
 459   1           {  
 460   2              if(MOD==0)    
 461   2              {       delay(200);        //2     
 462   3                      if(MOD==0)    //
 463   3                      {     //  mod_flag=1;         
 464   4                          count++;
 465   4                                              if(count==1)
 466   4                                              {
 467   5                                                      mod_led=0;
 468   5                                                      xiax_linshi=shd_3(tem_xiax_addr,50,230);
 469   5                                                      if(xiax_linshi!=OV_TIM)
 470   5                                                      tem_xiax=xiax_linshi;
 471   5                                                      mod_led=1;
 472   5                                              }
 473   4                                              if(count==2)
 474   4                                              {
 475   5                                                      mod_led=0;
 476   5                                                      if(xiax_linshi==OV_TIM)
 477   5                                                      shd_3(tem_shax_addr,(tem_xiax+1),230);
 478   5                                                      else
 479   5                                                      shd_3(tem_shax_addr,(xiax_linshi+1),230);
 480   5                                                      mod_led=1;
 481   5                                              }
 482   4                                              if(count==3)
 483   4                                              {
 484   5                                                      mod_led=0;
 485   5                                                      shd_3(time_addr,0,999);
 486   5                                                      mod_led=1;
C51 COMPILER V7.20   BDZ                                                                   08/25/2006 20:43:45 PAGE 9   

 487   5                                              }
 488   4                                              if(count==4)
 489   4                                              {
 490   5                                                      mod_led=0;
 491   5                                                      js(0);
 492   5                                                      delay(20000);
 493   5                                                      j=10000;
 494   5                                                      count=0;
 495   5                                                      JDQ=1;   //断开
 496   5                                                      mod_led=1;
 497   5                                              }
 498   4                              }
 499   3                      }
 500   2              
 501   2                      caij=caiji();
 502   2                      tem_now=zh(caij);
 503   2                      if((tem_now>230)&&(tem_now<50))
 504   2                      {
 505   3                              tem_now=0;
 506   3                      }
 507   2              js(tem_now);            
 508   2              
 509   2                      if(flag==1)
 510   2                      {       JDQ=0;
 511   3                              if(tem_now>=tem_shax)
 512   3                              {       JDQ=1;
 513   4                                      FMQ=0; 
 514   4                                      cai_N=0;
 515   4                                      cai_flag=0;
 516   4                                      if(cai_flag==1)
 517   4                                      {FMQ=1;cai_flag=0;flag=0;}
 518   4                              }
 519   3                      }
 520   2                      else
 521   2                      {       JDQ=0;
 522   3                              if(tem_now>=tem_shax)
 523   3                              {       JDQ=1;
 524   4                                      FMQ=0; 
 525   4                                      cai_N=0;
 526   4                                      cai_flag=0;
 527   4                                      if(cai_flag==1)
 528   4                                      {FMQ=1;cai_flag=0;}
 529   4                              }
 530   3                      }               
 531   2      
 532   2                      if(tem_now<tem_shax)
 533   2                      {
 534   3                              if((SET==0))
 535   3                              {
 536   4                                      delay(200);
 537   4                                      if(SET==0)
 538   4                                      {       
 539   5                                              flag=1;
 540   5                                      }
 541   4                              }
 542   3                              else
 543   3                              {
 544   4                                      flag=0;
 545   4                          }
 546   3                 }
 547   2              }
 548   1                      
C51 COMPILER V7.20   BDZ                                                                   08/25/2006 20:43:45 PAGE 10  

 549   1      }  
 550               
 551          /*========================================================================================================
             -=*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1545    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     21      36
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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