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

📄 svgen_dq.asm

📁 变频器程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
                SUB     *+      ; ACC = 1-t1.
                                ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                SUB     *-,AR2  ; ACC = 1-t1=t2.
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                SFR             ; ACC = (1-t1=t2)/2.
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                ADRK    #2      ; ARP=AR2. AR0->FR1 AR2->tc AR3->FR3.
;--------------------------------------------------------------------------------
                SACL    *-,AR3  ; Store tc
                                ; ARP=AR3. AR0->FR1 AR2->tb AR3->FR3.
;--------------------------------------------------------------------------------
                ADD     *+,AR2  ; ACC = tc + t1
                                ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
                SACL    *-,AR3  ; Store tb = tc + t1.
                                ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                ADD     *,AR2   ; ACC = tb + t2.
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                SACL    *+      ; Store ta.
                                ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
                B       SV_POST_PROCESS
                                ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
; Sector Subroutine #5. On arrival : 
;                                 ARP=AR0. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SECTOR_SR5:     SBRK    #2      ; ARP=AR0. AR0->FR0 AR2->ta AR3->FR3.

                LACC    *+,AR3  ; ACC = X
                                ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                SACL    *+,AR0  ; Store t1 = X. ( FR3 = t1.)
                  ;      ^      ; ARP=AR0. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                LACC    *,AR3   ; ACC = Y.
                                ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                NEG             ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                SACL    *-      ; Store t2 = -Y. ( FR4 = t2.)
                                ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                LACC    #7fffh  ; ACCL= 1 (Q15).
                                ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                SUB     *+      ; ACC = 1-t1.
                                ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                SUB     *-,AR2  ; ACC = 1-t1=t2.
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                SFR             ; ACC = (1-t1=t2)/2.
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------

                MAR     *+      ; AR2++. Now AR2 -> tb
                                ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR3.
;--------------------------------------------------------------------------------
                SACL    *+,AR3  ; Store tb
                                ; ARP=AR3. AR0->FR1 AR2->tc AR3->FR3.
;--------------------------------------------------------------------------------
                ADD     *+,AR2  ; ACC = tb + t1.
                                ; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
                SACL    *,AR3   ; Store tc = tb + t1.
                                ; ARP=AR3. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
                ADD     *,AR2   ; ACC = tc + t2.
                                ; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
                SBRK    #2      ; Point AR2 to ta.
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                SACL    *+      ; Store ta.
                                ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
                B       SV_POST_PROCESS
                                ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
; Sector Subroutine #6. On arrival : 
;                                 ARP=AR0. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SECTOR_SR6:     SBRK    #1      ; ARP=AR0. AR0->FR1 AR2->ta AR3->FR3.

                LACC    *+,AR3  ; ACC = Y
                                ; ARP=AR3. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                NEG             ; ARP=AR3. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                SACL    *+,AR0  ; Store t1 = -Y. ( FR3 = t1.)
                                ; ARP=AR0. AR0->FR2 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                LACC    *-,AR3  ; ACC = Z.
                                ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                NEG             ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                SACL    *-      ; Store t2 = -Z. ( FR4 = t2.)
                                ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                LACC    #7fffh  ; ACCL= 1 (Q15).
                                ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                SUB     *+      ; ACC = 1-t1.
                                ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                SUB     *-,AR2  ; ACC = 1-t1=t2.
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                SFR             ; ACC = (1-t1=t2)/2.
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
                ADRK     #2     ; AR2+=2. Now AR2 -> tc
                                ; ARP=AR2. AR0->FR1 AR2->tc AR3->FR3.
;--------------------------------------------------------------------------------
                SACL    *,AR3   ; Store tc
                                ; ARP=AR3. AR0->FR1 AR2->tc AR3->FR3.
;--------------------------------------------------------------------------------
                ADD     *+,AR2  ; ACC = tc + t1.
                                ; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
                SBRK        #2      ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
                SACL    *+,AR3  ; Store ta = tc + t1.
                                ; ARP=AR3. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
                ADD     *,AR2   ; ACC = ta + t2.
                                ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
                SACL    *       ; Store tb.
                                ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
                B       SV_POST_PROCESS
                                ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------


SV_POST_PROCESS: ; On arrival: ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.

                ; Multiply tb by 2 and subtract offset = 1/2. for ta,tb,tc.
;-------------------------------------------------------------------------------
                MAR     *-      ; AR2-- 
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;-------------------------------------------------------------------------------
                LACC    *       ; Get ta
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;-------------------------------------------------------------------------------
                SUB     #3FFFh  ; Subtract offset.
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;-------------------------------------------------------------------------------
                SACL    *+,1    ; Store (ta-0.5)*2
                                ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;-------------------------------------------------------------------------------
                LACC    *       ; Get tb
                                ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;-------------------------------------------------------------------------------
                SUB     #3FFFh  ; Subtract offset.
                                ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;-------------------------------------------------------------------------------
                SACL    *+,1    ; Store (tb-0.5)*2
                                ; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;-------------------------------------------------------------------------------
                LACC    *       ; Get tc
                                ; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;-------------------------------------------------------------------------------
                SUB     #3FFFh  ; Subtract offset.
                                ; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;-------------------------------------------------------------------------------
                SACL    *,1     ; Store (tc-0.5)*2
                                ; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;-------------------------------------------------------------------------------
DUMMY
;-------------------------------------------------------------------------------
__svgendq_exit:
                MAR     *,AR1   ; can be removed if this condition is met on
                                ; every path to this code.
                        

                SPM     0
                CLRC    OVM


                SBRK        #(__svgendq_framesize+1)
                LAR        AR0,*-
                PSHD        *
                RET

;-------------------------------------------------------------------------------
;SVPWM Sector routine jump table (Used to ref with BACC instruction
;-------------------------------------------------------------------------------
SECTOR_TABLE_BASE:

SR0     .word   SECTOR_SR0
SR1     .word   SECTOR_SR1
SR2     .word   SECTOR_SR2
SR3     .word   SECTOR_SR3
SR4     .word   SECTOR_SR4
SR5     .word   SECTOR_SR5
SR6     .word   SECTOR_SR6
SR7     .word   DUMMY


⌨️ 快捷键说明

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