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

📄 smd380.lst

📁 博世的3轴加速度传感器SMB380
💻 LST
字号:
C51 COMPILER V7.50   SMD380                                                                03/07/2008 18:42:59 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SMD380
OBJECT MODULE PLACED IN smd380.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE smd380.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2                                                            
   3          
   4          #include <REG51F.H>
   5          #include <intrins.h>
   6          #include <math.h>  
   7          
   8          
   9                                                                          
  10          typedef    unsigned char Byte;                     
  11          typedef    bit  bool;
  12          typedef    signed int  sint;
  13          typedef    unsigned  int Word;
  14          typedef    unsigned  int uint;
  15          typedef    signed long slong;
  16          
  17          
  18          
  19          #define uchar   unsigned char   
  20          #define uint    unsigned int
  21          
  22          #define Nop_() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  23          
  24          
  25          
  26          
  27          
  28          
  29          
  30          
  31          //SMD380
  32          
  33          sbit    CSB_380 =       P2^5;
  34          sbit    SCK_380 =       P0^4;
  35          sbit    SDO_380 =       P3^0;
  36          sbit    SDI_380 =       P3^1;
  37          
  38          
  39          
  40          
  41          
  42          typedef union 
  43          { unsigned int i;
  44            float f;
  45          } value;
  46          
  47          
  48          //----------------------------------------------------------------------------------
  49          // modul-var
  50          //----------------------------------------------------------------------------------
  51          enum {TEMP,HUMI};
  52          
  53          value humi_val,temp_val;
  54          value humi_val_buf,temp_val_buf;
  55          
C51 COMPILER V7.50   SMD380                                                                03/07/2008 18:42:59 PAGE 2   

  56          
  57          const float code pi=3.1415926;
  58          float dew_point;
  59          
  60                                                                                  
  61          #define noACK 0
  62          #define ACK   1
  63                                      //adr  command  r/w
  64          #define STATUS_REG_W 0x06   //000   0011    0
  65          #define STATUS_REG_R 0x07   //000   0011    1
  66          #define MEASURE_TEMP 0x03   //000   0001    1
  67          #define MEASURE_HUMI 0x05   //000   0010    1
  68          #define RESET        0x1e   //000   1111    0
  69          
  70          
  71          
  72          idata float angle;
  73          
  74          idata unsigned int heading,heading_buff;
  75          idata unsigned int OffsetAngle;
  76          idata unsigned int OffsetAngleBuf;
  77          idata unsigned char ModuleStatus=0;
  78          idata unsigned char cnt1=0,cnt2;
  79          idata unsigned char     CharTmp1;
  80          
  81          idata   unsigned        char    smd380_add,smd380_data,smd380_buff[18];
  82          
  83          
  84          
  85                                            
  86          
  87          void  Delay10us(Word  n); 
  88          
  89          
  90          
  91          
  92          
  93          
  94          
  95                  
  96          /*-----------------------延时-----------------------*/
  97          
  98          void Delay10us(Word n) //delay n 10us
  99          {
 100   1      Word t,cnt;
 101   1              for(t=0;t<n;t++)
 102   1                      for(cnt=0;cnt<5;cnt++);
 103   1      }
 104          
 105          
 106          
 107          void read_smd380(void)
 108          {
 109   1              idata   unsigned        char i,j,z;
 110   1              z=smd380_data;
 111   1              //smd380_add+=1;
 112   1              //smd380_add=0x9a;
 113   1              j=smd380_add|0x80;         
 114   1              CSB_380=1;  
 115   1              SCK_380=1;
 116   1              SDI_380=1;
 117   1              SDO_380=1;
C51 COMPILER V7.50   SMD380                                                                03/07/2008 18:42:59 PAGE 3   

 118   1              Delay10us(2);
 119   1              CSB_380=0; 
 120   1              Delay10us(2);
 121   1      
 122   1              SCK_380=0;
 123   1              for(i=0;i<8;i++)
 124   1              {        
 125   2                      SCK_380=0;      
 126   2                      z=0;
 127   2                      if(j&0x80) SDI_380 = 1;
 128   2                      else SDI_380 = 0;        
 129   2                                      
 130   2                      z=0;
 131   2                      z=0;
 132   2                      SCK_380=1;       
 133   2                      j       <<=1;
 134   2                      z=0;
 135   2      
 136   2              }
 137   1              j=0;
 138   1              for(i=0;i<8;i++)
 139   1              {               
 140   2                      SCK_380=0;       
 141   2                              
 142   2                      if(SDO_380==1) j |= 0x01;
 143   2                      else j |= 0x00;  
 144   2                      SCK_380=1;
 145   2                      j       <<=1; 
 146   2                      
 147   2              }                       
 148   1              SCK_380=1;              
 149   1              CSB_380=1;  
 150   1              smd380_data=j;
 151   1      
 152   1      
 153   1      
 154   1                      
 155   1      }
 156          
 157          
 158          
 159          
 160          main()
 161          {                
 162   1                      uchar i;
 163   1                  uchar disp_buff[6];         /* 定义显示缓冲区                       */
 164   1                      uint    z;
 165   1                      bit     acce_bit;
 166   1                      float   angle_x,x_value;
 167   1      
 168   1                              
 169   1                      P2M1=0X00;
 170   1                      P2M2=0X00;
 171   1                      P1M1=0X2C;
 172   1                      P1M2=0X2C;
 173   1                      P0M1=0X00;
 174   1                      P0M2=0X00; 
 175   1                      P3M1=0X00;
 176   1                      P3M2=0X00;
 177   1               
 178   1                      disp_buff[0]=0x70;
 179   1                      disp_buff[1]=0xD8;
C51 COMPILER V7.50   SMD380                                                                03/07/2008 18:42:59 PAGE 4   

 180   1                      disp_buff[2]=0x80;
 181   1                      disp_buff[3]=0xE0;
 182   1                      disp_buff[4]=0xF8;      
 183   1                      disp_buff[5]=0xF0;       
 184   1                      disp_buff[5]=0xF0;
 185   1                      PT0AD=0X00;
 186   1                      TRIM=0;
 187   1      
 188   1      
 189   1      
 190   1                      while(1)
 191   1                      {                        
 192   2                              
 193   2                              //X:smd380_buff[3];Y:smd380_buff[5];Z:smd380_buff[7];
 194   2      
 195   2      
 196   2                              for(i=0;i<16;i++)
 197   2                              {                                
 198   3                                      smd380_add=i;
 199   3                                      read_smd380();
 200   3                                      smd380_buff[i]=smd380_data;
 201   3      
 202   3                              }
 203   2                              
 204   2                                                       
 205   2                              acce_bit=1;  // acce_bit=1角度为正,acce_bit=0角度为负
 206   2                         if(smd380_buff[3]>0x7f)
 207   2                         {                    
 208   3                                       smd380_buff[3]=0x100-smd380_buff[3];
 209   3                                       acce_bit=0;
 210   3                         }
 211   2                              x_value=smd380_buff[3]*8;
 212   2                              x_value=x_value/1024.000;
 213   2                              angle_x=asin(x_value)*180.0/pi; //angle_x为角度值,acce_bit=1角度为正,acce_bit=0角度为负
 214   2      
 215   2      
 216   2                              for(z=0;z<2;z++)
 217   2                              {                                 
 218   3                                      Delay10us(2);  
 219   3                              }                
 220   2      
 221   2                              smd380_data=0;
 222   2                              i=0;
 223   2               }
 224   1      
 225   1      
 226   1      
 227   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    346    ----
   CONSTANT SIZE    =      4    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20      15
   IDATA SIZE       =     36       3
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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