📄 clark.asm
字号:
;=====================================================================================
; File name: CLARK.ASM
;
; Originator: Digital Control Systems Group
; Texas Instruments
;
; Description:
; This file contains source for the CLARK transformation.
;=====================================================================================
; History:
;-------------------------------------------------------------------------------------
; 9-15-2000 Release Rev 1.00
;================================================================================
; Applicability: F240,F241,C242,F243,F24xx. (Peripheral Independant).
; Description:
; (a,b,c) -> (d,q) Transformation
; clark_d = a
; clark_q = (2 *clark_b + clark_a) / sqrt(3)
;
;
;================================================================================
; Routine Name: Generic function. Routine Type: C Callable
;
; Description:
;
; C prototype : int clark(void *in, void *out)
;================================================================================
.def _clark
;================================================================================
__clark_framesize .set 0001h
;================================================================================
_clark:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,__clark_framesize
LAR AR0,*0+,AR0
;================================================================================
SBRK #3 ; Point AR0 to the first argument.
;--------------------------------------------------------------------------------
LAR AR2,*- ; get the argument #1 in AR2.
; ARP=AR0, AR2->i/p s, AR0->arg #2.
;--------------------------------------------------------------------------------
LAR AR3,*+ ; get the argument #1 in AR2.
; ARP=AR0, AR0->arg #2, AR2->i/p's, AR3->o/p's.
;--------------------------------------------------------------------------------
ADRK #3 ; Restore AR0 to point to FR0.
; ARP=AR0, AR0->FR0, AR2->i/p's, AR3->o/p's.
;--------------------------------------------------------------------------------
SPM 1 ; Set SPM for Q15 multiplication
;--------------------------------------------------------------------------------
SETC SXM ; Sign extension mode on
;--------------------------------------------------------------------------------
MAR *,AR2 ; ARP=AR2, AR0->FR0, AR2->clark_a, AR3->clark_d
;--------------------------------------------------------------------------------
LACC *+,AR3 ; ACC= clark_a.
; ARP=AR3, AR0->FR0, AR2->clark_b, AR3->clark_d
;--------------------------------------------------------------------------------
SACL *+,AR2 ; Store Out_d=clark_a.
; ARP=AR2, AR0->FR0, AR2->clark_b, AR3->clark_q
;--------------------------------------------------------------------------------
SFR ; Acc=clark_a/2.
; ARP=AR2, AR0->FR0, AR2->clark_b, AR3->clark_q
;--------------------------------------------------------------------------------
ADD *,AR0 ; Acc=clark_a/2 + clark_b.
; ARP=AR2, AR0->FR0, AR2->clark_b, AR3->clark_q
;--------------------------------------------------------------------------------
SPLK #18830,* ;FR0 = 1/sqrt(3).
; ARP=AR2, AR0->FR0, AR2->clark_b, AR3->clark_q
;--------------------------------------------------------------------------------
LT * ; T= 1/sqrt(3).
; ARP=AR2, AR0->FR0, AR2->clark_b, AR3->clark_q
;--------------------------------------------------------------------------------
SACL * ; FR0=clark_a/2 + clark_b.
; ARP=AR2, AR0->FR0, AR2->clark_b, AR3->clark_q
;--------------------------------------------------------------------------------
MPY *,AR3 ; PREG = (clark_a/2 + clark_b)/sqrt(3).
; ARP=AR3, AR0->FR0, AR2->clark_b, AR3->clark_q
;--------------------------------------------------------------------------------
PAC
APAC ; ACC = (clark_a + 2 * clark_b)/sqrt(3).
; ARP=AR3, AR0->FR0, AR2->clark_b, AR3->clark_q
;--------------------------------------------------------------------------------
SACH *,AR1 ; Store clark_q.
; ARP=AR1, AR0->FR0, AR2->clark_b, AR3->clark_q
;--------------------------------------------------------------------------------
SPM 0
;--------------------------------------------------------------------------------
__clark_exit:
SBRK #(__clark_framesize+1)
LAR AR0,*-
PSHD *
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -