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

📄 evmdac.asm

📁 TI 的DSP2407A的无速度传感器永磁同步电机FOC控制程序
💻 ASM
字号:
;=====================================================================================================================
; File name:        EVMDAC.ASM                     
;                    
; Originator:	Digital Control Systems Group
;			Texas Instruments
; Description:                                   
; This file contains source for a basic function accessing a single argument.
;=====================================================================================
; History:
;-------------------------------------------------------------------------------------
; 9-15-2000	Release	Rev 1.00
;=====================================================================================================================
; Applicability: F240,F241,C242,F243,F24xx.  (Peripheral Independant).
;
;
;=====================================================================================================================
; Routine Name: Generic function.        Routine Type: C Callable
;
; Description:
;  
;  C prototype : int function(int p)
;=====================================================================================================================
                .def        _F24X_EVM_DAC_Update
;=====================================================================================================================
__function_framesize .set 0001h
;=====================================================================================================================
_F24X_EVM_DAC_Update:
                POPD       *+
                SAR        AR0,*+
                SAR        AR1,*
                LARK       AR0,__function_framesize
                LAR        AR0,*0+,AR0
;=====================================================================================================================
                SBRK       #3           ; Point AR0 to the first argument.
;---------------------------------------------------------------------------------------------------------------------
                LAR        AR2,*        ; get the argument in AR2.
;---------------------------------------------------------------------------------------------------------------------
                ADRK       #3           ; Restore AR3.
                                        ; ARP=AR0, AR0->FR1, AR2->EVMDAC
;---------------------------------------------------------------------------------------------------------------------
                MAR        *,AR2        ; ARP=AR2, AR0->FR1, AR2->EVMDAC.qptr0
;---------------------------------------------------------------------------------------------------------------------
                ADRK       #4           ; ARP=AR2, AR0->FR1, AR2->EVMDAC.scale
;---------------------------------------------------------------------------------------------------------------------
                LT         *,AR0        ; TREG=scale.
                                        ; ARP=AR0, AR0->FR1, AR2->EVMDAC.scale
;---------------------------------------------------------------------------------------------------------------------
                SPM        1            ; set appropriate product mode.
                                        ; ARP=AR0, AR0->FR1, AR2->EVMDAC.scale
;---------------------------------------------------------------------------------------------------------------------
                SAR        AR2,*        ; Store AR2 in FR0.
                                        ; ARP=AR0, AR0->FR1, AR2->EVMDAC.scale
;---------------------------------------------------------------------------------------------------------------------
                LAR        AR3,*,AR2    ; Get AR2 value in AR3.
                                        ; ARP=AR2, AR0->FR1, AR2->EVMDAC.scale,AR3->scale
;---------------------------------------------------------------------------------------------------------------------
                MAR         *-          ; ARP=AR2, AR0->FR1, AR2->EVMDAC.qptr3,AR3->scale
;---------------------------------------------------------------------------------------------------------------------
                LAR         AR4,*-,AR4  ; Get qptr3 in AR4.
                                        ; ARP=AR4, AR0->FR1, AR2->EVMDAC.qptr2,AR3->scale, AR4->*qptr3.
;---------------------------------------------------------------------------------------------------------------------
                MPY         *,AR3       ; Multiply TREG by *qptr3.
                                        ; ARP=AR3, AR0->FR1, AR2->EVMDAC.qptr2,AR3->scale, AR4->*qptr3.
;---------------------------------------------------------------------------------------------------------------------
                PAC                     ; Get PREG contents in ACCH (ACCH now contains a Q0).
                                        ; ARP=AR3, AR0->FR1, AR2->EVMDAC.qptr2,AR3->scale, AR4->*qptr3.
;---------------------------------------------------------------------------------------------------------------------
                ADDH    *,AR0           ; ACCH = (*qptr3 * scale ) + scale.
                                        ; ARP=AR0, AR0->FR1, AR2->EVMDAC.qptr2,AR3->scale, AR4->*qptr3.
;---------------------------------------------------------------------------------------------------------------------
                SACH    *               ; ARP=AR0, AR0->FR1, AR2->EVMDAC.qptr2,AR3->scale, AR4->*qptr3.
;---------------------------------------------------------------------------------------------------------------------
                OUT     *,PA3,AR2       ; Output this value to DAC channel 3.
                                        ; ARP=AR2, AR0->FR1, AR2->EVMDAC.qptr2,AR3->scale, AR4->*qptr3.
;---------------------------------------------------------------------------------------------------------------------
                LAR     AR4,*-,AR4      ; Get qptr2 in AR4.
                                        ; ARP=AR4, AR0->FR1, AR2->EVMDAC.qptr1,AR3->scale, AR4->*qptr2.
;---------------------------------------------------------------------------------------------------------------------
                MPY     *,AR3           ; Multiply TREG by *qptr2.
                                        ; ARP=AR3, AR0->FR1, AR2->EVMDAC.qptr1,AR3->scale, AR4->*qptr2.
;---------------------------------------------------------------------------------------------------------------------
                PAC                     ; Get PREG contents in ACCH (ACCH now contains a Q0).
                                        ; ARP=AR3, AR0->FR1, AR2->EVMDAC.qptr1,AR3->scale, AR4->*qptr2.
;---------------------------------------------------------------------------------------------------------------------
                ADDH    *,AR0           ; ACCH = (*qptr2 * scale ) + scale.
                                        ; ARP=AR0, AR0->FR1, AR2->EVMDAC.qptr1,AR3->scale, AR4->*qptr2.
;---------------------------------------------------------------------------------------------------------------------
                SACH    *               ; ARP=AR0, AR0->FR1, AR2->EVMDAC.qptr1,AR3->scale, AR4->*qptr2.
;---------------------------------------------------------------------------------------------------------------------
                OUT     *,PA2,AR2       ; Output this value to DAC channel 2.
                                        ; ARP=AR2, AR0->FR1, AR2->EVMDAC.qptr1,AR3->scale, AR4->*qptr2.
;---------------------------------------------------------------------------------------------------------------------
                LAR     AR4,*-,AR4      ; Get qptr1 in AR4.
                                        ; ARP=AR4, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr1.
;---------------------------------------------------------------------------------------------------------------------
                MPY     *,AR3           ; Multiply TREG by *qptr1.
                                        ; ARP=AR3, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr1.
;---------------------------------------------------------------------------------------------------------------------
                PAC                     ; Get PREG contents in ACCH (ACCH now contains a Q0).
                                        ; ARP=AR3, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr1.
;---------------------------------------------------------------------------------------------------------------------
                ADDH    *,AR0           ; ACCH = (*qptr1 * scale ) + scale.
                                        ; ARP=AR0, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr1.
;---------------------------------------------------------------------------------------------------------------------
                SACH    *               ; ARP=AR0, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr1.
;---------------------------------------------------------------------------------------------------------------------
                OUT     *,PA1,AR2       ; Output this value to DAC channel 1.
                                        ; ARP=AR2, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr1.
;---------------------------------------------------------------------------------------------------------------------
                LAR     AR4,*,AR4       ; Get qptr0 in AR4.
                                        ; ARP=AR4, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr0.
;---------------------------------------------------------------------------------------------------------------------
                MPY     *,AR3           ; Multiply TREG by *qptr1.
                                        ; ARP=AR3, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr0.
;---------------------------------------------------------------------------------------------------------------------
                PAC                     ; Get PREG contents in ACCH (ACCH now contains a Q0).
                                        ; ARP=AR3, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr0.
;---------------------------------------------------------------------------------------------------------------------
                ADDH    *,AR0           ; ACCH = (*qptr1 * scale ) + scale.
                                        ; ARP=AR0, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr0.
;---------------------------------------------------------------------------------------------------------------------
                SACH    *               ; ARP=AR0, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr0.
;---------------------------------------------------------------------------------------------------------------------
                OUT     *,PA0           ; Output this value to DAC channel 0.
                                        ; ARP=AR0, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr0.
;---------------------------------------------------------------------------------------------------------------------
                OUT     *,PA4,AR1       ; Output same to DAC latch.
                                        ; ARP=AR1, AR0->FR1, AR2->EVMDAC.qptr0,AR3->scale, AR4->*qptr0.
;---------------------------------------------------------------------------------------------------------------------
                SPM        0            ; restore product mode.
;--------------------------------------------------------------------------------
__function_exit:
                SBRK        #(__function_framesize+1)
                LAR        AR0,*-
                PSHD        *
                RET


⌨️ 快捷键说明

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