/
Main.LST
134 lines (124 loc) · 6.13 KB
/
Main.LST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
C51 COMPILER V9.00 MAIN 06/18/2014 15:35:05 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE Main.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <MM_Accelerator.h>
2 #include <MM_Bluetooth.h>
3 #include <MM_Model.h>
4 #include <reg52.h>
5 #include <math.h>
6
7 #define DATABASE_SIZE 70
8
9 unsigned int idata OPTION;
10 float idata A[3][3]; //转换矩阵
11 VECTOR DATABASE[DATABASE_SIZE]; //实时数据
12 STAT_SET idata SET[3]; //3轴数据的统计信息
13 int ZArray[DATABASE_SIZE]; //Z轴数据
14 int idata STATUS_PRE=-1, STATUS_NOW=-1,STATUS_HISTORY[3]={0}; //MotionDetection's
15 int temp=0, result=0, prestatus=0;//pedometer's
16
17 /*********主函数**********/
18 void main (void)
19 {
20 1 delay(100); //上电延时
21 1 Init_ADXL345(); //初始化ADXL345
22 1 Init_UART(); //初始化串口通信
23 1 SpaceCreate(A); //坐标系建立
24 1 delay(200);
25 1 OPTION=9;
26 1 while( 1 ) //循环
27 1 {
28 2
29 2 switch(OPTION)
30 2 {
31 3 case 1:
32 3 STATUS_PRE=-1;
33 3 STATUS_NOW=-1;
34 3 STATUS_HISTORY[0]=0;
35 3 STATUS_HISTORY[1]=0;
36 3 STATUS_HISTORY[2]=0;
37 3 OPTION=2;
38 3 case 2:
39 3 UpdateDatabase( DATABASE, A );
40 3 AnalyzeDatabase( DATABASE, SET, ZArray);
41 3 STATUS_HISTORY[0]=STATUS_HISTORY[1];
42 3 STATUS_HISTORY[1]=STATUS_HISTORY[2];
43 3 if ( isStill(SET) )
44 3 {
45 4 STATUS_HISTORY[2]=StillStatus(SET);
46 4 }
47 3 else
48 3 {
49 4 STATUS_HISTORY[2]=MovingStatus(ZArray);
50 4 }
51 3 if(STATUS_HISTORY[0]==STATUS_HISTORY[1]&&STATUS_HISTORY[2]==STATUS_HISTORY[1])
52 3 STATUS_NOW=STATUS_HISTORY[2];
53 3 else
54 3 STATUS_NOW=STATUS_PRE;
55 3 Send2PhoneMotion(STATUS_NOW, STATUS_PRE);
C51 COMPILER V9.00 MAIN 06/18/2014 15:35:05 PAGE 2
56 3 STATUS_PRE=STATUS_NOW;
57 3 break;
58 3 case 3:
59 3 temp=0;
60 3 result=0;
61 3 prestatus=0;
62 3 OPTION=4;
63 3 case 4:
64 3 UpdateDatabase( DATABASE, A );
65 3 AnalyzeDatabase( DATABASE, SET, ZArray);
66 3 if ( isStill(SET) )
67 3 {
68 4 break;
69 4 }
70 3 result=Count( ZArray );
71 3 if( prestatus==0 )
72 3 prestatus=result/10;
73 3 else if( prestatus!=result/10 )
74 3 {
75 4 temp=prestatus;
76 4 prestatus=result/10;
77 4 result=temp*10+result%10;
78 4 }
79 3 Send2PhoneSteps(result);
80 3 break;
81 3 case 9:
82 3 break;
83 3 }
84 2 }
85 1
86 1
87 1 }
88
89 /****串口中断程序****/
90 void UART_SER (void) interrupt 4 using 0//串行中断服务程序
91 {
92 1 if(RI==1)
93 1 {
94 2 RI=0;
95 2 OPTION=SBUF;
96 2 if( OPTION=='1' )
97 2 OPTION=1;
98 2 else if (OPTION=='3')
99 2 OPTION=3;
100 2 else if (OPTION=='9')
101 2 OPTION=9;
102 2 }
103 1 else
104 1 TI=0;
105 1 }
106
107
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 639 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 566 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 72 ----
BIT SIZE = ---- ----
C51 COMPILER V9.00 MAIN 06/18/2014 15:35:05 PAGE 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)