⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encoder.lst

📁 Texas-Instrument C2000 Series DSP example programs
💻 LST
📖 第 1 页 / 共 3 页
字号:
     245 0046 908b          SACL    * ,AR3
     246 0047       L6:
     247            ***     -----------------------g4:
     248            *** 133 -----------------------    if ( !(*(unsigned*)0x7032&0x100) ) goto g4;
     249                    .line   25
     250            ;>>>>          ADC_READ2(buffer[0],buffer[1]);
     251 0047 bf0b          LARK    AR3,28722
         0048 7032  
     252 0049 4780          BIT     * ,7
     253 004a e200          BBZ     L6
         004b 0047' 
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    6

     254            *** 133 -----------------------    buffer[0] = *(unsigned*)0x7036;
     255 004c 7804          ADRK    4
     256 004d 108a          LAC     * ,AR2
     257 004e b201          LARK    AR2,1
     258 004f 8be0          MAR     *0+
     259 0050 908b          SACL    * ,AR3
     260            *** 133 -----------------------    buffer[1] = *(unsigned*)0x7038;
     261 0051 7802          ADRK    2
     262 0052 108a          LAC     * ,AR2
     263 0053 8ba0          MAR     *+
     264 0054 908b          SACL    * ,AR3
     265            *** 133 -----------------------    *(unsigned*)0x7032 |= 0x100u;
     266 0055 7c06          SBRK    6
     267 0056 bf80          LACK    256
         0057 0100  
     268 0058 6d80          OR      * 
     269 0059 908a          SACL    * ,AR2
     270            *** 136 -----------------------    buffer[0] = (unsigned)buffer[0]-0x8000u;
     271                    .line   28
     272            ;>>>>          buffer[0] = buffer[0] - ENC_U0_OFFSET;  
     273 005a 8b90          MAR     *-
     274 005b 1080          LAC     * 
     275 005c bf9f          ADLK    65535,15
         005d ffff  
     276 005e 90a0          SACL    *+
     277            *** 137 -----------------------    buffer[1] = (unsigned)buffer[1]+32468u;
     278                    .line   29
     279            ;>>>>          buffer[1] = buffer[1] - ENC_U90_OFFSET;
     280 005f 1089          LAC     * ,AR1
     281 0060 bf90          ADDK    32468
         0061 7ed4  
     282 0062 9080          SACL    * 
     283 0063 108a          LAC     * ,AR2
     284 0064 9080          SACL    * 
     285            *** 142 -----------------------    if ( ABS(ABS(buffer[0])-ABS(buffer[1])) > 16384 ) goto g2;
     286                    .line   34
     287            ;>>>>       }  while ( abs(abs(buffer[0])-abs(buffer[1])) > 0x4000);
     288 0065 be47          SSXM
     289 0066 1099          LAC     *-,AR1
     290 0067 be00          ABS
     291 0068 908a          SACL    * ,AR2
     292 0069 1089          LAC     * ,AR1
     293 006a be00          ABS
     294 006b 3080          SUB     * 
     295 006c be00          ABS
     296 006d bfa0          SUBK    16384
         006e 4000  
     297 006f e304          BGZ     L4
         0070 0040' 
     298            *** 147 -----------------------    ubuffer[0] = Encoder_CalcPhase(buffer[0], buffer[1]);
     299                    .line   39
     300            ;>>>>       ubuffer[0] = Encoder_CalcPhase(buffer[0],buffer[1]);   
     301 0071 8b8a          MAR     * ,AR2
     302 0072 8ba0          MAR     *+
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    7

     303 0073 1099          LAC     *-,AR1
     304 0074 90aa          SACL    *+,AR2
     305 0075 1089          LAC     * ,AR1
     306 0076 90a0          SACL    *+
     307 0077 7a80          CALL    _Encoder_CalcPhase
         0078 0101' 
     308 0079 7c02          SBRK    2
     309 007a 8b8a          MAR     * ,AR2
     310 007b b203          LARK    AR2,3
     311 007c 8be0          MAR     *0+
     312 007d 9080          SACL    * 
     313            *** 148 -----------------------    ubuffer[0] = ubuffer[0]>>14;
     314                    .line   40
     315            ;>>>>       ubuffer[0] = (ubuffer[0] >> 14) & 0x0003;   /* extract quadrant */
     316 007e be46          RSXM
     317 007f 1180          LAC     * ,1
     318 0080 99a0          SACH    *+,1
     319            *** 149 -----------------------    ubuffer[1] = ubuffer[1]&3u;
     320                    .line   41
     321            ;>>>>       ubuffer[1] = ubuffer[1] & 0x0003;
     322 0081 b903          LACK    3
     323 0082 6e89          AND     * ,AR1
     324 0083 9080          SACL    * 
     325 0084 108a          LAC     * ,AR2
     326 0085 9080          SACL    * 
     327            *** 151 -----------------------    qep_diff = qep_diff+((int)ubuffer[1]-(int)ubuffer[0]);
     328                    .line   43
     329            ;>>>>       qep_diff = qep_diff + ((int) ubuffer[1] - (int) ubuffer[0]); 
     330 0086 1099          LAC     *-,AR1
     331 0087 bc00!         LDPK    _qep_diff
     332 0088 2000!         ADD     _qep_diff
     333 0089 9080          SACL    * 
     334 008a 108a          LAC     * ,AR2
     335 008b 3080          SUB     * 
     336 008c 9000!         SACL    _qep_diff
     337            ***     -----------------------    return;
     338 008d       EPI0_3:
     339                    .line   44
     340 008d 8b89          MAR     * ,AR1
     341 008e 7c06          SBRK    6
     342 008f 0090          LAR     AR0,*-
     343 0090 7680          PSHD    *
     344 0091 ef00          RET
     345            
     346                    .endfunc        152,000000000H,5
     347      7032  ADCTRL1    .set    7032h                                   
     348      7405  T2CNT      .set    7405h                                   
     349                       .ref    _qep_diff                               
     350                       .ref    _QEP_GetIncr                            
     351                       .def    _Encoder_SamplePosition                 
     352 0092       _Encoder_SamplePosition:                                   
     353 0092 bce0             ldp     #ADCTRL1/128                            
     354 0093 6932             lacl    ADCTRL1                                 
     355 0094 bfb0             and     #0FF81h         ;clear channels         
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    8

         0095 ff81  
     356 0096 bfc0             or      #005Bh          ;select channel 5 and 13
         0097 005b  
     357 0098 9032             sacl    ADCTRL1         ;(1) start ADC's        
     358                 ;capture Timer 2 300ns after ADC start (1)                  
     359                 ;-----------------------------------------                  
     360 0099 7a80             call    _QEP_GetIncr   ;200ns (call) + 100ns in subroutine 
         009a 0000! 
     361 009b ef00             ret                                                   
     362            
     363                    .sym    _Encoder_CalcPosition,_Encoder_CalcPosition,32,2,0
     364                    .globl  _Encoder_CalcPosition
     365            
     366                    .func   212
     367            ;>>>>   void Encoder_CalcPosition(unsigned qep_incr_sample)
     368            ******************************************************
     369            * FUNCTION DEF : _Encoder_CalcPosition
     370            ******************************************************
     371 009c       _Encoder_CalcPosition:
     372            
     373      0000  LF4     .set    0
     374            
     375 009c 8aa0          POPD    *+
     376 009d 80a0          SAR     AR0,*+
     377 009e 8180          SAR     AR1,*
     378 009f b005          LARK    AR0,5
     379 00a0 00ea          LAR     AR0,*0+,AR2
     380            
     381                    .sym    _qep_incr_sample,-3+LF4,14,9,16
     382                    .sym    _sin_sample,1,4,1,16
     383                    .sym    _ncos_sample,2,4,1,16
     384                    .sym    _incr,3,14,1,16
     385                    .sym    _buffer,4,14,1,16
     386                    .line   2
     387            ;>>>>       volatile int sin_sample;
     388            ;>>>>       volatile int ncos_sample;
     389            ;>>>>       volatile unsigned incr;
     390            ;>>>>       volatile unsigned buffer;
     391            *** 222 -----------------------    incr = qep_incr_sample;
     392                    .line   11
     393            ;>>>>       incr = qep_incr_sample;
     394 00a1 bf0a          LARK    AR2,-3+LF4
         00a2 fffd  
     395 00a3 8be0          MAR     *0+
     396 00a4 1080          LAC     * 
     397 00a5 7806          ADRK    6-LF4
     398 00a6 908b          SACL    * ,AR3
     399 00a7       L8:
     400            ***     -----------------------g2:
     401            *** 227 -----------------------    if ( !(*(unsigned*)0x7032&0x100) ) goto g2;
     402                    .line   16
     403            ;>>>>       ADC_READ2(sin_sample,ncos_sample);
     404 00a7 bf0b          LARK    AR3,28722
         00a8 7032  
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    9

     405 00a9 4780          BIT     * ,7
     406 00aa e200          BBZ     L8
         00ab 00a7' 
     407            *** 227 -----------------------    sin_sample = *(unsigned*)0x7036;
     408 00ac 7804          ADRK    4
     409 00ad 108a          LAC     * ,AR2
     410 00ae b201          LARK    AR2,1
     411 00af 8be0          MAR     *0+
     412 00b0 908b          SACL    * ,AR3
     413            *** 227 -----------------------    ncos_sample = *(unsigned*)0x7038;
     414 00b1 7802          ADRK    2
     415 00b2 108a          LAC     * ,AR2
     416 00b3 8ba0          MAR     *+
     417 00b4 908b          SACL    * ,AR3
     418            *** 227 -----------------------    *(unsigned*)0x7032 |= 0x100u;
     419 00b5 7c06          SBRK    6
     420 00b6 bf80          LACK    256
         00b7 0100  
     421 00b8 6d80          OR      * 
     422 00b9 908a          SACL    * ,AR2
     423            *** 230 -----------------------    sin_sample = (unsigned)sin_sample-0x8000u;
     424                    .line   19
     425            ;>>>>       sin_sample  = sin_sample - ENC_U0_OFFSET; 
     426 00ba 8b90          MAR     *-
     427 00bb 1080          LAC     * 
     428 00bc bf9f          ADLK    65535,15
         00bd ffff  
     429 00be 90a0          SACL    *+
     430            *** 231 -----------------------    ncos_sample = (unsigned)ncos_sample+32468u;
     431                    .line   20
     432            ;>>>>       ncos_sample = ncos_sample - ENC_U90_OFFSET;
     433 00bf 1080          LAC     * 
     434 00c0 bf90          ADDK    32468
         00c1 7ed4  
     435 00c2 9080          SACL    * 
     436            *** 236 -----------------------    encoder_position[0] = Encoder_CalcPhase(sin_sample, ncos_sample);
     437                    .line   25
     438            ;>>>>       encoder_position[0] = Encoder_CalcPhase(sin_sample, ncos_sample);   
     439 00c3 1099          LAC     *-,AR1
     440 00c4 90aa          SACL    *+,AR2
     441 00c5 1089          LAC     * ,AR1
     442 00c6 90a0          SACL    *+
     443 00c7 7a80          CALL    _Encoder_CalcPhase
         00c8 0101' 
     444 00c9 7c02          SBRK    2
     445 00ca bc00-         LDPK    _encoder_position
     446 00cb 9000-         SACL    _encoder_position
     447            *** 241 -----------------------    buffer = encoder_position[0]>>14;
     448                    .line   30
     449            ;>>>>       buffer = ((encoder_position[0] >> 14) & 0x0003);
     450            ;>>>>       switch (buffer)
     451            ;>>>>          case 0:  if ((incr & 0x0003) == 3)
     452            ;>>>>                      incr = (incr + 1) & (qep_rollover-1);
     453            ;>>>>                   break;  
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   10

     454 00cc be46          RSXM
     455 00cd 1100-         LAC     _encoder_position,1
     456 00ce 8b8a          MAR     * ,AR2
     457 00cf b204          LARK    AR2,4
     458 00d0 8be0          MAR     *0+
     459 00d1 9980          SACH    * ,1
     460            ***     -----------------------    switch ( buffer ) {...};
     461 00d2 6980          ZALS    * 
     462 00d3 e388          BZ      L12
         00d4 00e8' 
     463 00d5 ba03          SUBK    3
     464 00d6 e308          BNZ     L14
         00d7 00f7' 
     465            ***     -----------------------g4:
     466            *** 248 -----------------------    if ( incr&3u ) goto g8;
     467                    .line   37
     468            ;>>>>          case 3:  if ((incr & 0x0003) == 0)
     469 00d8 b903          LACK    3
     470 00d9 8b90          MAR     *-
     471 00da 6e80          AND     * 
     472 00db e308          BNZ     L14
         00dc 00f7' 
     473            *** 249 -----------------------    incr = incr-1u&qep_rollover-1u;
     474                    .line   38
     475            ;>>>>                      incr = (incr - 1) & (qep_rollover-1);
     476            ;>>>>                   break;  
     477 00dd bc00!         LDPK    _qep_rollover
     478 00de 1000!         LAC     _qep_rollover
     479 00df ba01          SUBK    1
     480 00e0 8b89          MAR     * ,AR1
     481 00e1 908a          SACL    * ,AR2
     482 00e2 1089          LAC     * ,AR1
     483 00e3 ba01          SUBK    1
     484 00e4 6e8a          AND     * ,AR2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -