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

📄 main.lst

📁 air-contronin controning air in or out,big or small check the temprature.
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.05a   MAIN                                                                 06/05/2007 06:25:16 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\syssoft\keil805\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          
   3          #include "STC12.H"
   4          #include "pin.h"
   5          #include "MATH.H"
   6          #include "function.h"
   7          #include "evariable.h"
   8          main()
   9          {
  10   1              init();
  11   1              while(1)
  12   1              {
  13   2                      cnt_main++;
  14   2      //              WDT_CONTR=0x37;//喂狗 every 10s to start and set watch dog
  15   2                      scan_key();
  16   2                      if(k_pw)
  17   2                      {
  18   3                              disp_sens();
  19   3                              //dispose for hpr
  20   3                              disp_Hpr();
  21   3                              //dispose for Lpr
  22   3                              disp_Lpr();
  23   3                              //dispose fresh-air function
  24   3                              disp_fa();
  25   3                              disp_ref();
  26   3                              display();
  27   3                              //use T check data stored in the ee     if changing;
  28   3                              //if happend,refresh the data of ee
  29   3                              ee_fresh();
  30   3                              //suggest not fresh operating every time during da_WA changing
  31   3                              disp_spd();
  32   3                              speaking();
  33   3                      }
  34   2      
  35   2              }
  36   1              while(1);
  37   1      }
  38          
  39          
  40          void delay10ms(unsigned int da)
  41          {
  42   1              unsigned int i,j;
  43   1              for(i=0;i<da;i++)
  44   1              {
  45   2                 for(j=0;j<16000;j++);
  46   2              }
  47   1      }
  48          
  49          void scan_key(void)
  50          {
  51   1              byte da,da2;
  52   1      //      if(alarm==0)
  53   1      //      {
  54   1                      da=(unsigned char)sample_adc(1);
  55   1                      if((da>51)&&(da<205))
C51 COMPILER V8.05a   MAIN                                                                 06/05/2007 06:25:16 PAGE 2   

  56   1                      {
  57   2                              delay2(1000);           
  58   2                              da2=(unsigned char)sample_adc(1);
  59   2                              if(abs(da-da2)<0x05)
  60   2                              {
  61   3                                      if((alarm==0)&&(51<da)&&(da<=102)&&(k_pw))  //k101接通
  62   3                                      {
  63   4                                              k_ref=!k_ref;
  64   4                                              if(k_ref==1)//cool key at open state
  65   4                                              {                         //display ON in LCD
  66   5                                                      dp_chara(addr_ON,0,2,30,18);
  67   5                                                      state_ref=0;
  68   5                                                      //when at cool state,wind adjusting is 
  69   5                                                      //less than 1/3 to 
  70   5                                                      if(da_WA<=30)
  71   5                                                      {
  72   6                                                              da_WA=30;
  73   6                                                              WA_changed=1;
  74   6                                                              state_WA=0;
  75   6                                                      }
  76   5                                              }
  77   4                                              else    //cool key at open state
  78   4                                              {                         //display OFF in LCD
  79   5                                                      dp_chara(addr_OFF,0,2,30,18);
  80   5                                                      state_ref=0xff;
  81   5                                                      ref=0;
  82   5                                              }
  83   4                                      }
  84   3                                      //FRESH AIR:    0   indicate OFF state
  85   3                                      //                              1       indicate ON state
  86   3                                      //                              2       indicate AUTO state
  87   3                                      if((alarm==0)&&(102<da)&&(da<=154)&&(k_pw))
  88   3                                      {       
  89   4                                              switch((++k_fa)%3)
  90   4                                              { 
  91   5                                                      case 0:    //OFF
  92   5                                                              dp_chara(addr_OFF,0,3,30,18);
  93   5                                                              freshair_aut=0;
  94   5                                                              freshair=0;
  95   5                                                              break;
  96   5                                                      case 1:          //ON
  97   5                                                              dp_chara(addr_ON,0,3,30,18);
  98   5                                                              freshair_aut=0;
  99   5                                                              freshair=1;
 100   5                                                              break;
 101   5                                                      case 2:         //AUT
 102   5                                                                              //star up Time ,changing states between
 103   5                                                                              //ON and OFF per 2s
 104   5                                                              dp_chara(addr_AUT,0,3,30,18);
 105   5                                                              freshair_aut=1;
 106   5                                                              break;
 107   5                                                      default:
 108   5                                                              break;
 109   5                                              }
 110   4                                      }       
 111   3                                      //controll frigerate function 
 112   3                                      if((154<da)&&(da<=205))
 113   3                                      {
 114   4                                                      k_pw=!k_pw;
 115   4                                                      if(k_pw==1)//power key at open state
 116   4                                                      {                         //display ON in LCD
 117   5                                                              switch_5v=1;
C51 COMPILER V8.05a   MAIN                                                                 06/05/2007 06:25:16 PAGE 3   

 118   5                                                              delay2(500);
 119   5                                                              power_on();
 120   5      //                                                      dp_chara(addr_ON,0,1,30,18);
 121   5                                                      }
 122   4                                                      else    //power key at open state
 123   4                                                      {                         //display OFF in LCD
 124   5                                                              switch_5v=0;
 125   5                                                      }
 126   4      
 127   4                                      }
 128   3                                      delay2(1000);
 129   3                                      while(1)
 130   3                                      {
 131   4                                              da2=(unsigned char)sample_adc(1);
 132   4                                              if(da2>205)
 133   4                                              {
 134   5                                                      break;
 135   5                                              }
 136   4                                      }  
 137   3                              }
 138   2      
 139   2                      }
 140   1      
 141   1      //      }
 142   1      
 143   1      }
 144           
 145          
 146          
 147          
 148          unsigned int adc4(void)
 149          {
 150   1              unsigned int Vd,Vd1;
 151   1              byte da;
 152   1              //p1.4 is input of adc
 153   1              //chs2~0:100B;adc_power=1;
 154   1              //speed1~0:11B
 155   1              P1M0|=0x10;
 156   1              P1M1&=0xef;
 157   1              ADC_CONTR=0xe4;
 158   1              ADC_CONTR&=0xe7;//clear start flag and end flag
 159   1              ADC_DATA=0;             //clear result data register
 160   1              ADC_LOW2=0;
 161   1              ADC_CONTR|=0x08;
 162   1              while(!(ADC_CONTR&0x10));
 163   1      //      P1M0&=0xef;
 164   1      //      P1M1&=0xef;
 165   1              ADC_CONTR&=0x80;
 166   1              da=     ADC_DATA;
 167   1              Vd=(unsigned int)da;
 168   1              Vd<<=2;
 169   1              da=ADC_LOW2;
 170   1              da&=0x03;
 171   1              Vd1=(unsigned int)da;
 172   1              Vd=Vd+Vd1;
 173   1              return(Vd);
 174   1      }
 175          
 176          void disp_spd(void)
 177          { 
 178   1              float da=0;
 179   1              byte da1=0;
C51 COMPILER V8.05a   MAIN                                                                 06/05/2007 06:25:16 PAGE 4   

 180   1              if((WA_changed)&&(alarm==0))
 181   1              {
 182   2                      if(state_WA==0)
 183   2                      {
 184   3                              state_WA=1;
 185   3                              cnt_WA=0;
 186   3                              F2sWA=0;
 187   3                      }
 188   2                      else if((state_WA==1)&&(F2sWA==1))
 189   2                      {
 190   3                              F2sWA=0;
 191   3                              state_WA=0;
 192   3                              WA_changed=0;
 193   3                              DToA();                 
 194   3                      }
 195   2              }        
 196   1      }
 197          
 198          //input: wind grade; 
 199          //output:d->a output
 200          void DToA(void)
 201          {
 202   1              float da;
 203   1              unsigned int da1;
 204   1              //d/a output voltage :0~4.5v
 205   1              //then amplify 4 time
 206   1              da=(float)da_WA;
 207   1              da=99-da;
 208   1              da=da*1024*18/99/4/5/2;  //fomula is da/99*18/4/5*1024
 209   1              da1=(unsigned int)da;
 210   1              TLC5615(da1);
 211   1      }
 212          
 213          void TLC5615(unsigned int da)
 214          {
 215   1              byte i;
 216   1              CLK=0;
 217   1              CS=1;
 218   1              DA=0;
 219   1              da<<=2;
 220   1              CS=0;
 221   1              for(i=0;i<16;i++)
 222   1              {   
 223   2                      CLK=0;
 224   2                      DA = (0x8000 & da )? 1 : 0;
 225   2                      da<<=1;
 226   2                      CLK=1;
 227   2              } 
 228   1              CLK=0;
 229   1              CS=1;                   
 230   1      } 
 231          
 232          void power_on(void)
 233          {
 234   1      //      switch_5v=1;
 235   1      //      delay2(1000);
 236   1              LCD_INIT();
 237   1      //      k_pw=1;
 238   1      //      dp_chara(addr_ON,0,1,30,18);
 239   1              sendair_out=1;
 240   1              state=1;
 241   1              //SPD out
C51 COMPILER V8.05a   MAIN                                                                 06/05/2007 06:25:16 PAGE 5   

 242   1              da_WA=99;
 243   1              WA_changed=1;
 244   1              state_WA=0;
 245   1              EX0=1;
 246   1              EX1=1;
 247   1              pwon=1;
 248   1      }
 249          
 250          void disp_ref(void)
 251          {
 252   1              char da;
 253   1              if(alarm==0)
 254   1              {
 255   2                      switch(state_ref)
 256   2                      {
 257   3                              case 0:                          //suggestion:state_ref and ref should concurrent
 258   3                                                                       //state_ref:-- indicate neceserry to analyse temperatrue changing
 259   3                                      if(da_TA<=da_TC)//空调制冷输出
 260   3                                  {
 261   4      
 262   4                                              state_ref=1;
 263   4                                              cnt_Ref=0;
 264   4                                              F5sRef=0;
 265   4                                  }
 266   3                                      break;
 267   3      
 268   3                              case 1:
 269   3                                      if(F5sRef==1)
 270   3                                      {
 271   4                                              state_ref=0;
 272   4                                              F5sRef=0;
 273   4                                              if(da_TA<=da_TC)
 274   4                                              {
 275   5                                                 ref=1;//prepare open frigerate
 276   5                                              }
 277   4                                      }
 278   3                                      break;
 279   3      
 280   3                              default:
 281   3                                      break;
 282   3                      }
 283   2                      da=da_TC+2;
 284   2                      if(da_TA>=da) //Stop frigerate
 285   2                      {
 286   3                              ref=0;
 287   3                      }
 288   2              }
 289   1              else

⌨️ 快捷键说明

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