📄 main.lst
字号:
C51 COMPILER V8.15 MAIN 10/29/2008 21:06:48 PAGE 1
C51 COMPILER V8.15, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c COMPACT BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <intrins.h>
3 #include <math.h>
4 #include "TypeDefines.h"
5 #include "1335c51.h"
6 #include "delay.h"
7 #include "ADS8364.h"
8 #include "Iap.h"
9 #include "STEP_MOTOR.h"
10 #include "Menu.h"
11 #include "ziku.h"
12
13
14 #define EEPROM_H 0x80
15 #define EEPROM_L 0x00
16
17 #define X1 0 //定义P1点坐标(单位:0.01mm)
18 #define Y1 (-180)
19 #define X2 0
20 #define Y2 180
21 #define X3 (-180)
22 #define Y3 0
23 #define X4 180
24 #define Y4 0
25 #define X5 (-245)
26 #define Y5 114
27 #define X6 (-245)
28 #define Y6 767
29 #define X7 230
30 #define Y7 135
31 #define X8 230
32 #define Y8 788
33 #define TT_AD 1 //定义TT面上4根传感器为1(用于调用READ_ADS8364()时作参数传递用。
34 #define POLE_AD 2 //定义导杆上4根传感器为2(用于调用READ_ADS8364()时作参数传递用。
35 #define CHECK_TIMES 5 //定义采样次数
36
37 #define UP 0 //马达运转方向
38 #define DOWN 1
39
40 char ALLOW_UP=5; //允许误差
41 char ALLOW_LOW=-5;
42
43 int data Data1[4]; //TT面上的4个点高度
44 int data Data2[4]; //导杆上的4个点高度
45 uint idata origin1[4]; //TT面上4个点的原点
46 uint idata origin2[4]; //导杆上4个点的原点
47 uint data para1[4]={7000,7000,7000,7000}; //TT面上4个点的计算参数
48 uint data para2[4]={7000,7000,7000,7000}; //TT面上4个点的计算参数
49 uint idata step_run0; //马达0运转的步数
50 uint idata step_run1; //马达1运转的步数
51 uint idata step_run2; //马达2运转的步数
52 uint idata step_run3; //马达3运转的步数
53 int idata h5; //P5点应该调整到的位移(目标值)
54 int idata h6; //P6点应该调整到的位移(目标值)
55 int idata h7; //P7点应该调整到的位移(目标值)
C51 COMPILER V8.15 MAIN 10/29/2008 21:06:48 PAGE 2
56 int idata h8; //P8点应该调整到的位移(目标值)
57 int idata hight_limit; //高度限制值
58 int idata sensitive_limit; //精度限制值
59 int idata delay_value; //延时值(ms)
60
61
62 extern uchar idata KeyFuncIndex;
63
64 void systeminit();
65 void zero();
66 void check();
67 void calculate();
68 void NormalDisp();
69 void disp_4point(uchar flag);
70 void disp_target();
71 uchar keyscan();
72 void adjustset();
73 void parasave();
74 void pararead();
75
76 main()
77 {
78 1 delay_xms(200);
79 1 systeminit();
80 1 NormalDisp();
81 1 while(1)
82 1 {
83 2 delay_xms(200);
84 2 ADS8364_read(TT_AD,CHECK_TIMES);
85 2 ADS8364_read(POLE_AD,CHECK_TIMES);
86 2 disp_4point(TT_AD);
87 2 disp_4point(POLE_AD);
88 2 adjustset();
89 2 /*
90 2 if(keyscan()==KEY_START)
91 2 {
92 2 check();
93 2 }
94 2 */
95 2 if(keyscan()==KEY_ADJUST)
96 2 {
97 3 zero();
98 3 }
99 2 /*
100 2 do
101 2 {
102 2 GetKeyInput();
103 2 delay_xms(200);
104 2 }while(KeyFuncIndex!=0); */
105 2 }
106 1 }
107
108 uchar keyscan()
109 {
110 1 if((STOP==0)&&(KEY_2==1)&&(START==1))
111 1 {
112 2 delay_xms(30);
113 2 if((STOP==0)&&(KEY_2==1)&&(START==1))
114 2 {
115 3 return KEY_STOP;
116 3 }
117 2 }
C51 COMPILER V8.15 MAIN 10/29/2008 21:06:48 PAGE 3
118 1 else if((START==0)&&(KEY_2==1)&&(STOP==1))
119 1 {
120 2 delay_xms(30);
121 2 if((START==0)&&(KEY_2==1)&&(STOP==1))
122 2 {
123 3 return KEY_START;
124 3 }
125 2 }
126 1
127 1 else if((KEY_2==0)&&(STOP==0)&&(START==0))
128 1 {
129 2 delay_xms(30);
130 2 if((KEY_2==0)&&(STOP==0)&&(START==0))
131 2 {
132 3 return KEY_ADJUST;
133 3 }
134 2 }
135 1 }
136
137 void systeminit() //系统初始化
138 {
139 1 LcmInition();
140 1 time_init();
141 1 step_motor_init();
142 1 pararead();
143 1 // zero();
144 1 }
145 void zero() //较零
146 {
147 1 int tmp16[8];
148 1 delay_xms(300);
149 1 origin1[0]=0;
150 1 origin1[1]=0;
151 1 origin1[2]=0;
152 1 origin1[3]=0;
153 1 origin2[0]=0;
154 1 origin2[1]=0;
155 1 origin2[2]=0;
156 1 origin2[3]=0;
157 1 while(1)
158 1 {
159 2
160 2 ADS8364_read(TT_AD,CHECK_TIMES);
161 2 ADS8364_read(POLE_AD,CHECK_TIMES);
162 2 tmp16[0]=Data1[0];
163 2 tmp16[1]=Data1[1];
164 2 tmp16[2]=Data1[2];
165 2 tmp16[3]=Data1[3];
166 2 tmp16[4]=Data2[0];
167 2 tmp16[5]=Data2[1];
168 2 tmp16[6]=Data2[2];
169 2 tmp16[7]=Data2[3];
170 2 delay_xms(50);
171 2 ADS8364_read(TT_AD,CHECK_TIMES);
172 2 ADS8364_read(POLE_AD,CHECK_TIMES);
173 2 /*
174 2 if((tmp16[0]-Data1[0])>ALLOW_LOW && (tmp16[0]-Data1[0])<ALLOW_UP &&
175 2 (tmp16[1]-Data1[1])>ALLOW_LOW && (tmp16[1]-Data1[1])<ALLOW_UP &&
176 2 (tmp16[2]-Data1[2])>ALLOW_LOW && (tmp16[2]-Data1[2])<ALLOW_UP &&
177 2 (tmp16[3]-Data1[3])>ALLOW_LOW && (tmp16[3]-Data1[3])<ALLOW_UP &&
178 2 (tmp16[4]-Data2[0])>ALLOW_LOW && (tmp16[4]-Data2[0])<ALLOW_UP &&
179 2 (tmp16[5]-Data2[1])>ALLOW_LOW && (tmp16[5]-Data2[1])<ALLOW_UP &&
C51 COMPILER V8.15 MAIN 10/29/2008 21:06:48 PAGE 4
180 2 (tmp16[6]-Data2[2])>ALLOW_LOW && (tmp16[6]-Data2[2])<ALLOW_UP &&
181 2 (tmp16[7]-Data2[3])>ALLOW_LOW && (tmp16[7]-Data2[3])<ALLOW_UP)
182 2 { */
183 2 origin1[0]=Data1[0];
184 2 origin1[1]=Data1[1];
185 2 origin1[2]=Data1[2];
186 2 origin1[3]=Data1[3];
187 2 origin2[0]=Data2[0];
188 2 origin2[1]=Data2[1];
189 2 origin2[2]=Data2[2];
190 2 origin2[3]=Data2[3];
191 2 break;
192 2 // }
193 2 }
194 1 ADS8364_read(TT_AD,CHECK_TIMES);
195 1 ADS8364_read(POLE_AD,CHECK_TIMES);
196 1 disp_4point(TT_AD);
197 1 disp_4point(POLE_AD);
198 1 }
199
200 void calculate() //计算调整目标值
201 {
202 1 int h51,h52,h61,h62,h71,h72,h81,h82;
203 1 ADS8364_read(TT_AD, CHECK_TIMES);
204 1 h51=(Y5-Y1)/(Y2-Y1)*(Data1[1]-Data1[0])+Data1[0];
205 1 h52=Data1[2]-(X3-X5)/(X4-X3)*(Data1[3]-Data1[2]);
206 1 h5=h51+h52;
207 1 h61=(Y6-Y1)/(Y2-Y1)*(Data1[1]-Data1[0])+Data1[0];
208 1 h62=Data1[2]-(X3-X6)/(X4-X3)*(Data1[3]-Data1[2]);
209 1 h6=h61+h62;
210 1 h71=(Y7-Y1)/(Y2-Y1)*(Data1[1]-Data1[0])+Data1[0];
211 1 h72=Data1[3]+(X7-X4)/(X4-X3)*(Data1[3]-Data1[2]);
212 1 h7=h71+h72;
213 1 h81=(Y8-Y1)/(Y2-Y1)*(Data1[1]-Data1[0])+Data1[0];
214 1 h82=Data1[3]+(X8-X4)/(X4-X3)*(Data1[3]-Data1[2]);
215 1 h8=h81+h82;
216 1 disp_target();
217 1 }
218
219
220 void check()
221 {
222 1 calculate();
223 1 TR1=1;
224 1 while(1)
225 1 {
226 2 if(keyscan()==KEY_STOP)
227 2 {
228 3 TR1=0;
229 3 EN=1;
230 3 break;
231 3 }
232 2
233 2 TR1=1;
234 2 EN=0;
235 2 ADS8364_read(POLE_AD,CHECK_TIMES);
236 2 disp_4point(POLE_AD);
237 2 if(Data2[0]-h5>ALLOW_UP)
238 2 {
239 3 CR0=DOWN;
240 3 step_run0=abs(Data2[0]-h5);
241 3 }
C51 COMPILER V8.15 MAIN 10/29/2008 21:06:48 PAGE 5
242 2 else if(Data2[0]-h5<ALLOW_LOW)
243 2 {
244 3 CR0=UP;
245 3 step_run0=abs(Data2[0]-h5);
246 3 }
247 2 else
248 2 {
249 3 step_run0=0;
250 3 }
251 2 if(Data2[1]-h6>ALLOW_UP)
252 2 {
253 3 CR1=DOWN;
254 3 step_run1=abs(Data2[1]-h6);
255 3 }
256 2 else if(Data2[1]-h6<ALLOW_LOW)
257 2 {
258 3 CR1=UP;
259 3 step_run1=abs(Data2[1]-h6);
260 3 }
261 2 else
262 2 {
263 3 step_run1=0;
264 3 }
265 2 if(Data2[2]-h7>ALLOW_UP)
266 2 {
267 3 CR2=DOWN;
268 3 step_run2=abs(Data2[2]-h7);
269 3 }
270 2 else if(Data2[2]-h7<ALLOW_LOW)
271 2 {
272 3 CR2=UP;
273 3 step_run2=abs(Data2[2]-h7);
274 3 }
275 2 else
276 2 {
277 3 step_run2=0;
278 3 }
279 2 if(Data2[3]-h8>ALLOW_UP)
280 2 {
281 3 CR3=DOWN;
282 3 step_run3=abs(Data2[3]-h8);
283 3 }
284 2 else if(Data2[3]-h8<ALLOW_LOW)
285 2 {
286 3 CR3=UP;
287 3 step_run3=abs(Data2[3]-h8);
288 3 }
289 2 else
290 2 {
291 3 step_run3=0;
292 3 }
293 2 if((Data2[0]-h5)>ALLOW_LOW && (Data2[0]-h5<ALLOW_UP) &&
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -