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

📄 ai.lst

📁 c8051f040 内部集成的温度传感器使用 直接给出温度的函数
💻 LST
📖 第 1 页 / 共 2 页
字号:
 163          /* FUNCTION                                                              */
 164          /*                                                                       */
 165          /*      Temp_measure                                                     */
 166          /*                                                                       */
 167          /* DESCRIPTION                                                           */
 168          /*                                                                       */
 169          /*       Temprature measure function                                     */
 170          /*                                                                       */
 171          /* AUTHOR                                                                */
 172          /*                                                                       */
 173          /*      Wang ZhongFu                                                     */
 174          /*                                                                       */
 175          /* CALLED BY                                                             */
 176          /*                                                                       */
 177          /*      Application                                                      */
 178          /*                                                                       */
 179          /* CALLS                                                                 */
C51 COMPILER V8.17   AI                                                                    04/16/2009 17:40:13 PAGE 4   

 180          /*                                                                       */
 181          /*      none                                                             */
 182          /*                                                                       */
 183          /* INPUTS                                                                */
 184          /*                                                                       */
 185          /*      none                                                             */
 186          /*                                                                       */
 187          /* OUTPUTS                                                               */
 188          /*                                                                       */
 189          /*      none                                                             */
 190          /*                                                                       */
 191          /* HISTORY                                                               */
 192          /*                                                                       */
 193          /*        DATE                    REMARKS                                */
 194          /*      10-30-2006            Created initial version 1.0                */
 195          /*************************************************************************/
 196          void Temp_measure(){
 197   1              adc0_source(9);                 //ADC0 channel select
 198   1              //while(stack_index<STACK_LEN){
 199   1              ADC0START;                  //ADC0 start 
 200   1              while (~AD0INT);
 201   1              AD0INT=0;
 202   1                      //isnewdata=1;
 203   1      
 204   1              SampleValue=ADC0DATA;
 205   1                      //kk=ADC0H*256;
 206   1                      //kk+=ADC0L;
 207   1                      //stack_index++;
 208   1                      //ADC0START;
 209   1              //}
 210   1              //stack_index=0;
 211   1              //for(ti=0,total=0L;ti<STACK_LEN;ti++)
 212   1                      //total+=mystack[ti];
 213   1              //total/=8L;
 214   1              tempvalue=(float)SampleValue/4096;
 215   1              tempvalue*=2.43;
 216   1              tempvalue/=2L;
 217   1              tempvalue-=0.776;
 218   1              tempvalue/=0.00286;//transform measure data to real temprature  
 219   1              Sample_TempratureValue=tempvalue;
 220   1                      //isnewdata=0;
 221   1              //temp16[dataindex]=tempvalue;//put temprature into 20 arraies
 222   1              //dataindex++;
 223   1              //if(dataindex>19)
 224   1                      //dataindex=0;
 225   1      }
 226          void main(){
 227   1              //memset(&mystack,0x00,sizeof(mystack));        
 228   1              EA = 0;
 229   1              //SFRPAGE=0x00;
 230   1              //rst=RSTSRC;
 231   1              config();
 232   1              RelayOut_ControlFan=0;
 233   1              OutTest=0;
 234   1              t0ini();
 235   1              adc0_ini();//ADC0 initialization
 236   1              EA = 1;
 237   1              T0RUN;
 238   1              delay1ms(10);
 239   1              SFRPAGE=0x0f;
 240   1              Temp_measure();//discard  first  samplevalue
 241   1              Temp_measure();//environment temprature
C51 COMPILER V8.17   AI                                                                    04/16/2009 17:40:13 PAGE 5   

 242   1              Start_temprature=Sample_TempratureValue;
 243   1              while(1){
 244   2                      if(Time_1_Minute_Switch>10){
 245   3                              Time_1_Minute_Switch=0;
 246   3                              Temp_measure();//environment temprature
 247   3                              Sub_temprature=Sample_TempratureValue-Start_temprature;
 248   3                              Enviroment_History_temprature=Sample_TempratureValue;
 249   3                              Temprature_Measure_Switch=1;
 250   3                              if(Enviroment_History_temprature>=AlarmTemprature_HighLine){
 251   4                                 OutControl_Switch=0;
 252   4                              }
 253   3                              else{
 254   4                                 OutControl_Switch=1;
 255   4                              }
 256   3                      }
 257   2                      if(Time_3_Minute_Switch>3){
 258   3                              Time_3_Minute_Switch=0;
 259   3                              Relay_Run_Stop_Switch=0;
 260   3                      }
 261   2                      if(Temprature_Measure_Switch){
 262   3                              Temp_measure();//environment temprature
 263   3                      
 264   3                              Enviroment_temprature=0.8*Enviroment_History_temprature+0.2*(Sample_TempratureValue-Sub_temprature);
 265   3                              Enviroment_History_temprature=Enviroment_temprature;
 266   3                              if((Enviroment_temprature>AlarmTemprature_HighLine)&&(Relay_Run_Stop_Switch==0)&&(OutControl_Switch!=1)
             -){
 267   4                                      RelayOut_ControlFan=1;
 268   4                                      OutTest=1;
 269   4                                      Relay_Run_Stop_Switch=1;
 270   4                                      OutControl_Switch=1;
 271   4              
 272   4                              }
 273   3                              if((Enviroment_temprature<AlarmTemprature_LowLine)&&(Relay_Run_Stop_Switch==0)&&(OutControl_Switch!=0))
             -{
 274   4                                      RelayOut_ControlFan=0;
 275   4                                      OutTest=0;
 276   4                                      Relay_Run_Stop_Switch=1;
 277   4                                      OutControl_Switch=0;
 278   4      
 279   4                              }
 280   3                      }
 281   2                      
 282   2              
 283   2              }
 284   1      }
 285          
 286          
 287          /************************************/
 288          /* T0 interrupt function       */
 289          /************************************/
 290          void T0int1() interrupt 1{
 291   1              
 292   1              //static        uchar   AccuCounter=0;
 293   1               
 294   1              temppage1=SFRPAGE;
 295   1              SFRPAGE=0x00;
 296   1              TR0   = 0;
 297   1              TH0   = 62346/256;
 298   1              TL0   = 62346%256;
 299   1              TR0   = 1;
 300   1              SFRPAGE=0x0f;
 301   1              //OutTest=~OutTest;
C51 COMPILER V8.17   AI                                                                    04/16/2009 17:40:13 PAGE 6   

 302   1              if(!Temprature_Measure_Switch){
 303   2                      Time_1_Minute_Switch++;
 304   2              }
 305   1              if(Relay_Run_Stop_Switch){
 306   2                      Time_3_Minute_Switch++;
 307   2              }
 308   1              
 309   1              //ProgramLED=~ProgramLED;
 310   1              //CANLED=~CANLED;
 311   1              //WDTCN=0xA5;
 312   1              SFRPAGE=temppage1;
 313   1              
 314   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    972    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     41    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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