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

📄 _pi_asm.lst

📁 这是英飞凌公司基于xc166开发的foc方式控制的pmsm电机例程 非常有参加价值
💻 LST
📖 第 1 页 / 共 2 页
字号:
                      +1  267                           +1  268                           +1  269                           +1  270                           +1  271                           +1  272                           +1  273                           +1  274                           +1  275                           +1  276                           +1  277                           +1  278                           +1  279     
                      +1  280     
                      +1  281     
                      +1  282     ;---------------------------------
                      +1  283     ; MADDS_Q31(a, b, c, d, e, f)
                      +1  284     ;_________________________________
                      +1  285     ; (a,b) + c * d + e * f
                      +1  286     ; c, d, e, f are in Q15 format
                      +1  287     ; (a,b) result in Q2.30
                      +1  288     ; modified : a,b 
                      +1  289                           +1  290                           +1  291                           +1  292                           +1  293                           +1  294                           +1  295                           +1  296                           +1  297                           +1  298                           +1  299                           +1  300                           +1  301     
                      +1  302     
                      +1  303     ;---------------------------------
                      +1  304     ; LSHIFTS_Q31 a,b
                      +1  305     ;_________________________________
                      +1  306     ; Shift left by 4 and saturate a 32 bit signed number 
                      +1  307     ; (a, b) is a 32 bit signed number
                      +1  308     ; (a,b) = (a,b) << 4 and saturate
                      +1  309     ; modified : a, b
                      +1  310                           +1  311                           +1  312                           +1  313                           +1  314                           +1  315                           +1  316                           +1  317                           +1  318     A166 MACRO ASSEMBLER  _PI_ASM                                                             12/19/2003 11:51:12 PAGE     6

                      +1  319                           +1  320                           +1  321                           +1  322                           +1  323                           +1  324                           +1  325                           +1  326                           +1  327                           +1  328                           +1  329                           +1  330                           +1  331                           +1  332                           +1  333                           +1  334     
                      +1  335     
                      +1  336     ;*************************************************************************************
                                  ***
                      +1  337     ;                       END OF MACRO DEFINITION
                      +1  338     ;*************************************************************************************
                                  ***
                          339     
                          340     $MODINF (43)
                          341                      NAME _PI_ASM
                          342     
                          343               NCODE  CGROUP  ?PR?_PI_ASM
                          344     
                          345                      ASSUME  DPP3 : SYSTEM
                          346     
                          347                      REGDEF   R0 - R15
                          348     
--------                  349     ?PR?_PI_ASM  SECTION  CODE WORD 'NCODE'
                          350     
                          351     
                          352     ; #include "PI.h"
                          353     
                          354     
                          355     ;__________________________________________________________
                          356     ; Function name :
                          357     ;       PI_Controller
                          358     ;__________________
                          359     ; Prototype :
                          360     ;       void PI_Controller(TPI * PI, int NewInput, int * Result);
                          361     ;__________________
                          362     ; Inputs: 
                          363     ;       - PI structure
                          364     ;       - New input
                          365     ;__________________
                          366     ; Restriction :
                          367     ;       - the two coeficient must be bigger than 0x8001 and smaller 0x7FFF
                          368     ;__________________
                          369     ; Execute the PI controller
                          370     ;       NewError = SetValue - NewInput
                          371     ;       Integral = Integral + A0 * NewError + A1*Error
                          372     ;       Error = NewError
                          373     ;       if (High(Integral <<4)>Limit ) 
                          374     ;               *Result=Limit;
                          375     ;               else if (High(Integral <<4)<-Limit )
                          376     ;                       *Result=-Limit;
                          377     ;                       else
                          378     ;                       *Result=High(Integral << 4);
                          379     ; Return the PI output
                          380     ;__________________
                          381                                                     
                          382     ;__________________________________________________________
A166 MACRO ASSEMBLER  _PI_ASM                                                             12/19/2003 11:51:12 PAGE     7

                          383     
                          384             PI_Controller  PROC  NEAR
                          385             PUBLIC  PI_Controller
                          386     
00000000 9838             387             MOV     R3,[R8+]                        ; SetValue
00000002 9848             388             MOV     R4,[R8+]                        ; A0
00000004 9858             389             MOV     R5,[R8+]                        ; A1
00000006 9868             390             MOV     R6,[R8+]                        ; Limit
00000008 9818             391             MOV     R1,[R8+]                        ; Integral low
0000000A 98B8             392             MOV     R11,[R8+]                       ; Integral high
0000000C A8C8             393             MOV     R12,[R8]                        ; Error
                          394     
                          395             
