📄 mocontrol.lst
字号:
194 4 cTime = 2;
195 4 break;
196 4
197 4 default:
198 4 break;
199 4 }
200 3 default:
201 3 break;
202 3 }
203 2 DogReset();
204 2 }
205 1 }
206 /**************************************************************************
207 * 函数原型: void SpeedControl(bit Drt, uint TurnNum);
208 * 功 能: 处理速度变化(ctemp采用范围控制,Pre_Pulse 脉冲采用精确控制)
209 **************************************************************************/
210 void SpeedControl(bit Drt){
211 1 uchar i;
212 1 if(b_Power){
213 2 if(Drt){
214 3 P1&=0xf8;
215 3 P1|=StepTab1[i++];
216 3 delay_1us(10);
217 3 P1&=0xf8;
218 3 }
219 2 else{
220 3 P1&=0xf8;
221 3 P1|=StepTabRev1[i++];
222 3 delay_1us(10);
223 3 P1&=0xf8;
224 3 }
225 2 if(i>2){
226 3 i=0;
227 3 if(++SetNum >= vSetNum){
228 4 // b_Power = STOP;
229 4 }
230 3 }
231 2 }
232 1 }
233
234 /**************************************************************************
235 * 函数原型: void SpeedControl(bit Drt, uint TurnNum);
236 * 功 能: 处理速度变化(ctemp采用范围控制,Pre_Pulse 脉冲采用精确控制)
237 **************************************************************************/
238 /*
239 void SpeedControl(bit Drt){
240 uchar i;
241 if(b_Power){
C51 COMPILER V7.10 MOCONTROL 12/17/2007 11:35:15 PAGE 5
242 if(Drt){
243 P1&=0xf8;
244 P1|=StepTab1[i++];
245 }
246 else{
247 P1&=0xf8;
248 P1|=StepTabRev1[i++];
249 }
250 if(i>5){
251 i=0;
252 if(++SetNum >= vSetNum){
253 // b_Power = STOP;
254 }
255 }
256 }
257 }
258
259 /**************************************************************************
260 * 函数原型: void Para_initial(void);
261 * 功 能: 参数初始化
262 **************************************************************************/
263 void Para_initial(void){
264 1
265 1 b_Power = STOP;
266 1 SpeedType = WaitSpeed;
267 1 cDY_Clock = 0xff;
268 1 KeyNum=0;
269 1
270 1 cT01ms = vT01ms;
271 1 cT10ms = vT10ms;
272 1 cT100ms = vT100ms;
273 1 cT01s = vT01S;
274 1
275 1 Time_01ms = 0;
276 1
277 1
278 1 }
279
280
281 /**************************************************************************
282 * 函数原型: void system_initial(void);
283 * 功 能: 系统初始化
284 **************************************************************************/
285 void system_initial(void){
286 1
287 1 IE=0;
288 1
289 1 DogReset(); // 已针对 STC89C58RD+ 作修改.06-04-06
290 1 Para_initial();
291 1
292 1 TCON =0x50; // TR0=1
293 1 SCON =0x50;
294 1 TMOD =0x21; // T0:Time 16bit; T1:8位自动重装载.
295 1
296 1 TH0 =vT0HVal; // T0:系统计时.
297 1 TL0 =vT0LVal;
298 1 ET0 =1;
299 1 TR0 =1; // 启动波特率发生器
300 1
301 1
302 1 TH1 = vBaudTime; // 波特率目前为9600Hz
303 1 PCON&=0x7f; // 串口通信速率倍数为1
C51 COMPILER V7.10 MOCONTROL 12/17/2007 11:35:15 PAGE 6
304 1
305 1 ET1 =1;
306 1 TR1 =0; // 启动波特率发生器
307 1 ES =1; // 允许串口中断
308 1
309 1 IP =0x02; // T0 优先级高
310 1 IPH =0x12; //PT2H=1,PT0H=1
311 1
312 1 EA =1;
313 1
314 1
315 1 }
316
317 /**************************************************************************
318 * 函数原型: void main(void);
319 * 功 能: 主程序
320 **************************************************************************/
321 void main(void){
322 1
323 1 system_initial();
324 1
325 1 while(1){
326 2
327 2 DogReset();
328 2
329 2 ButtonHandle();
330 2
331 2 // if(b_Power){
332 2 // SpeedControl(Forward);
333 2 // }
334 2
335 2 }
336 1 }
337
338 /**************************************************************************
339 * 函数原型: void T0_INT(void) interrupt 1 using 1;
340 * 功 能: 全局定时
341 **************************************************************************/
342 void T0_INT(void) interrupt 1 using 0{
343 1
344 1 TH0 = vT0HVal; // 时基0.1ms
345 1 TL0 = vT0LVal;
346 1
347 1 /*
348 1 if(Time_01ms++>12){
349 1 Time_01ms=0;
350 1 }
351 1 */
352 1
353 1 if(!(--cT01ms)){ //1ms
354 2 cT01ms=vT01ms;
355 2
356 2
357 2 if(!(--cT10ms)){ //10ms
358 3 cT10ms=vT10ms;
359 3
360 3 SpeedControl(Forward);
361 3
362 3 if(!(--cT100ms)){ //100ms
363 4
364 4 cT100ms=vT100ms;
365 4
C51 COMPILER V7.10 MOCONTROL 12/17/2007 11:35:15 PAGE 7
366 4 if(!(--cT01s)){ //1s
367 5 cT01s=vT01S;
368 5
369 5 }
370 4 }
371 3 }
372 2 }
373 1 }
374
375 /**************************************************************************
376 * END
377 * END
378 **************************************************************************/
379
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 396 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 1
IDATA SIZE = 57 ----
BIT SIZE = 2 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -