sine_app.asm

来自「Generation of a Sine Wave Using a TMS320」· 汇编 代码 · 共 81 行

ASM
81
字号
***************************************************
*
*           SineWave Generator
*
*
*    
***************************************************

***********************************************************
*	freq 	= 2*Desired F/Fs *(32768)
*	F		= Desired Frequency
*	Fs     = Sampling Frequency = 44100hz in this case
*********************************************************
FREQ1000    .set	1486 
FREQ1750    .set	2600 
FREQ2000    .set	2972    	
FREQ3000    .set	4458    	
FRAME_SIZE	.set 64    
		  	.mmregs
           	.include "cos256_tbl.inc"
           	.global COSINE_BUFFER
           	.global FREQ_BUFFER
           	.bss	TEMP,1  
		  	.bss	FREQ_BUFFER,128 
		  	.bss	COSINE_BUFFER,257
		    .bss	_FREQ_STEP,1
		    .bss	_INIT_PHASE,1
		    .def	FREQ  
STK		    .usect  "STACK",100
		    .mmregs
		    .sect   "CODE"
FREQ:	    SSBX		OVM
          	SSBX		SXM
          	SSBX		FRCT
          	NOP
          	NOP
            
            STM		#STK+100H,SP
;            STM		#001EH,PMST
            
           
            ST		#FREQ2000,*(_FREQ_STEP)  ;
            ST		#0,*(_INIT_PHASE)        ;
            STM		#FREQ_BUFFER,AR3         ;
            CALL	COPY_COS_TBL             ;
            CALL	_GEN_FREQ                 ;
LOOP:		B		LOOP                     ;
;**********************************************
;         SINEWAVE GENERATOR ROUTINE
;**********************************************          
_GEN_FREQ: STM       #FRAME_SIZE-1,BRC           ;
          RPTB      sine1-1
	    ;  STM       #COSINE_BUFFER,AR2  ;
		  LD        *(_FREQ_STEP),A     ;
          ADD       *(_INIT_PHASE),A    ;A=PRESENT PHASE
          STL       A,*(_INIT_PHASE)    ;SAVE PRESENT PHASE
          
          SUB       #4000H,A            ;SUB PI/2 FOR SINE
          ABS       A                   ;Acc CONTAINS THE OFFSET
          STL       A,*(TEMP)           ;
                                        ;
          LD		*(TEMP),9,A         ;
          STH		A,*(TEMP)           ;
          LD		*(TEMP),A           ;
          ABS		A                   ;
          ADD		#COSINE_BUFFER,A           ;
          STLM		A,AR2               ;
		  nop                           ;
		  nop                           ;
          LD		*AR2,A              ;
          STL		A,*AR3+             ;
                                        ;
sine1:    NOP                           ;
          RET                          ;
         
COPY_COS_TBL:
			STM		#COSINE_BUFFER,AR2
			RPT		#257-1
			MVPD	#COSOFF,*AR2+
			RET
			

⌨️ 快捷键说明

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