📄 mma7455l.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 + -