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

📄 main.lst

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


C51 COMPILER V7.00, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(SIZE) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "reg52.h"   //晶振可以用11.0592MHZ,如果用串口的话
   2                               //提示:在调试程序的时候晶振用12MHZ
   3          #include "stdio.h"
   4          #include "string.h"
   5          #include "math.h"
   6          #include "intrins.h"
   7          //#include "bcd.h"
   8          //#include "SHTXX_iic.c"
   9          /**********************************************************************************/
  10          #define uchar unsigned char 
  11          #define BIT7  0X80                       
  12          #define BIT6  0X40                       
  13          #define BIT5  0X20                       
  14          #define BIT4  0X10                       
  15          #define BIT3  0X08                       
  16          #define BIT2  0X04                       
  17          #define BIT1  0X02                       
  18          #define BIT0  0X01                       
  19          sbit SDA=P1^6;                          // 将p1.6口模拟数据口
  20          bdata uchar canmea;
  21          float hum,tem;float ftem;
  22          uchar aaa,dhum[4],dtem[4];
  23          int  count,second;
  24          uchar MeasureMode;
  25          uchar rnum,tnum,tlen;uchar uartflasR,uartflasT;
  26          
  27          #define  NUM  20                            //  接收和发送缓存区的深度
  28          #define  NUM1  7                            //  接收和发送缓存区的深度
  29          unsigned char idata sendbuf[NUM];       // 数据发送缓冲区
  30          unsigned char idata receivebuf[NUM1];    // 数据接收缓冲区
  31          
  32          void    TxData ();
  33          void    Inituart();
  34          void    InitSHTXX();
  35          void    Inittimer0();
  36          float   CalculateHum();
  37          float   CalculateTem();
  38          void    MeasureTem();
  39          void    MeasureHum();
  40          void    measure();
  41          
  42          /*****************************************MAIN  START ******************************/
  43          void main(void)
  44          {       
  45   1              uchar okqi;
  46   1              int dat;//int i;
  47   1              uchar okmea;
  48   1      //      uchar aaa;
  49   1              Inittimer0();
  50   1              second=1;
  51   1              while(second){}//上电延时
  52   1              Inituart();
  53   1              InitSHTXX();
  54   1              if (F0==1)
  55   1                      okqi=0;//无传感器标志
C51 COMPILER V7.00  MAIN                                                                   10/10/2007 14:42:11 PAGE 2   

  56   1              else
  57   1                      okqi=1;//有传感器标志
  58   1      
  59   1              sendbuf[0]=0X80;//起始符
  60   1      //      sendbuf[1]=0X01;//本机地址
  61   1              sendbuf[1]=P1&0X0F;//本机地址
  62   1      
  63   1              //receivebuf[3]=0x00;uartflasT=1;//上电发送测试数据
  64   1              okmea=1;//测量
  65   1              MeasureMode=1;
  66   1      
  67   1      while (1)
  68   1              {
  69   2              if(uartflasR==1)//接收命令处理
  70   2              {
  71   3                      if(rnum>3) //接收数据应大于4字节,否则帔格式不对
  72   3                      if(receivebuf[0]==sendbuf[1]) //本机地址才处理
  73   3                      switch(receivebuf[3]) //命令处理
  74   3                      {
  75   4                      case 0x12:
  76   4                      case 0x13:
  77   4                      case 0x11:{okmea=1;/*P0=~P0;*/}break;//测量湿度和温度命令
  78   4                      case 0x00:{uartflasT=1;}break;//检测命令
  79   4                      default:;
  80   4                      }
  81   3                      uartflasR=0;
  82   3              }
  83   2              if(uartflasT==1)//发送命令处理
  84   2              {
  85   3              //sendbuf[0]=0X80;//起始符
  86   3              //sendbuf[1]=0X01;//本机地址
  87   3              switch(receivebuf[3])//命令处理
  88   3                      {
  89   4                      case 0x11:{//测量湿度和温度命令
  90   5                                              sendbuf[2]=0;//字节数1
  91   5                                              sendbuf[3]=11;//字节数2
  92   5                                              sendbuf[4]=0x11;//命令码
  93   5      
  94   5                                              sendbuf[5]=0x12;//湿度数据
  95   5                                              sendbuf[6]=dhum[0];
  96   5                                              sendbuf[7]=dhum[1];
  97   5                                              sendbuf[8]=dhum[2];
  98   5                                              sendbuf[9]=dhum[3];
  99   5      
 100   5                                              sendbuf[10]=0x13;//温度数据
 101   5                                              sendbuf[11]=dtem[0];
 102   5                                              sendbuf[12]=dtem[1];
 103   5                                              sendbuf[13]=dtem[2];
 104   5                                              sendbuf[14]=dtem[3];
 105   5      
 106   5                                              /*sendbuf[6]=0x07;
 107   5                                              sendbuf[7]=0x06;
 108   5                                              sendbuf[8]=0x05;
 109   5                                              sendbuf[9]=0x04;
 110   5      
 111   5                                              sendbuf[11]=0x00;
 112   5                                              sendbuf[12]=0x02;
 113   5                                              sendbuf[13]=0x09;
 114   5                                              sendbuf[14]=0x08;*/
 115   5      
 116   5                                              sendbuf[15]=sendbuf[5]^sendbuf[6]^sendbuf[7]^sendbuf[8]^sendbuf[9]
 117   5                                                                      ^sendbuf[10]^sendbuf[11]^sendbuf[12]^sendbuf[13]^sendbuf[14];
C51 COMPILER V7.00  MAIN                                                                   10/10/2007 14:42:11 PAGE 3   

 118   5      
 119   5                                              sendbuf[16]=0x7F;//停止符
 120   5                                              tlen=17;
 121   5                                        }break;
 122   4                      case 0x12:{//测量湿度命令
 123   5                                              sendbuf[2]=0;//字节数1
 124   5                                              sendbuf[3]=6;//字节数2
 125   5                                              sendbuf[4]=0x11;//命令码
 126   5      
 127   5                                              sendbuf[5]=0x12;//湿度数据
 128   5                                              sendbuf[6]=dhum[0];
 129   5                                              sendbuf[7]=dhum[1];
 130   5                                              sendbuf[8]=dhum[2];
 131   5                                              sendbuf[9]=dhum[3];
 132   5      
 133   5                                              sendbuf[10]=sendbuf[5]^sendbuf[6]^sendbuf[7]^sendbuf[8]^sendbuf[9];
 134   5      
 135   5                                              sendbuf[11]=0x7F;//停止符
 136   5                                              tlen=12;
 137   5                                        }break;
 138   4                      case 0x13:{//测量温度命令
 139   5                                              sendbuf[2]=0;//字节数1
 140   5                                              sendbuf[3]=6;//字节数2
 141   5                                              sendbuf[4]=0x11;//命令码
 142   5      
 143   5                                              sendbuf[5]=0x13;//温度数据
 144   5                                              sendbuf[6]=dtem[0];
 145   5                                              sendbuf[7]=dtem[1];
 146   5                                              sendbuf[8]=dtem[2];
 147   5                                              sendbuf[9]=dtem[3];
 148   5      
 149   5                                              sendbuf[10]=sendbuf[5]^sendbuf[6]^sendbuf[7]^sendbuf[8]^sendbuf[9];
 150   5      
 151   5                                              sendbuf[11]=0x7F;//停止符
 152   5                                              tlen=12;
 153   5                                        }break;
 154   4                      case 0x00:{//检测命令
 155   5                                              sendbuf[2]=0;//字节数1
 156   5                                              sendbuf[3]=1;//字节数2
 157   5                                              sendbuf[4]=0x00;//命令码
 158   5      
 159   5                                              sendbuf[5]=okqi;//传感器标志
 160   5      
 161   5                                              sendbuf[6]=0x7F;//停止符
 162   5                                              tlen=7;
 163   5                                        }break;
 164   4                      default:;
 165   4                      }
 166   3              uartflasT=0;
 167   3              tnum=0;
 168   3              SBUF=sendbuf[tnum];tnum++;
 169   3              }
 170   2      
 171   2      
 172   2      if(okmea==1)
 173   2      if(okqi==0)
 174   2      {
 175   3              receivebuf[3]=0x00;uartflasT=1;okmea=0;
 176   3      }
 177   2      else
 178   2                      switch(MeasureMode)

⌨️ 快捷键说明

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