?? motor.lst
字號:
325 1
326 1 }
327
328 void Lmotor(float L){
329 1
330 1 int i,j;
331 1 if (L>0){
332 2 L297_R_CW=1;
333 2 }else {
334 2 L297_R_CW=0;
335 2 }
336 1 j=abs(STEP*L);
337 1 for (i=0;i<j;i++){
338 2 L297_R_CLK=0;
339 2 msec(SPEED);
340 2 L297_R_CLK=1;
341 2 msec(SPEED);
342 2 }
343 1 }
344
345
346 void clear_led(){
347 1 wcom_8279(0xd0);
348 1 }
349
350
351
352 void initL297(){
353 1
354 1 L297_L_RST=0;
355 1 msec(50);
356 1 L297_L_RST=1;
357 1 L297_L_CTL=1;
358 1 L297_L_EN=1;
359 1 L297_L_HALF=0;
360 1
361 1 L297_R_RST=0;
362 1 msec(50);
363 1 L297_R_RST=1;
364 1 L297_R_CTL=1;
365 1 L297_R_EN=1;
C51 COMPILER V7.06 MOTOR 09/13/2005 19:28:53 PAGE 7
366 1 L297_R_HALF=0;
367 1
368 1
369 1 }
370
371 void test(){
372 1 uchar i;
373 1 initL297();
374 1 for (i=0;i<200;i++){
375 2 L297_R_CLK=0;
376 2 msec(SPEED);
377 2 L297_R_CLK=1;
378 2 msec(SPEED);
379 2 }
380 1
381 1 for (i=0;i<200;i++){
382 2 L297_L_CLK=0;
383 2 msec(SPEED);
384 2 L297_L_CLK=1;
385 2 msec(SPEED);
386 2 }
387 1 }
388
389 float LL(float x, float y){
390 1
391 1 int r1;
392 1 r1=sqrt((15+x)*(15+x)+(115-y)*(115-y));
393 1 return r1;
394 1
395 1 }
396
397 float LR(float x, float y){
398 1
399 1 int r2;
400 1 r2=sqrt((95-x)*(95-x)+(115-y)*(115-y));
401 1 return r2;
402 1
403 1 }
404
405
406 void move( float x0, float y0, float x1 ,float y1){
407 1
408 1 float Ll0,Lr0,Ll1,Lr1;
409 1
410 1
411 1 Ll0=LL(x0,y0);
412 1 Lr0=LR(x0,y0);
413 1
414 1
415 1
416 1 Ll1=LL(x1,y1);
417 1 Lr1=LR(x1,y1);
418 1
419 1 Lmotor(Ll1-Ll0);
420 1 Rmotor(Lr1-Lr0);
421 1
422 1
423 1
424 1 }
425
426 void move_xy(){
427 1
C51 COMPILER V7.06 MOTOR 09/13/2005 19:28:53 PAGE 8
428 1
429 1 move(x0,y0,mx,my);
430 1 x0=mx;
431 1 y0=my;
432 1
433 1 }
434
435
436 void drawcircle(){
437 1
438 1
439 1 mmx=cx0;
440 1 mmy=cy0+cr;
441 1 move(x0,y0,mmx,mmy);
442 1 for (i=1;i<360;i++){
443 2
444 2 mx=cx0+28*(sin(3.1415926*i/180));
445 2 my=cy0+25*(cos(3.1415926*i/180));
446 2 move(mmx,mmy,mx,my);
447 2 display1(mx);
448 2 display2(my);
449 2 mmx=mx;
450 2 mmy=my;
451 2
452 2
453 2 }
454 1
455 1 }
456 bit int_flag;
457
458
459
460
461
462 main() {
463 1
464 1
465 1
466 1 IT1=1;
467 1 IE=0X84;
468 1 init8279();
469 1 display1(1234);
470 1 display2(5678);
471 1 msec(1500);
472 1 clear_led();
473 1 for(i=1;i<3;i++)
474 1 {for(j=1;j<5;j++) {
475 3 display_xy(j,i,2);
476 3 msec(100);
477 3 clear_led();
478 3 }
479 2 }
480 1 display1(0000);
481 1 display2(0000);
482 1 initL297();
483 1
484 1 test();
485 1 while (1) {
486 2 i=0;
487 2
488 2 while (!int_flag) ;
489 2 int_flag=0;
C51 COMPILER V7.06 MOTOR 09/13/2005 19:28:53 PAGE 9
490 2 k=keyin();
491 2
492 2 if (k==14) {
493 3 test();
494 3 }
495 2
496 2
497 2
498 2
499 2 if (k==12) {
500 3 cx0=40;
501 3 cy0=50;
502 3 cr=25;
503 3 drawcircle();
504 3
505 3 }
506 2
507 2 if (k==13) {
508 3
509 3 move(0,0,20,20);
510 3 move(20,20,30,50);
511 3 move(30,50,60,60);
512 3
513 3 }
514 2
515 2 if (k==10) {
516 3 display1(0000);
517 3 msec(1000);
518 3 clear_led();
519 3 display1(0000);
520 3 msec(1000);
521 3 clear_led();
522 3 display1(0000);
523 3 msec(1000);
524 3 clear_led();
525 3 eol=0;
526 3 while (!eol) {
527 4 while (!int_flag);
528 4 int_flag=0;
529 4 k=keyin();
530 4 if (k<10)
531 4 mx=mx*10+k;
532 4 display1(mx);
533 4 if (k==15) eol=1;
534 4 }
535 3
536 3
537 3 eol=0;
538 3 while (!eol) {
539 4 while (!int_flag);
540 4 int_flag=0;
541 4 k=keyin();
542 4 if (k<10)
543 4 my=my*10+k;
544 4 display2(my);
545 4 if (k==15) eol=1;
546 4 }
547 3
548 3 move_xy();
549 3 }
550 2
551 2 if (k==11) {
C51 COMPILER V7.06 MOTOR 09/13/2005 19:28:53 PAGE 10
552 3 display1(8888);
553 3 msec(1000);
554 3 clear_led();
555 3 display2(8888);
556 3 msec(1000);
557 3 clear_led();
558 3 display1(8888);
559 3 msec(1000);
560 3 clear_led();
561 3 eol=0;
562 3
563 3 while (!eol) {
564 4 while (!int_flag);
565 4 int_flag=0;
566 4 k=keyin();
567 4 if (k<10)
568 4 cx0=cx0*10+k;
569 4 display1(cx0);
570 4 if (k==15) eol=1;
571 4 }
572 3
573 3 display1(7777);
574 3 msec(1000);
575 3 clear_led();
576 3 display2(7777);
577 3 msec(1000);
578 3 clear_led();
579 3 display1(7777);
580 3 msec(1000);
581 3 clear_led();
582 3 eol=0;
583 3
584 3 while (!eol) {
585 4 while (!int_flag);
586 4 int_flag=0;
587 4 k=keyin();
588 4 if (k<10)
589 4 cy0=cy0*10+k;
590 4 display2(cy0);
591 4 if (k==15) eol=1;
592 4 }
593 3
594 3 display1(6666);
595 3 msec(1000);
596 3 clear_led();
597 3 display2(6666);
598 3 msec(1000);
599 3 clear_led();
600 3 display1(6666);
601 3 msec(1000);
602 3 clear_led();
603 3 eol=0;
604 3
605 3
606 3
607 3 while (!eol) {
608 4 while (!int_flag);
609 4 int_flag=0;
610 4 k=keyin();
611 4 if (k<10)
612 4 cr=cr*10+k;
613 4 display2(cr);
C51 COMPILER V7.06 MOTOR 09/13/2005 19:28:53 PAGE 11
614 4 if (k==15) eol=1;
615 4 }
616 3
617 3
618 3 drawcircle();
619 3
620 3 }
621 2
622 2
623 2
624 2
625 2
626 2 }
627 1
628 1
629 1 while (1);
630 1
631 1
632 1 }
633
634
635
636 void int1() interrupt 2{
637 1 int_flag=1;
638 1 }
639
640
641
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 3000 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 30 94
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -