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

📄 main.lst

📁 基于AT89C2051的SHT11温湿度传感器嵌入式程序KEIL环境
💻 LST
📖 第 1 页 / 共 2 页
字号:
 179   2                      {
C51 COMPILER V7.00  MAIN                                                                   10/10/2007 14:42:11 PAGE 4   

 180   3                      case 1:{//启动测量湿度
 181   4                              MeasureHum();
 182   4      /*      aaa=0x12;
 183   4              TxData();
 184   4              if(F0==1)
 185   4              aaa=0xaa;//无器件
 186   4              else
 187   4              aaa=0x55;//有器件
 188   4              TxData();
 189   4      */                      /*TH0=0Xca;
 190   4                              TL0=0X00;//11.0592MHz 15mS
 191   4                              TR0=1;*/
 192   4                              count=0;
 193   4                              MeasureMode++;}break;
 194   3                      case 2:if(count==2)
 195   3                                      {MeasureMode++;count=0;}break;//等待延时
 196   3                      case 3:{//读湿度数据
 197   4                                      if(SDA==0) //等待测量完毕
 198   4                                      {
 199   5                                      canmea=0;
 200   5                                      hum=CalculateHum();
 201   5                                      dat=floor(hum*100);
 202   5                                      dhum[0]=floor(hum/10);//十位
 203   5                                      ftem=1000;ftem=fmod(dat,ftem);
 204   5                                      dhum[1]=floor(ftem/100);//个位
 205   5                                      dat=ftem;ftem=100;ftem=fmod(dat,ftem);
 206   5                                      dhum[2]=floor(ftem/10);//十分一位
 207   5                                      dat=ftem;ftem=10;ftem=fmod(dat,ftem);
 208   5                                      dhum[3]=floor(ftem);//百分一位
 209   5      /*                              for(p=dhum,i=0;i<4;i++,p++)
 210   5                                      {aaa=*p;TxData();}
 211   5      */                              MeasureMode++;
 212   5                                      }
 213   4                              }break;
 214   3                      case 4:if(count==2)
 215   3                                      {MeasureMode++;count=0;}break;//等待延时
 216   3                      case 5:{//启动测量温度
 217   4                              MeasureTem();
 218   4      /*      aaa=0x13;
 219   4              TxData();
 220   4              if(F0==1)
 221   4              aaa=0xaa;//无器件
 222   4              else
 223   4              aaa=0x55;//有器件
 224   4              TxData();
 225   4      */                      /*TH0=0X28;
 226   4                              TL0=0X00;//11.0592MHz 60mS
 227   4                              TR0=1;*/
 228   4                              count=0;
 229   4                              MeasureMode++;}break;
 230   3                      case 6:if(count==4)
 231   3                                      {MeasureMode++;count=0;}break;//等待延时
 232   3                      case 7:{//读温度数据
 233   4                                      if(SDA==0)//等待测量完毕
 234   4                                      {
 235   5                                      canmea=0;
 236   5                                      tem=CalculateTem();
 237   5                              //      dat=fsign(tem/100);
 238   5                              //      p=&tem;aaa=*p;
 239   5                                      if (tem<0)
 240   5                                      {dtem[0]=0x0f;//符号位
 241   6                                      tem=fabs(tem);
C51 COMPILER V7.00  MAIN                                                                   10/10/2007 14:42:11 PAGE 5   

 242   6                                      }
 243   5                                      else
 244   5                                      {tem=fabs(tem);
 245   6                                      ftem=100;
 246   6                                      ftem=fmod(tem,ftem);
 247   6                                      dtem[0]=floor(ftem);//百位
 248   6                                      }
 249   5                                      dtem[1]=floor(tem/10);//十位
 250   5                                      ftem=10;
 251   5                                      ftem=fmod(tem,ftem);
 252   5                                      dtem[2]=floor(ftem);//个位
 253   5                                      ftem=fmod(ftem*10,10);
 254   5                                      dtem[3]=floor(ftem);//十分一位
 255   5      /*                              for(p=dtem,i=0;i<4;i++,p++)
 256   5                                      {aaa=*p;TxData();}
 257   5      */                              MeasureMode=1;uartflasT=1;okmea=0;/*P0=~P0;*/
 258   5                                      }
 259   4                              }break;
 260   3                      default:;
 261   3                      }
 262   2              }
 263   1      }
 264          /*************************************Rmain      END *******************************/
 265          /**************************************Measure  START ******************************/
 266          /*void measure(void)
 267          {       
 268          }
 269          /**************************************Measure  END   ******************************/
 270          /*void TxData (void)
 271          {
 272                  SBUF=aaa;       
 273                  while(TI==0);
 274                          TI=0;
 275          
 276          }*/
 277          void Inituart(void)
 278          {
 279   1              TMOD = 0x21;                            //timer1 working mode 1
 280   1              TL1 = 0xfd;                                     //fb=9600 for 18.432mhz Fosc,and ... 
 281   1              TH1 = 0xfd;                                     //fd=9600 for 11.0592mhz Fosc
 282   1              SCON = 0x50;                            //uart mode 3,ren==1
 283   1              //PCON = 0x80;                          //smod=0
 284   1              TR1 = 1;                                        //start timer1
 285   1              ES=1;
 286   1      }
 287          void Inittimer0(void)
 288          {
 289   1              TMOD = 0x21;                            //timer0 working mode 1
 290   1              TL0 = 0x00;                                     //
 291   1              TH0 = 0xb8;                                     //20ms for 11.0592mhz Fosc
 292   1              TR0 = 1;                                        //start timer1
 293   1              ET0=1;EA=1;
 294   1      }
 295          //--------------------------------------------------------------------------------------------------
 296          // 函数名称: timer0
 297          // 定时器0中断函数
 298          // 函数功能: 计时
 299          //--------------------------------------------------------------------------------------------------
 300          void timer0 (void) interrupt 1 using 2
 301          {
 302   1              TH0=0Xb8;
 303   1              TL0=0X00;//11.0592MHz 20mS
C51 COMPILER V7.00  MAIN                                                                   10/10/2007 14:42:11 PAGE 6   

 304   1              if (MeasureMode==2)count++;
 305   1              if (MeasureMode==4)count++;
 306   1              if (MeasureMode==6)count++;
 307   1              second++;
 308   1              if (second==100)
 309   1              {
 310   2                      second=0;
 311   2      /*              switch(MeasureMode)
 312   2                      {
 313   2                      case 4:{MeasureMode++;}break;
 314   2                      case 0:{MeasureMode++;}break;
 315   2                      default:;
 316   2                      }*/
 317   2              }
 318   1      }
 319          //--------------------------------------------------------------------------------------------------
 320          // 函数名称: uart
 321          // 定时器0中断函数
 322          // 函数功能: 计时
 323          //--------------------------------------------------------------------------------------------------
 324          void uart (void) interrupt 4 using 0
 325          {
 326   1      uchar dsbuf;
 327   1              if(RI==1)
 328   1              {
 329   2                      RI=0;dsbuf=SBUF;
 330   2                      switch(dsbuf)
 331   2                      {
 332   3                      case 0X80:{rnum=0;}break;
 333   3                      case 0X7F:{uartflasR=1;}break;
 334   3              //      case 0Xaa:{SBUF=0x55;tlen=0;}break;
 335   3                      default:{receivebuf[rnum]=dsbuf;
 336   4                      rnum++;}
 337   3                      }
 338   2              }
 339   1              if(TI==1)
 340   1              {
 341   2                      TI=0;
 342   2                      if (tnum<tlen)
 343   2                      {SBUF=sendbuf[tnum];tnum++;
 344   3                      }
 345   2              }
 346   1      }
 347          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1147    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     32       4
   IDATA SIZE       =     27    ----
   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 + -