0000000E 2039             396             SUB     R3,R9
00000010 5D06             397             JMPR    cc_NV,??NOSATURATION?0
                          398     ;Saturate
00000012 7D03             399             JMPR    cc_NN,??NEGATIVESATURATION?1            ; flag N not set => negative o
                                  verflow   
                          400     ??POSITIVESATURATION?2:
00000014 E6F3FF7F         401             MOV     R3,#0x7FFF
00000018 0D02             402             JMPR    cc_UC,??NOSATURATION?0
                          403     ??NEGATIVESATURATION?1:         ; flag N set => positive overflow       
0000001A E6F30080         404             MOV     R3,#0x8000
                          405     ??NOSATURATION?0:
                          406                             ; R3 = New error
                          407             
0000001E 0B43             408             MUL      R4, R3
                          409     ; No verification is done for (-1)*(-1)
                          410     ; at least one of the two operand must be bigger than 0x8001 and smaller 0x7FFF
                          411     
                          412             
00000020 02F10EFE         413             ADD      R1 ,MDL
00000024 12FB0CFE         414             ADDC    R11 ,MDH 
00000028 5D0A             415             JMPR    cc_NV,??NOSATURATION?3
                          416     ;Saturate
0000002A 7D05             417             JMPR    cc_NN,??NEGATIVESATURATION?4            ; flag N not set => negative o
                                  verflow   
                          418     ??POSITIVESATURATION?5:
0000002C E6FBFF7F         419             MOV     R11 ,#0x7FFF
00000030 F2F11EFF         420             MOV      R1 ,ONES
00000034 0D04             421             JMPR    cc_UC,??NOSATURATION?3
                          422     ??NEGATIVESATURATION?4:                                 ; flag N set => positive overf
                                  low       
00000036 E6FB0080         423             MOV     R11 ,#0x8000
0000003A F2F11CFF         424             MOV      R1 ,ZEROS
                          425     ??NOSATURATION?3:
                          426     
                          427     
0000003E 0B5C             428             MUL      R5, R12
                          429     ; No verification is done for (-1)*(-1)
                          430     ; at least one of the two operand must be bigger than 0x8001 and smaller 0x7FFF
                          431     
                          432             
00000040 02F10EFE         433             ADD      R1 ,MDL
00000044 12FB0CFE         434             ADDC    R11 ,MDH 
00000048 5D0A             435             JMPR    cc_NV,??NOSATURATION?6
                          436     ;Saturate
0000004A 7D05             437             JMPR    cc_NN,??NEGATIVESATURATION?7            ; flag N not set => negative o
                                  verflow   
                          438     ??POSITIVESATURATION?8:
0000004C E6FBFF7F         439             MOV     R11 ,#0x7FFF
00000050 F2F11EFF         440             MOV      R1 ,ONES
00000054 0D04             441             JMPR    cc_UC,??NOSATURATION?6
                          442     ??NEGATIVESATURATION?7:                                 ; flag N set => positive overf
                                  low       
00000056 E6FB0080         443             MOV     R11 ,#0x8000
A166 MACRO ASSEMBLER  _PI_ASM                                                             12/19/2003 11:51:12 PAGE     8

0000005A F2F11CFF         444             MOV      R1 ,ZEROS
                          445     ??NOSATURATION?6:
                          446     
                          447             ; (R11,R1) = Integral + A0 * NewError + A1*Error
                          448     
0000005E B838             449             MOV     [R8],R3
00000060 88B8             450             MOV     [-R8],R11
00000062 8818             451             MOV     [-R8],R1
                          452             
                          453             
00000064 0011             454             ADD     R1,R1
00000066 10BB             455             ADDC    R11,R11
00000068 4D0A             456             JMPR    cc_V,??SATURATION?9
0000006A 0011             457             ADD     R1,R1
0000006C 10BB             458             ADDC    R11,R11
0000006E 4D07             459             JMPR    cc_V,??SATURATION?9
00000070 0011             460             ADD     R1,R1
00000072 10BB             461             ADDC    R11,R11
00000074 4D04             462             JMPR    cc_V,??SATURATION?9
00000076 0011             463             ADD     R1,R1
00000078 10BB             464             ADDC    R11,R11
0000007A 4D01             465             JMPR    cc_V,??SATURATION?9
0000007C 0D0A             466             JMPR    cc_UC,??NOSATURATION?10
                          467     ??SATURATION?9:
