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

📄 mma7455l.lst

📁 GY-29-MMA7455发送资料
💻 LST
字号:
C51 COMPILER V7.06   MMA7455L                                                              06/22/2010 11:50:31 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MMA7455L
OBJECT MODULE PLACED IN mma7455l.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE mma7455l.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*************************************************************
   2             本实验演示P89LPC9221与MMA7455L的基本操作 
   3             MMS7455L在IIC端口为0的情况下,地址为0x3A;
   4             MMS7455L在IIC端口为1的情况下,地址为0x38;
   5             (BRGR1 BRGR0)= 737300/1200 – 16 =  = 0x17F0
   6             最后得BRGR1 = 0x17 BRGR1= 0xF0
   7          **************************************************************/
   8          #include <reg922.h>
   9          #include <function.h>
  10          #include <intrins.h>
  11          #include <math.h>
  12          sbit Left_Led=P0^1;
  13          sbit Right_Led=P0^2;
  14          sbit Up_Led=P0^3;
  15          sbit Down_Led=P0^4;
  16          sbit Up_Up_Led=P0^5;
  17          sbit Down_Down_Led=P0^7;
  18          unsigned char ReceiveTemp;
  19          unsigned char X_Y_Z_data[3];
  20          bit ReceiveFlag; /* 接收标志位*/
  21          unsigned char Ready;//
  22          unsigned  char   X_Y_Z_data_Temp[6];
  23          bit NeedForLight;
  24          int Number;
  25          
  26          /*********************************
  27             读三轴数据函数 
  28          *********************************/
  29          ReadData()
  30          {
  31   1          IRcvStr(0x3A,0x6,&X_Y_Z_data[0],1);//x轴 
  32   1              _Nop();
  33   1              IRcvStr(0x3A,0x7,&X_Y_Z_data[1],1);//y轴 
  34   1              _Nop();
  35   1              IRcvStr(0x3A,0x8,&X_Y_Z_data[2],1);//z轴 
  36   1      }
  37          
  38          /*********************************
  39             主函数 
  40          *********************************/
  41          void main()
  42          {
  43   1        _Nop();
  44   1        IO_Init();
  45   1        UART_Init();
  46   1        Ready = 0;
  47   1        ReceiveFlag = 0 ;
  48   1        NeedForLight=0;
  49   1        EA =1;
  50   1        MMA7455L_Init();
  51   1        InitTimer();
  52   1       
  53   1        while (1)
  54   1        { 
  55   2        /*
C51 COMPILER V7.06   MMA7455L                                                              06/22/2010 11:50:31 PAGE 2   

  56   2          if (ReceiveFlag ==1)
  57   2          {
  58   2            SBUF=ReceiveTemp; //发送数据 
  59   2            while(TI==0); //当TI为1时发送完毕 
  60   2            TI=0; //TI清0准备下一次发送 
  61   2            ReceiveFlag = 0;
  62   2          }
  63   2              */  
  64   2              if (Ready == 1)
  65   2              {        
  66   3      
  67   3                 //ISendStr(0x3A,0x17,0x03); //清中断标志 
  68   3                 //_Nop();
  69   3                 //ISendStr(0x3A,0x17,0x00);
  70   3                 
  71   3                 
  72   3                 ReadData();  
  73   3                 
  74   3                 X_Y_Z_data_Temp[0]=X_Y_Z_data[0];
  75   3                 X_Y_Z_data_Temp[1]=X_Y_Z_data[1];
  76   3                 X_Y_Z_data_Temp[2]=X_Y_Z_data[2];
  77   3                 
  78   3                
  79   3                 Ready+=1;
  80   3               }
  81   2      
  82   2               
  83   2      
  84   2               if (Ready==3)
  85   2               {
  86   3               
  87   3                 ReadData();
  88   3                 X_Y_Z_data_Temp[3]=X_Y_Z_data[0];
  89   3                 X_Y_Z_data_Temp[4]=X_Y_Z_data[1];
  90   3                 X_Y_Z_data_Temp[5]=X_Y_Z_data[2];
  91   3                 
  92   3                 Ready=0;
  93   3      
  94   3                 
  95   3                 if (
  96   3                      (abs(X_Y_Z_data_Temp[0]-X_Y_Z_data_Temp[3])>0x10)
  97   3                    ||(abs(X_Y_Z_data_Temp[1]-X_Y_Z_data_Temp[4])>0x10)
  98   3                    ||(abs(X_Y_Z_data_Temp[2]-X_Y_Z_data_Temp[5])>0x10)
  99   3                        )
 100   3      
 101   3                       { 
 102   4                         
 103   4                          Left_Led=0;
 104   4                              Number=0;
 105   4                         
 106   4      
 107   4                       }
 108   3                                                                                         
 109   3                       
 110   3                      else
 111   3                      {
 112   4                        Number++;
 113   4                        if(Number>50)
 114   4                        {
 115   5                         Left_Led=1;
 116   5                         Number=0;
 117   5                        }
C51 COMPILER V7.06   MMA7455L                                                              06/22/2010 11:50:31 PAGE 3   

 118   4                      }
 119   3      
 120   3                      }
 121   2                        
 122   2                
 123   2      
 124   2      ////////////////调试用,用户可以屏蔽///////////////////////////    
 125   2                 SendData (X_Y_Z_data[0]);//发送到上位机 
 126   2                 _Nop();
 127   2                 SendData (X_Y_Z_data[1]);
 128   2                 Nop();
 129   2                 SendData (X_Y_Z_data[2]);
 130   2      //////////////////////////////////////////////////////////////
 131   2      
 132   2              
 133   2                 
 134   2      }
 135   1      
 136   1      
 137   1      }
 138          /*********************************
 139            中断接收函数 
 140          *********************************/
 141          void Rcv_ISR() interrupt 4//当接收完一个字节RI置1进入Recieve中断 
 142          {
 143   1        ReceiveTemp=SBUF; //保存所读取的数据 
 144   1        RI=0; //RI清0以等待下次发送 
 145   1        ReceiveFlag = 1;
 146   1      }
 147          /*
 148          *********************************
 149            按键中断函数,在此用做MMA7455L的中断  
 150          **********************************
 151          void Key_Press() interrupt 7
 152          {
 153           EKBI = 0;
 154           KBCON = 0x00;
 155           Ready = 1; 
 156          }
 157          */
 158          /*********************************
 159            定时器中断函数,定时读MMA7455L  
 160          **********************************/
 161          void Timer1() interrupt 1
 162          {
 163   1        
 164   1        TH0=0X00;
 165   1        TL0=0X00;
 166   1        Ready+=1;
 167   1      
 168   1       
 169   1        
 170   1      } 
 171          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    261    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13    ----
C51 COMPILER V7.06   MMA7455L                                                              06/22/2010 11:50:31 PAGE 4   

   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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