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

📄 qsin.asm

📁 2808单相全桥spwm逆变工程.rar
💻 ASM
字号:
;***********************************************************************; 
;*                                                                     *;
;* File Name     : qsin.asm                                            *;
;*                                                                     *;
;* Originator    : Advanced Embeeded Control (AEC)                     *;
;*                 Texas Instruments Inc.                              *;
;*                                                                     *;
;* Description   : This file contain source code for fixed point SIN   *;
;*                function implemented using Tylor series              *;
;*                                                                     *;
;* Date          : 21/1/2002                                           *;
;***********************************************************************;
;* Tylor Series Approximation in the first quardrant:                  *;
;*                                                                     *;
;* sin(x) = 3.1406625*x+0.02026367*x^2-5.325196*x^3+0.5446778*x^4      *;
;* +1.800293*x^5, where 'x' is the normalized radians                  *;
;*                                                                     *;
;***********************************************************************;

                     
        .def _qsin  ;External ref

K5      .set 0x6480             ; Scaled to Q13
K4      .set 0x52FF             ; Scaled to Q20
K3      .set 0xAACC             ; Scaled to Q12
K2      .set 0x45B8             ; Scaled to Q15
K1      .set 0x7338             ; Scaled to Q14

_qsin:
        SETC    SXM,OVM         ; ACC=x
        MOV     ACC,AL<<16      ; AH='x', AL=0
        CLRC    TC  
        ABSTC   ACC             ; TC= sign(x), AH=abs(x)
        
        LSL     ACC,#1          ; Convert to first quadrant (0 to pi/2)                     
        ABS     ACC         
        SFR     ACC,#1  
      
        MOVL    XT,ACC          ; XT=x in Q31 and in first quardrant            

; Comment Next 2-instructions, if this works
        MPY     ACC,T,#K1   
        
;       MOV     AR5,#K1         ; AR5=K1    
;       MPY     ACC,T,AR5       ; ACC=K1*x in Q29 


        ADD     ACC,#K2<<14     ; ACC=K1*x+K2 in Q29
        
        QMPYL   ACC,XT,ACC      ; ACC=(K1*x+K2)*x in Q28
        ADD     AH,#K3          ; ACC=(K1*x+K2)*x+K3 in Q28

        QMPYL   ACC,XT,ACC      ; ACC=((K1*x+K2)*x+K3)*x in Q27
        ADD     ACC,#K4<<7      ; ACC=((K1*x+K2)*x+K3)*x+K4 in Q27
        
        QMPYL   ACC,XT,ACC      ; ACC=(((K1*x+K2)*x+K3)*x+K4)*x in Q26
        ADD     ACC,#K5<<13     ; ACC=(((K1*x+K2)*x+K3)*x+K4)*x+K5 in Q26
        QMPYL   ACC,XT,ACC      ; ACC=((((K1*x+K2)*x+K3)*x+K4)*x+K5)*x in Q25
        
        LSL     ACC,#6          ; in Q31            
        ABS     ACC             ; Saturate to 0x7fff
        NEGTC   ACC             ; ACC=-sin(x), if TC=1
        MOV     AL,AH
        CLRC 	OVM
        LRETR
       
   

⌨️ 快捷键说明

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