0000007E 7D05             468             JMPR    cc_NN,??NEGATIVESATURATION?11           ; flag N not set => negative o
                                  verflow   
                          469     ??POSITIVESATURATION?12:
00000080 E6FBFF7F         470             MOV     R11,#0x7FFF
00000084 F2F11EFF         471             MOV     R1,ONES
00000088 0D04             472             JMPR    cc_UC,??NOSATURATION?10
                          473     ??NEGATIVESATURATION?11:                                        ; flag N set => positi
                                  ve overflow       
0000008A E6FB0080         474             MOV     R11,#0x8000
0000008E F2F11CFF         475             MOV     R1,ZEROS
                          476     ??NOSATURATION?10:
                          477     
                          478             
00000092 F01B             479             MOV     R1,R11
00000094 2016             480             SUB     R1,R6
00000096 DD07             481             JMPR    cc_SGE,??LIMITPOS?14
00000098 8160             482             NEG     R6
0000009A F01B             483             MOV     R1,R11
0000009C 2016             484             SUB     R1,R6
0000009E BD01             485             JMPR    cc_SLE,??LIMITNEG?13
000000A0 0D03             486             JMPR    cc_UC,??ENDLIMIT?15
                          487     ??LIMITNEG?13:
000000A2 F0B6             488             MOV     R11,R6
000000A4 0D01             489             JMPR    cc_UC,??ENDLIMIT?15
                          490     ??LIMITPOS?14:
000000A6 F0B6             491             MOV     R11,R6
                          492     ??ENDLIMIT?15:
                          493     
000000A8 B8BA             494             MOV     [R10],R11
000000AA CB00             495             RET     
                          496             PI_Controller  ENDP
                          497     
--------                  498     ?PR?_PI_ASM  ENDS
                          499     
                          500             END
A166 MACRO ASSEMBLER  _PI_ASM                                                             12/19/2003 11:51:12 PAGE     9

SYMBOL TABLE LISTING
------ ----- -------


N A M E                  TYPE   VALUE             I  ATTRIBUTES

??ENDLIMIT?15 . . . . .  NEAR   A8H               R  SEC=?PR?_PI_ASM
??LIMITNEG?13 . . . . .  NEAR   A2H               R  SEC=?PR?_PI_ASM
??LIMITPOS?14 . . . . .  NEAR   A6H               R  SEC=?PR?_PI_ASM
??NEGATIVESATURATION?1.  NEAR   1AH               R  SEC=?PR?_PI_ASM
??NEGATIVESATURATION?11  NEAR   8AH               R  SEC=?PR?_PI_ASM
??NEGATIVESATURATION?4.  NEAR   36H               R  SEC=?PR?_PI_ASM
??NEGATIVESATURATION?7.  NEAR   56H               R  SEC=?PR?_PI_ASM
??NOSATURATION?0. . . .  NEAR   1EH               R  SEC=?PR?_PI_ASM
??NOSATURATION?10 . . .  NEAR   92H               R  SEC=?PR?_PI_ASM
??NOSATURATION?3. . . .  NEAR   3EH               R  SEC=?PR?_PI_ASM
??NOSATURATION?6. . . .  NEAR   5EH               R  SEC=?PR?_PI_ASM
??POSITIVESATURATION?12  NEAR   80H               R  SEC=?PR?_PI_ASM
??POSITIVESATURATION?2.  NEAR   14H               R  SEC=?PR?_PI_ASM
??POSITIVESATURATION?5.  NEAR   2CH               R  SEC=?PR?_PI_ASM
??POSITIVESATURATION?8.  NEAR   4CH               R  SEC=?PR?_PI_ASM
??SATURATION?9. . . . .  NEAR   7EH               R  SEC=?PR?_PI_ASM
?PR?_PI_ASM . . . . . .  ----   ----              R  SECTION
DPP3. . . . . . . . . .  WORD   1FC0H             A  SFR
MDH . . . . . . . . . .  WORD   FE0CH             A  SFR
MDL . . . . . . . . . .  WORD   FE0EH             A  SFR
NCODE . . . . . . . . .  ----   ----                 GROUP
ONES. . . . . . . . . .  WORD   FF1EH             A  SFR
PI_Controller . . . . .  NEAR   0H                R  PUB SEC=?PR?_PI_ASM
ZEROS . . . . . . . . .  WORD   FF1CH             A  SFR
_PI_ASM . . . . . . . .  ----   ----                 


ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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