亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.lst

?? 溫度濕度一體化傳感器的C51測試程序,容易移植到其他嵌入式處理器上
?? LST
?? 第 1 頁 / 共 2 頁
字號:
 237          
 238          //----------------------------------------------------------------------------------
 239          char s_write_byte(unsigned char value)
 240          //----------------------------------------------------------------------------------
 241          // writes a byte on the Sensibus and checks the acknowledge 
C51 COMPILER V8.02   MAIN                                                                  06/02/2007 10:41:58 PAGE 5   

 242          { 
 243   1        unsigned char i,error=0;  
 244   1        for (i=0x80;i>0;i/=2)             //shift bit for masking
 245   1        { if (i & value) DATA=1;          //masking value with i , write to SENSI-BUS
 246   2          else DATA=0;                        
 247   2          SCK=1;                          //clk for SENSI-BUS
 248   2          _nop_();_nop_();_nop_();        //pulswith approx. 5 us     
 249   2          SCK=0;
 250   2        }
 251   1        DATA=1;                           //release DATA-line
 252   1        SCK=1;                            //clk #9 for ack 
 253   1        error=DATA;                       //check ack (DATA will be pulled down by SHT11)
 254   1        SCK=0;        
 255   1        return error;                     //error=1 in case of no acknowledge
 256   1      }
 257          
 258          //----------------------------------------------------------------------------------
 259          char s_read_byte(unsigned char ack)
 260          //----------------------------------------------------------------------------------
 261          // reads a byte form the Sensibus and gives an acknowledge in case of "ack=1" 
 262          { 
 263   1        unsigned char i,val=0;
 264   1        DATA=1;                           //release DATA-line
 265   1        for (i=0x80;i>0;i/=2)             //shift bit for masking
 266   1        { SCK=1;                          //clk for SENSI-BUS
 267   2          if (DATA) val=(val | i);        //read bit  
 268   2          SCK=0;                                       
 269   2        }
 270   1        DATA=!ack;                        //in case of "ack==1" pull down DATA-Line
 271   1        SCK=1;                            //clk #9 for ack
 272   1        _nop_();_nop_();_nop_();          //pulswith approx. 5 us 
 273   1        SCK=0;                                                    
 274   1        DATA=1;                           //release DATA-line
 275   1        return val;
 276   1      }
 277          
 278          //----------------------------------------------------------------------------------
 279          void s_transstart(void)
 280          //----------------------------------------------------------------------------------
 281          // generates a transmission start 
 282          //       _____         ________
 283          // DATA:      |_______|
 284          //           ___     ___
 285          // SCK : ___|   |___|   |______
 286          {  
 287   1         DATA=1; SCK=0;                   //Initial state
 288   1         _nop_();
 289   1         SCK=1;
 290   1         _nop_();
 291   1         DATA=0;
 292   1         _nop_();
 293   1         SCK=0;  
 294   1         _nop_();_nop_();_nop_();
 295   1         SCK=1;
 296   1         _nop_();
 297   1         DATA=1;                 
 298   1         _nop_();
 299   1         SCK=0;                  
 300   1      }
 301          
 302          //----------------------------------------------------------------------------------
 303          void s_connectionreset(void)
