📄 stepmotor.lst
字号:
248 void main(void)
249 {
250 1 P0M1=0xFF;
251 1 P0M2=0x00; //P0口做寻迹传感器接口,仅为输入
252 1 P1M1=0x0c;
253 1 P1M2=0xf3; //P1.0、P1.1(2个继电器吸合控制口,对应电机PWM输出口分别为OCA和OCD)设为推挽输出
254 1 P2M1=0x89;
255 1 P2M2=0x76; //P2.3(READKEY)、P2.0(CAPTURE_b)和P2.7(CAPTURE_a)仅输入,其它推挽输出。
256 1 IP0H=IP0H&0xFD;
257 1 IP0=IP0&0xFD; //将定时器0中断优先级降最低
258 1 init();
259 1 InitCCU();
260 1 rEEPROM();
261 1 SPI_ini();
262 1 TIME_ini();
263 1 IP_ini();
264 1 TCR20=0x86;
265 1 while(1)
266 1 {
267 2 power_A=0;
268 2 stop_B();
269 2 //while((wait==1)&&(wait_down==1)&&(A_up==1)&&(A_down==1)&&(B_up==1)&&(B_down==1));
270 2 //while((wait==1)&&(wait_down==1));//等待按键
271 2 //while(wait_down==1);
272 2
273 2 /* if(A_up==0)
274 2 {
275 2 direct_A=1;//正转主轴上升
276 2 power_A=1;
277 2 while(A_up==0);
278 2 power_A=0;
279 2 }
280 2 else if(A_down==0)
281 2 {
282 2 direct_A=0;//正转主轴上升
283 2 power_A=1;
284 2 while(A_down==0);
285 2 power_A=0;
286 2 }
287 2 else if(B_up==0)
288 2 {
289 2 direct_B=1;//前脚前移,电机正转
290 2 start_B();
291 2 while(B_up==0);
292 2 direct_B=0;
293 2 Delays(15);
294 2 stop_B();
295 2 }
296 2 else if(B_down==0)
297 2 {
298 2 direct_B=0;//后脚前移,电机反转
299 2 start_B();
300 2 while(B_down==0);
301 2 direct_B=1;
C51 COMPILER V7.09 STEPMOTOR 04/29/2007 19:22:53 PAGE 6
302 2 Delays(15);
303 2 stop_B();
304 2 } */
305 2
306 2 if(A_up==0)
307 2 {
308 3 direct_A=1;//正转主轴上升
309 3 power_A=1;
310 3 while((A_up==0)&&(sw6==1));
311 3 power_A=0;
312 3 //Delays(400);
313 3 while(A_up==0)
314 3 {
315 4 if(A_down==0)
316 4 power_A=1;
317 4 while((A_up==0)&&(A_down==0)&&(sw5==1));
318 4 power_A=0;
319 4 //Delays(400);
320 4 break;
321 4 }
322 3 }
323 2 else if(A_down==0)
324 2 {
325 3 direct_A=0;//正转主轴上升
326 3 power_A=1;
327 3 while((A_down==0)&&(sw7==1));
328 3 power_A=0;
329 3 //Delays(400);
330 3 }
331 2 else if(B_up==0)
332 2 {
333 3 direct_B=1;//前脚前移,电机正转
334 3 start_B();
335 3 while((B_up==0)&&(sw1==1)&&(sw4==1));
336 3 stop_B();
337 3 //Delays(20);
338 3 direct_B=0;
339 3 //Delays(200);
340 3 }
341 2 else if(B_down==0)
342 2 {
343 3 direct_B=0;//后脚前移,电机反转
344 3 start_B();
345 3 // while((B_down==0)&&(sw2==1)&&(sw3==1));
346 3 while((B_down==0)&&(sw3==1));
347 3 stop_B();
348 3 // Delays(20);
349 3 direct_B=1;
350 3 // Delays(200);
351 3 }
352 2 else if(wait==0)
353 2 {
354 3 /************************************************/
355 3 //启动上楼
356 3 direct_A=1;//正转主轴上升
357 3 power_A=1;
358 3 Delays(3000);
359 3 power_A=0;
360 3
361 3 while(wait==1);//等待按键
362 3
363 3 direct_B=1;//前脚前移,电机正转
C51 COMPILER V7.09 STEPMOTOR 04/29/2007 19:22:53 PAGE 7
364 3 start_B();
365 3 while(sw1==1);
366 3 stop_B();
367 3 Delays(20);
368 3 direct_B=0;
369 3 //power_B=0;
370 3
371 3 direct_A=0;//反转下降
372 3 power_A=1;
373 3 while(sw7==1);
374 3 power_A=0;
375 3
376 3 direct_B=0;//后脚前移,电机反转
377 3 start_B();
378 3 while(sw2==1);
379 3 stop_B();
380 3 Delays(20);
381 3 direct_B=1;
382 3 //启动结束
383 3 /*
384 3 flag_over=1;
385 3
386 3 while(flag_over)
387 3 {
388 3 direct_A=1;//正转主轴上升
389 3 power_A=1;
390 3 while(sw6==1);
391 3 power_A=0;
392 3
393 3 direct_B=1;//前脚前移,电机正转
394 3 start_B();
395 3 while((sw1==1)&&(sw4==1));
396 3 if(sw4==0)
397 3 flag_over=0;
398 3 direct_B=0;
399 3 Delays(15);
400 3 stop_B();
401 3 if(flag_over==0)
402 3 break;
403 3
404 3 direct_A=0;//反转下降
405 3 power_A=1;
406 3 while(sw7==1);
407 3 power_A=0;
408 3
409 3 direct_B=0;//后脚前移,电机反转
410 3 start_B();
411 3 while(sw2==1);
412 3 direct_B=1;
413 3 Delays(15);
414 3 stop_B();
415 3 }
416 3 */
417 3 flag_over=CS[0]-1;
418 3
419 3 while(flag_over)
420 3 {
421 4 direct_A=1;//正转主轴上升
422 4 power_A=1;
423 4 while(sw6==1);
424 4 power_A=0;
425 4
C51 COMPILER V7.09 STEPMOTOR 04/29/2007 19:22:53 PAGE 8
426 4 direct_B=1;//前脚前移,电机正转
427 4 start_B();
428 4 while(sw1==1);
429 4 stop_B();
430 4 Delays(20);
431 4 direct_B=0;
432 4
433 4 direct_A=0;//反转下降
434 4 power_A=1;
435 4 while(sw7==1);
436 4 power_A=0;
437 4
438 4 direct_B=0;//后脚前移,电机反转
439 4 start_B();
440 4 while(sw2==1);
441 4 stop_B();
442 4 Delays(20);
443 4 direct_B=1;
444 4
445 4 flag_over--;
446 4 row++;
447 4 }
448 3 direct_A=1;//正转主轴上升
449 3 power_A=1;
450 3 while(sw5==1);
451 3 power_A=0;
452 3
453 3 while(wait==1);//等待按键
454 3
455 3 direct_B=1;//前脚前移,电机正转
456 3 start_B();
457 3 while(sw4==1);
458 3 stop_B();
459 3 Delays(20);
460 3 direct_B=0;
461 3
462 3 direct_A=0;//反转下降
463 3 power_A=1;
464 3 while(sw7==1);
465 3 power_A=0;
466 3
467 3 direct_B=0;//后脚前移,电机反转
468 3 start_B();
469 3 while(sw3==1);
470 3 stop_B();
471 3 Delays(20);
472 3 direct_B=1;
473 3 }
474 2 else if(wait_down==0)
475 2 {
476 3 direct_B=1;//前脚前移,电机正转
477 3 start_B();
478 3 while(sw4==1);
479 3 stop_B();
480 3 Delays(20);
481 3 direct_B=0;
482 3
483 3 direct_A=1;//正转主轴上升
484 3 power_A=1;
485 3 while(sw5==1);
486 3 power_A=0;
487 3
C51 COMPILER V7.09 STEPMOTOR 04/29/2007 19:22:53 PAGE 9
488 3 // while(wait_down==1);//等待按键
489 3 /*
490 3 direct_A=0;//反转下降
491 3 power_A=1;
492 3 while(sw6==0);
493 3 power_A=0;
494 3 */
495 3 direct_B=0;//后脚前移,电机反转
496 3 start_B();
497 3 while(sw3==1);
498 3 stop_B();
499 3 Delays(20);
500 3 direct_B=1;
501 3
502 3 while(wait_down==1);//等待按键
503 3
504 3 direct_A=0;//反转下降
505 3 power_A=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -