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

📄 tgasm.s54

📁 Express DSP compliant C55x DTMF detector software is proposed in two versions: one with a 5 ms frame
💻 S54
字号:
*------------------------------------------------------------------------*
*                                                                         *
*   THIS IS AN UNPUBLISHED WORK CONTAINING CONFIDENTIAL AND PROPRIETARY   *
*   INFORMATION.  IF PUBLICATION OCCURS, THE FOLLOWING NOTICE APPLIES:    *
*      "COPYRIGHT 2001 MIKET DSP SOLUTIONS, ALL RIGHTS RESERVED"          *
*                                                                         *
*-------------------------------------------------------------------------*
    .mmregs
	
; keep as in tg.h	
TG_FR_SZ	 .equ (40)
	
   	.sect ".tg_data"              
    .include "tgsin.h54"
    .text
    .if 0
    */

#include "tg.h"
#include "tgsin.cc"

/*--------------------- local defs ----------------------------------------*/ 
/*--------------------- public vars ---------------------------------------*/
/*--------------------- local vars ----------------------------------------*/
/*--------------------- local functions -----------------------------------*/
/*--------------------- public  functions ---------------------------------*/
/*-------------------------------------------------------------------------*/
void                        tg_add_sine2C
/*-------------------------------------------------------------------------*/
(
TG_tTone *pTone,
S16 *pTo
)
{
    S32 ac0;
    S32 ac1;
    S32 ac2;
    S32 ac3 = pTone->sPhase;
    S16 t0, t1;

    int k;

    for (k = 0; k < TG_FR_SZ/2; k++)
    {
        ac3 = ac3 + pTone->sFreq;
        ac2 = ac3 >> 8;
        t0  = (S16)(ac2 & 0xff);

        ac3 = ac3 + pTone->sFreq;
        ac2 = ac3 >> 8;
        t1  = (S16)(ac2 & 0xff);

        ac0 = ((S32)*pTo++)<<15;
        ac1 = ((S32)*pTo--)<<15;

        ac0 = ac0 + TG_asSin[t0] * (S32) (pTone->sAmp);
        ac1 = ac1 + TG_asSin[t1] * (S32) (pTone->sAmp);

        *pTo++ = (S16)(ac0>>15);
        *pTo++ = (S16)(ac1>>15);
    }
    pTone->sPhase = (S16)ac3;
}
/*
    .endif
    .global _tg_add_sine2
_tg_add_sine2
;
; input:
;   a = pwave
;   sp(1) = pTo
;   
; assumes
;   TG_tTone is 
;       sPhase  (offset 0)
;       sAmp    (offset 1)
;       sFreq   (offset 2)
;
    stlm	a, ar2
    ssbx	frct
    ssbx	sxm
    mvdk	*sp(1), ar3
    mvdk	*ar2+, ar4;                      ; load initial phase
    ld  	*ar2+, t;                        ; load amplitude
    mvdk	*ar2-, ar0						 ; load frequency

    stm 	#(TG_FR_SZ-1), brc;
    rptb	L055-1
    	mar		*ar4+0
    	nop
    	nop
        ldm     ar4, a
        ld      a, -8, a
        add		#_TG_asSin, a
        stlm    a, ar5
        nop
        nop
        mpy     *ar5, a
        stl     b, *ar3+
L055
	mar		*ar2-
	mvkd	ar4, *ar2
	rsbx	frct
	ret
*/

⌨️ 快捷键说明

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