📄 encoder.lst
字号:
485 00e5 9080 SACL *
486 *** 249 ----------------------- goto g8;
487 00e6 7980 B L14
00e7 00f7'
488 00e8 L12:
489 *** -----------------------g6:
490 *** 244 ----------------------- if ( (incr&3u) != 3u ) goto g8;
491 .line 33
492 00e8 b903 LACK 3
493 00e9 8b90 MAR *-
494 00ea 6e80 AND *
495 00eb ba03 SUBK 3
496 00ec e308 BNZ L14
00ed 00f7'
497 *** 245 ----------------------- incr = incr+1u&qep_rollover-1u;
498 .line 34
499 00ee bc00! LDPK _qep_rollover
500 00ef 1000! LAC _qep_rollover
501 00f0 ba01 SUBK 1
502 00f1 8b89 MAR * ,AR1
TMS320C1x/C2x/C2xx/C5x COFF Assembler Beta Version 6.63 Mon Feb 9 04:52:54 1998
Copyright (c) 1987-1996 Texas Instruments Incorporated
encoder.asm PAGE 11
503 00f2 908a SACL * ,AR2
504 00f3 1089 LAC * ,AR1
505 00f4 b801 ADDK 1
506 00f5 6e8a AND * ,AR2
507 00f6 9080 SACL *
508 00f7 L14:
509 *** -----------------------g8:
510 *** 254 ----------------------- encoder_position[1] = incr>>2;
511 .line 43
512 ;>>>> encoder_position[1] = (incr >> 2);
513 00f7 b203 LARK AR2,3
514 00f8 8be0 MAR *0+
515 00f9 1d80 LAC * ,13
516 00fa bc00- LDPK _encoder_position+1
517 00fb 9901- SACH _encoder_position+1,1
518 *** ----------------------- return;
519 00fc EPI0_4:
520 .line 44
521 00fc 8b89 MAR * ,AR1
522 00fd 7c06 SBRK 6
523 00fe 0090 LAR AR0,*-
524 00ff 7680 PSHD *
525 0100 ef00 RET
526
527 .endfunc 255,000000000H,5
528
529 .sym _Encoder_CalcPhase,_Encoder_CalcPhase,36,2,0
530 .globl _Encoder_CalcPhase
531
532 .func 268
533 ;>>>> int Encoder_CalcPhase(int qep_sin, int qep_negcos)
534 ******************************************************
535 * FUNCTION DEF : _Encoder_CalcPhase
536 ******************************************************
537 0101 _Encoder_CalcPhase:
538
539 0000 LF5 .set 0
540
541 0101 8aa0 POPD *+
542 0102 80a0 SAR AR0,*+
543 0103 8180 SAR AR1,*
544 0104 b003 LARK AR0,3
545 0105 00ea LAR AR0,*0+,AR2
546
547 .sym _qep_sin,-3+LF5,4,9,16
548 .sym _qep_negcos,-4+LF5,4,9,16
549 *
550 * --- buffer shares AUTO storage with phase
551 * --- buffer shares AUTO storage with U$2
552 *
553 .sym U$3,1,4,1,16
554 .sym _buffer,2,4,1,16
555 .line 2
556 ;>>>> int phase;
TMS320C1x/C2x/C2xx/C5x COFF Assembler Beta Version 6.63 Mon Feb 9 04:52:54 1998
Copyright (c) 1987-1996 Texas Instruments Incorporated
encoder.asm PAGE 12
557 ;>>>> int buffer;
558 *** 276 ----------------------- U$3 = ABS(qep_negcos);
559 .line 9
560 ;>>>> if (abs(qep_sin) == abs(qep_negcos))
561 ;>>>> phase = (PI/4);
562 0106 be47 SSXM
563 0107 bf0a LARK AR2,-4+LF5
0108 fffc
564 0109 8be0 MAR *0+
565 010a 1080 LAC *
566 010b be00 ABS
567 010c 7805 ADRK 5-LF5
568 010d 9080 SACL *
569 *** 276 ----------------------- U$2 = ABS(qep_sin);
570 010e 7c04 SBRK 4-LF5
571 010f 1080 LAC *
572 0110 be00 ABS
573 0111 7805 ADRK 5-LF5
574 0112 9080 SACL *
575 *** 276 ----------------------- if ( U$2 == U$3 ) goto g4;
576 0113 1090 LAC *-
577 0114 3080 SUB *
578 0115 e388 BZ L18
0116 0148'
579 *** 278 ----------------------- if ( U$2 < U$3 ) goto g3;
580 .line 11
581 ;>>>> else if (abs(qep_sin) < abs(qep_negcos))
582 ;>>>> buffer = q15_div(abs(qep_sin),abs(qep_negcos));
583 ;>>>> phase = q15p_atan(buffer);
584 ;>>>> else
585 0117 8ba0 MAR *+
586 0118 1090 LAC *-
587 0119 3080 SUB *
588 011a e344 BLZ L17
011b 0134'
589 *** 286 ----------------------- buffer = q15_div((unsigned)U$3, (unsigned)U$2);
590 .line 19
591 ;>>>> buffer = q15_div(abs(qep_negcos),abs(qep_sin));
592 011c 8ba0 MAR *+
593 011d 1099 LAC *-,AR1
594 011e 90aa SACL *+,AR2
595 011f 1089 LAC * ,AR1
596 0120 90a0 SACL *+
597 0121 7a80 CALL _q15_div
0122 0000!
598 0123 7c02 SBRK 2
599 0124 8b8a MAR * ,AR2
600 0125 b202 LARK AR2,2
601 0126 8be0 MAR *0+
602 0127 9089 SACL * ,AR1
603 *** 288 ----------------------- phase = 16384L-(long)q15p_atan((unsigned)buffer);
604 .line 21
605 ;>>>> phase = (PI/2) - q15p_atan(buffer);
606 0128 90a0 SACL *+
TMS320C1x/C2x/C2xx/C5x COFF Assembler Beta Version 6.63 Mon Feb 9 04:52:54 1998
Copyright (c) 1987-1996 Texas Instruments Incorporated
encoder.asm PAGE 13
607 0129 7a80 CALL _q15p_atan
012a 0000!
608 012b 8b9a MAR *-,AR2
609 012c be02 NEG
610 012d bf90 ADDK 16384
012e 4000
611 012f b202 LARK AR2,2
612 0130 8be0 MAR *0+
613 0131 9080 SACL *
614 *** 288 ----------------------- goto g5;
615 0132 7980 B L19
0133 014b'
616 0134 L17:
617 *** -----------------------g3:
618 *** 280 ----------------------- buffer = q15_div((unsigned)U$2, (unsigned)U$3);
619 .line 13
620 0134 10a9 LAC *+,AR1
621 0135 90aa SACL *+,AR2
622 0136 1089 LAC * ,AR1
623 0137 90a0 SACL *+
624 0138 7a80 CALL _q15_div
0139 0000!
625 013a 7c02 SBRK 2
626 013b 8b8a MAR * ,AR2
627 013c b202 LARK AR2,2
628 013d 8be0 MAR *0+
629 013e 9089 SACL * ,AR1
630 *** 282 ----------------------- phase = q15p_atan((unsigned)buffer);
631 .line 15
632 013f 90a0 SACL *+
633 0140 7a80 CALL _q15p_atan
0141 0000!
634 0142 8b9a MAR *-,AR2
635 0143 b202 LARK AR2,2
636 0144 8be0 MAR *0+
637 0145 9080 SACL *
638 *** ----------------------- goto g5;
639 0146 7980 B L19
0147 014b'
640 0148 L18:
641 *** -----------------------g4:
642 *** 277 ----------------------- phase = 8192;
643 .line 10
644 0148 8ba0 MAR *+
645 0149 ae80 SPLK #8192,*
014a 2000
646 014b L19:
647 *** -----------------------g5:
648 *** 294 ----------------------- if ( qep_sin >= 0 ) goto g9;
649 .line 27
650 ;>>>> if (qep_sin >= 0)
651 ;>>>> if (qep_negcos > 0)
652 ;>>>> phase = PI - phase; /* 2nd quadrant */
653 ;>>>> else
TMS320C1x/C2x/C2xx/C5x COFF Assembler Beta Version 6.63 Mon Feb 9 04:52:54 1998
Copyright (c) 1987-1996 Texas Instruments Incorporated
encoder.asm PAGE 14
654 014b be47 SSXM
655 014c 7c05 SBRK 5-LF5
656 014d 1080 LAC *
657 014e e38c BGEZ L23
014f 0163'
658 *** 302 ----------------------- if ( qep_negcos <= 0 ) goto g8;
659 .line 35
660 ;>>>> if ( qep_negcos > 0 )
661 0150 8b90 MAR *-
662 0151 1080 LAC *
663 0152 e3cc BLEZ L22
0153 015c'
664 *** 303 ----------------------- phase = (long)phase-32768L;
665 .line 36
666 ;>>>> phase = PI + phase; /* 3rd quadrant */
667 ;>>>> else
668 0154 7806 ADRK 6-LF5
669 0155 1080 LAC *
670 0156 bf9f ADLK 65535,15
0157 ffff
671 0158 9080 SACL *
672 *** ----------------------- return phase;
673 0159 1080 LAC *
674 015a 7980 B EPI0_5
015b 016f'
675 015c L22:
676 *** -----------------------g8:
677 *** 305 ----------------------- phase = -phase;
678 .line 38
679 ;>>>> phase = -phase; /* 4th quadrant */
680 015c 7806 ADRK 6-LF5
681 015d 1080 LAC *
682 015e be02 NEG
683 015f 9080 SACL *
684 *** 305 ----------------------- return phase;
685 0160 1080 LAC *
686 0161 7980 B EPI0_5
0162 016f'
687 0163 L23:
688 *** -----------------------g9:
689 *** 296 ----------------------- if ( qep_negcos <= 0 ) goto g11;
690 .line 29
691 0163 8b90 MAR *-
692 0164 1080 LAC *
693 0165 e3cc BLEZ L25
0166 016c'
694 *** 297 ----------------------- phase = 32768L-(long)phase;
695 .line 30
696 0167 bf8f LALK 1,15
0168 0001
697 0169 7806 ADRK 6-LF5
698 016a 3080 SUB *
699 016b 9080 SACL *
700 016c L25:
TMS320C1x/C2x/C2xx/C5x COFF Assembler Beta Version 6.63 Mon Feb 9 04:52:54 1998
Copyright (c) 1987-1996 Texas Instruments Incorporated
encoder.asm PAGE 15
701 *** -----------------------g11:
702 *** 308 ----------------------- return phase;
703 .line 41
704 ;>>>> return phase;
705 016c b202 LARK AR2,2
706 016d 8be0 MAR *0+
707 016e 1080 LAC *
708 016f EPI0_5:
709 .line 42
710 016f 8b89 MAR * ,AR1
711 0170 7c04 SBRK 4
712 0171 0090 LAR AR0,*-
713 0172 7680 PSHD *
714 0173 ef00 RET
715
716 .endfunc 309,000000000H,3
717
718 .sym _encoder_position,_encoder_position,62,2,32,,2
719 .globl _encoder_position
720 .end
No Errors, No Warnings
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -