📄 evmdac.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 + -