C51 COMPILER V8.02   MAIN                                                                  06/02/2007 10:41:58 PAGE 6   

 304          //----------------------------------------------------------------------------------
 305          // communication reset: DATA-line=1 and at least 9 SCK cycles followed by transstart
 306          //       _____________________________________________________         ________
 307          // DATA:                                                      |_______|
 308          //          _    _    _    _    _    _    _    _    _        ___     ___
 309          // SCK : __| |__| |__| |__| |__| |__| |__| |__| |__| |______|   |___|   |______
 310          {  
 311   1        unsigned char i; 
 312   1        DATA=1; SCK=0;                    //Initial state
 313   1        for(i=0;i<9;i++)                  //9 SCK cycles
 314   1        { SCK=1;
 315   2          SCK=0;
 316   2        }
 317   1        s_transstart();                   //transmission start
 318   1      }
 319          
 320          //----------------------------------------------------------------------------------
 321          char s_softreset(void)
 322          //----------------------------------------------------------------------------------
 323          // resets the sensor by a softreset 
 324          { 
 325   1        unsigned char error=0;  
 326   1        s_connectionreset();              //reset communication
 327   1        error+=s_write_byte(RESET);       //send RESET-command to sensor
 328   1        return error;                     //error=1 in case of no response form the sensor
 329   1      }
 330          
 331          //----------------------------------------------------------------------------------
 332          char s_read_statusreg(unsigned char *p_value, unsigned char *p_checksum)
 333          //----------------------------------------------------------------------------------
 334          // reads the status register with checksum (8-bit)
 335          { 
 336   1        unsigned char error=0;
 337   1        s_transstart();                   //transmission start
 338   1        error=s_write_byte(STATUS_REG_R); //send command to sensor
 339   1        *p_value=s_read_byte(ACK);        //read status register (8-bit)
 340   1        *p_checksum=s_read_byte(noACK);   //read checksum (8-bit)  
 341   1        return error;                     //error=1 in case of no response form the sensor
 342   1      }
 343          
 344          //----------------------------------------------------------------------------------
 345          char s_write_statusreg(unsigned char *p_value)
 346          //----------------------------------------------------------------------------------
 347          // writes the status register with checksum (8-bit)
 348          { 
 349   1        unsigned char error=0;
 350   1        s_transstart();                   //transmission start
 351   1        error+=s_write_byte(STATUS_REG_W);//send command to sensor
 352   1        error+=s_write_byte(*p_value);    //send value of status register
 353   1        return error;                     //error>=1 in case of no response form the sensor
 354   1      }
 355                                                                     
 356          //----------------------------------------------------------------------------------
 357          char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode)
 358          //----------------------------------------------------------------------------------
 359          // makes a measurement (humidity/temperature) with checksum
 360          { 
 361   1        unsigned error=0;
 362   1        unsigned int i;
 363   1      
 364   1        s_transstart();                   //transmission start
 365   1        switch(mode){                     //send command to sensor
C51 COMPILER V8.02   MAIN                                                                  06/02/2007 10:41:58 PAGE 7   

 366   2          case TEMP   : error+=s_write_byte(MEASURE_TEMP); break;
 367   2          case HUMI   : error+=s_write_byte(MEASURE_HUMI); break;
 368   2          default     : break;         
 369   2        }
 370   1        for (i=0;i<65535;i++) if(DATA==0) break; //wait until sensor has finished the measurement
 371   1        if(DATA) error+=1;                // or timeout (~2 sec.) is reached
 372   1        *(p_value)  =s_read_byte(ACK);    //read the first byte (MSB)
 373   1        *(p_value+1)=s_read_byte(ACK);    //read the second byte (LSB)
 374   1        *p_checksum =s_read_byte(noACK);  //read checksum
 375   1        return error;
 376   1      }
 377          
 378          //----------------------------------------------------------------------------------
 379          void init_uart()
 380          //----------------------------------------------------------------------------------
 381          //9600 bps @ 11.059 MHz 
 382          {SCON  = 0x52;    
 383   1       TMOD  = 0x20;    
 384   1       TCON  = 0x69;    
 385   1       TH1   = 0xfd;    
 386   1      }
 387          
 388          //----------------------------------------------------------------------------------------
 389          void calc_sth11(float *p_humidity ,float *p_temperature)
 390          //----------------------------------------------------------------------------------------
 391          // calculates temperature [癈] and humidity [%RH] 
 392          // input :  humi [Ticks] (12 bit) 
 393          //          temp [Ticks] (14 bit)
 394          // output:  humi [%RH]
 395          //          temp [癈]
 396          { const float C1=-4.0;              // for 12 Bit
 397   1        const float C2=+0.0405;           // for 12 Bit
 398   1        const float C3=-0.0000028;        // for 12 Bit
 399   1        const float T1=+0.01;             // for 14 Bit @ 5V
 400   1        const float T2=+0.00008;           // for 14 Bit @ 5V 
 401   1      
 402   1        float rh=*p_humidity;             // rh:      Humidity [Ticks] 12 Bit 
 403   1        float t=*p_temperature;           // t:       Temperature [Ticks] 14 Bit
 404   1        float rh_lin;                     // rh_lin:  Humidity linear
 405   1        float rh_true;                    // rh_true: Temperature compensated humidity
 406   1        float t_C;                        // t_C   :  Temperature [癈]
 407   1      
 408   1        t_C=t*0.01 - 40;                  //calc. temperature from ticks to [癈]
 409   1        rh_lin=C3*rh*rh + C2*rh + C1;     //calc. humidity from ticks to [%RH]
 410   1        rh_true=(t_C-25)*(T1+T2*rh)+rh_lin;   //calc. temperature compensated humidity [%RH]
 411   1        if(rh_true>100)rh_true=100;       //cut if the value is outside of
 412   1        if(rh_true<0.1)rh_true=0.1;       //the physical possible range
 413   1      
 414   1        *p_temperature=t_C;               //return temperature [癈]
 415   1        *p_humidity=rh_true;              //return humidity[%RH]
 416   1      }
 417          
 418          //--------------------------------------------------------------------
 419          float calc_dewpoint(float h,float t)
 420          //--------------------------------------------------------------------
 421          // calculates dew point
 422          // input:   humidity [%RH], temperature [癈]
 423          // output:  dew point [癈]
 424          { float logEx,dew_point;
 425   1        logEx=0.66077+7.5*t/(237.3+t)+(log10(h)-2);
 426   1        dew_point = (logEx - 0.66077)*237.3/(0.66077+7.5-logEx);
 427   1        return dew_point;
C51 COMPILER V8.02   MAIN                                                                  06/02/2007 10:41:58 PAGE 8   

 428   1      }
 429          
 430          //----------------------------------------------------------------------------------
 431          void main()
 432          //----------------------------------------------------------------------------------
 433          // sample program that shows how to use SHT11 functions
 434          // 1. connection reset 
 435          // 2. measure humidity [ticks](12 bit) and temperature [ticks](14 bit)
 436          // 3. calculate humidity [%RH] and temperature [癈]
 437          // 4. calculate dew point [癈]
 438          // 5. print temperature, humidity, dew point  
 439          
 440          { value humi_val,temp_val;
 441   1        float dew_point;
 442   1        unsigned char error,checksum;
 443   1        unsigned int i;
 444   1      
 445   1        init_uart();
 446   1        s_connectionreset();
 447   1        while(1)
 448   1        { error=0;
 449   2          error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI);  //measure humidity
 450   2          error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP);  //measure temperature
 451   2          if(error!=0) s_connectionreset();                 //in case of an error: connection reset
 452   2          else
 453   2          { humi_val.f=(float)humi_val.i;                   //converts integer to float
 454   3            temp_val.f=(float)temp_val.i;                   //converts integer to float
 455   3            calc_sth11(&humi_val.f,&temp_val.f);            //calculate humidity, temperature
 456   3            dew_point=calc_dewpoint(humi_val.f,temp_val.f); //calculate dew point
 457   3            printf("temp:%5.1fC humi:%5.1f%% dew point:%5.1fC\n",temp_val.f,humi_val.f,dew_point);
 458   3          }
 459   2          //----------wait approx. 0.8s to avoid heating up SHTxx------------------------------      
 460   2          for (i=0;i<40000;i++);     //(be sure that the compiler doesn't eliminate this line!)
 461   2          //-----------------------------------------------------------------------------------                 
             -      
 462   2        }
 463   1      } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1523    ----
   CONSTANT SIZE    =     54    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     21      89
   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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品剧情在线亚洲| 欧美视频一区在线| 蜜桃av一区二区| 亚洲r级在线视频| 亚洲国产毛片aaaaa无费看| 亚洲男同性视频| 亚洲欧洲色图综合| 国产精品私人影院| 国产精品成人免费在线| 中文幕一区二区三区久久蜜桃| 久久―日本道色综合久久| 久久人人超碰精品| 国产亚洲短视频| 中文字幕av不卡| 一区二区三区在线视频免费观看| 亚洲免费观看高清完整 | 蜜臂av日日欢夜夜爽一区| 午夜精品在线视频一区| 日韩中文字幕亚洲一区二区va在线| 首页欧美精品中文字幕| 久久99在线观看| 国产a久久麻豆| 91激情在线视频| 欧美一区二区精品| 国产农村妇女毛片精品久久麻豆| 国产精品超碰97尤物18| 亚洲五码中文字幕| 九一九一国产精品| 9l国产精品久久久久麻豆| 91成人看片片| 精品不卡在线视频| 亚洲另类中文字| 精品系列免费在线观看| 99在线精品免费| 欧美剧情片在线观看| 久久久久久综合| 亚洲一区二区三区中文字幕 | 日本成人在线不卡视频| 国产成人精品aa毛片| 欧亚一区二区三区| 久久先锋影音av鲁色资源网| 亚洲精品欧美综合四区| 美女在线观看视频一区二区| 99久久婷婷国产综合精品电影 | 日韩免费观看高清完整版在线观看| 国产午夜精品久久久久久久| 亚洲一区二区三区四区五区中文 | 欧美色欧美亚洲另类二区| 久久综合九色综合欧美亚洲| 亚洲高清在线精品| av一区二区久久| 精品国产电影一区二区| 亚洲高清视频的网址| 99久久综合国产精品| 亚洲精品在线电影| 日日夜夜免费精品| 91成人在线精品| 国产精品理论在线观看| 久久er99精品| 制服丝袜中文字幕亚洲| 亚洲制服丝袜一区| 成人国产精品免费观看视频| 精品久久久网站| 亚洲国产中文字幕| 色先锋aa成人| 亚洲欧美日韩在线| 99视频精品在线| 中文无字幕一区二区三区| 国模无码大尺度一区二区三区| 欧美日产在线观看| 亚洲成人av一区二区| 色婷婷综合激情| 亚洲激情六月丁香| 91在线观看免费视频| 综合久久久久久久| av在线一区二区| 亚洲视频 欧洲视频| 97久久超碰国产精品电影| 中文字幕永久在线不卡| www.欧美.com| 亚洲精品网站在线观看| 在线欧美小视频| 亚洲一区二区三区视频在线 | 91精品国产高清一区二区三区蜜臀| 亚洲午夜av在线| 91.麻豆视频| 日本一不卡视频| 欧美电影精品一区二区| 韩日欧美一区二区三区| 久久久精品影视| 成人黄色在线看| 国产精品不卡一区| 欧美在线观看视频一区二区三区| 午夜影院久久久| 欧美一区二区三区四区五区| 精品亚洲成a人| 欧美韩国日本综合| 色爱区综合激月婷婷| 亚洲高清免费观看| 欧美变态口味重另类| 国产盗摄女厕一区二区三区| 国产精品乱码久久久久久| 91国产福利在线| 免费在线欧美视频| 国产精品丝袜久久久久久app| 91丨porny丨国产入口| 五月天亚洲婷婷| 国产日韩高清在线| 欧美最猛性xxxxx直播| 免费看欧美女人艹b| 国产精品的网站| 91精品国产91久久久久久最新毛片| 国产一区二区精品久久99| 亚洲人成网站影音先锋播放| 91精品国产aⅴ一区二区| 成人涩涩免费视频| 亚洲电影在线播放| 亚洲国产精品成人综合| 欧美高清视频在线高清观看mv色露露十八| 老司机午夜精品| 一区二区三区色| 国产性做久久久久久| 欧美日本一道本| 北岛玲一区二区三区四区| 日韩av一二三| 亚洲欧美电影院| 国产区在线观看成人精品| 91麻豆精品国产91久久久久 | 91国产成人在线| 粉嫩13p一区二区三区| 久久黄色级2电影| 亚洲一区二区三区视频在线播放| 欧美国产综合一区二区| 91精品国产色综合久久ai换脸| 99riav一区二区三区| 丁香天五香天堂综合| 久久99精品久久久久久久久久久久| 一区二区在线免费观看| 国产精品免费久久久久| 精品av综合导航| 欧美久久婷婷综合色| 欧美综合天天夜夜久久| 99re免费视频精品全部| eeuss鲁片一区二区三区| 国产精品白丝av| 极品美女销魂一区二区三区免费| 奇米精品一区二区三区四区| 午夜精品久久久久影视| 亚洲第一狼人社区| 亚洲电影中文字幕在线观看| 一区二区三区日韩欧美精品| 亚洲精品写真福利| 亚洲人成网站精品片在线观看| 中文字幕第一区第二区| 国产亚洲1区2区3区| 久久久99精品久久| 国产欧美一区二区精品仙草咪| 久久久国产午夜精品| 亚洲国产精品av| 国产精品伦理在线| 1024精品合集| 亚洲免费在线视频一区 二区| 亚洲欧美另类综合偷拍| 亚洲精品国产无天堂网2021| 一区二区三区在线免费| 一区二区三区日本| 亚洲成精国产精品女| 日韩av一级片| 韩国成人福利片在线播放| 国产精品亚洲成人| 99久久精品久久久久久清纯| 色www精品视频在线观看| 555www色欧美视频| 精品成a人在线观看| 国产调教视频一区| 国产精品卡一卡二卡三| 亚洲精品一二三四区| 日韩电影免费在线观看网站| 日本不卡免费在线视频| 国产精品一品二品| 色视频欧美一区二区三区| 欧美一区二区免费视频| 久久久久国产精品厨房| 一区二区三区久久| 国模娜娜一区二区三区| 色婷婷久久综合| 精品伦理精品一区| 亚洲色图一区二区| 日韩福利视频导航| 99国产麻豆精品| 欧美电视剧在线观看完整版| 综合久久国产九一剧情麻豆| 亚洲高清免费观看| 成人视屏免费看| 日韩视频国产视频| 亚洲精品网站在线观看| 国产精品一二三区在线| 精品视频999| 亚洲免费看黄网站| 国产不卡视频在线播放|