📄 step.lst
字号:
392 3 KEY=0; //清键值
393 3 FLAG=1; //数码管闪烁标志位1(第1位闪烁)
394 3 if(KEY==6)
395 3 {
396 4 KEY=0; //清键值
397 4 Led2[0]+=1;
398 4 while(Led2[0]>9)
399 4 Led2[0]=0;
400 4 }
401 3 else if(KEY==4)
402 3 break;
403 3 }
404 2 while(1)
405 2 {
406 3 KEY=0; //清键值
407 3 FLAG=2; //数码管闪烁标志位2(第2位闪烁)
408 3 if(KEY==6)
409 3 {
410 4 KEY=0; //清键值
411 4 Led2[1]+=1;
412 4 while(Led2[1]>9)
413 4 Led2[1]=0;
414 4 }
415 3 else if(KEY==4)
416 3 break;
417 3 }
418 2 while(1)
419 2 {
420 3 KEY=0; //清键值
421 3 FLAG=5; //数码管闪烁标志位5(第5位闪烁)
422 3 if(KEY==6)
423 3 {
424 4 KEY=0; //清键值
425 4 Led2[4]+=1;
426 4 while(Led2[4]>9)
427 4 Led2[4]=0;
C51 COMPILER V7.07 STEP 11/10/2007 15:35:10 PAGE 8
428 4 }
429 3 else if(KEY==4)
430 3 break;
431 3 }
432 2 while(1)
433 2 {
434 3 KEY=0; //清键值
435 3 FLAG=6; //数码管闪烁标志位6(第6位闪烁)
436 3 if(KEY==6)
437 3 {
438 4 KEY=0; //清键值
439 4 Led2[5]+=1;
440 4 while(Led2[5]>9)
441 4 Led2[5]=0;
442 4 }
443 3 else if(KEY==4)
444 3 break;
445 3 }
446 2 KEY=0; //清键值
447 2 FLAG=0; //数码管闪烁标志位0(无闪烁)
448 2 Xe=Led2[1]*10+Led2[0];//Led2[3]*1000+Led2[2]*100+Led2[1]*10+Led2[0];//计算并存储所设坐标
449 2 Ye=Led2[5]*10+Led2[4];//Led2[7]*1000+Led2[6]*100+Led2[5]*10+Led2[4];
450 2 }
451 1 while(KEY==7) //电机X单独运行
452 1 {
453 2 FLAG1=1; //显示切换标志位1(显示速度)
454 2 time0_tmp=0x4000; //改变定时显示初值
455 2 Led1[4]=0;Led1[5]=0;Led1[6]=0;Led1[7]=0;
456 2 Led1[0]=SpeedX%10;Led1[1]=(SpeedX%100)/10;Led1[2]=SpeedX/100;Led1[3]=10;//显示X电机速度
457 2 for(i=0;i<8;i++)
458 2 {
459 3 P1=StepX1[i];
460 3 // time1_int(Tx);
461 3 delay10ms(6000/SpeedX);
462 3 }
463 2 }
464 1 while(KEY==8) //电机Y单独运行
465 1 {
466 2 FLAG1=1; //显示切换标志位1(显示速度)
467 2 time0_tmp=0x4000; //改变定时显示初值
468 2 Led1[0]=0;Led1[1]=0;Led1[2]=0;Led1[3]=0;
469 2 Led1[4]=SpeedY%10;Led1[5]=(SpeedY%100)/10;Led1[6]=SpeedY/100;Led1[7]=10;//显示Y电机速度
470 2 for(i=0;i<8;i++)
471 2 {
472 3 P1=StepY1[i];
473 3 // time1_int(Tx);
474 3 delay10ms(6000/SpeedY);
475 3 }
476 2 }
477 1 }
478 //------------------------------------------------------------------------------------
479 // 函数名称:Go_line()
480 // 函数功能:直线差补算法---前进
481 //------------------------------------------------------------------------------------
482 void Go_line(void)
483 {
484 1 unsigned int i,j;
485 1 time0_tmp=0x4000; //改变定时显示初值
486 1 Nxy=Xe+Ye; //计算总步数
487 1 if(FLAG2==1) //电机正反转切换标志位1(让电机仅正转1次)
488 1 return;
489 1
C51 COMPILER V7.07 STEP 11/10/2007 15:35:10 PAGE 9
490 1 while(Nxy!=0) //差补算法
491 1 {
492 2 if(Fm>=0)
493 2 {
494 3 for(j=0;j<circle;j++)
495 3 {
496 4 for(i=0;i<8;i++)
497 4 {
498 5 P1=StepX1[i];
499 5 delay10ms(6000/SpeedX);
500 5 // time1_int(Tx);
501 5 }
502 4 }
503 3 Xi+=1;
504 3 Fm-=Ye;
505 3 }
506 2 else
507 2 {
508 3 for(j=0;j<circle;j++)
509 3 {
510 4 for(i=0;i<8;i++)
511 4 {
512 5 P1=StepY1[i];
513 5 delay10ms(6000/SpeedY);
514 5 // time1_int(Ty);
515 5 }
516 4 }
517 3 Yi+=1;
518 3 Fm+=Xe;
519 3 }
520 2 Nxy--;
521 2 FLAG2=1; //电机正反转切换标志位1(正转)
522 2 Led2[3]=Xi/1000;Led2[2]=(Xi%1000)/100;Led2[1]=(Xi%100)/10;Led2[0]=Xi%10;//显示当前坐标
523 2 Led2[7]=Yi/1000;Led2[6]=(Yi%1000)/100;Led2[5]=(Yi%100)/10;Led2[4]=Yi%10;
524 2 }
525 1 }
526 //------------------------------------------------------------------------------------
527 // 函数名称:Back_line()
528 // 函数功能:直线差补算法---回零
529 //------------------------------------------------------------------------------------
530 void Back_line(void)
531 {
532 1 unsigned int i,j;
533 1 time0_tmp=0x4000; //改变定时显示初值
534 1 Nxy=Xe+Ye; //计算总步数
535 1 Fm=0; //加工点偏差置0
536 1 if(FLAG2==0) //电机正反转切换标志位0(让电机仅反转1次)
537 1 return;
538 1
539 1 while(Nxy!=0)
540 1 {
541 2 if(Fm>=0)
542 2 {
543 3 for(j=0;j<circle;j++)
544 3 {
545 4 for(i=0;i<8;i++)
546 4 {
547 5 P1=StepX2[i];
548 5 // time1_int(Tx);
549 5 delay10ms(6000/SpeedX);
550 5 }
551 4 }
C51 COMPILER V7.07 STEP 11/10/2007 15:35:10 PAGE 10
552 3 Xi-=1;
553 3 Fm-=Ye;
554 3 }
555 2 else
556 2 {
557 3 for(j=0;j<circle;j++)
558 3 {
559 4 for(i=0;i<8;i++)
560 4 {
561 5 P1=StepY2[i];
562 5 // time1_int(Ty);
563 5 delay10ms(6000/SpeedY);
564 5 }
565 4 }
566 3 Yi-=1;
567 3 Fm+=Xe;
568 3 }
569 2 Nxy--;
570 2 FLAG2=0; //电机正反转切换标志位0(反转)
571 2 Led2[3]=Xi/1000;Led2[2]=(Xi%1000)/100;Led2[1]=(Xi%100)/10;Led2[0]=Xi%10;//显示当前坐标
572 2 Led2[7]=Yi/1000;Led2[6]=(Yi%1000)/100;Led2[5]=(Yi%100)/10;Led2[4]=Yi%10;
573 2 }
574 1 }
575 //------------------------------------------------------------------------------------
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 3156 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 106 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -