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

📄 init_065l_ezlab.asm

📁 电子元件资料-170M-pdf版.zip
💻 ASM
字号:
/***   INIT_065L_EZLAB.ASM   ****************************************************
*                                                                               *
*       ADSP-21065L EZ-LAB Initialization and Main Program Shell                *
*       Developed using the ADSP-21065L EZ-LAB Evaluation Platform              *
*                                                                               *
*                                                                               *
*                                               John Tomarakos                  *
*                                               ADI DSP Applications Group      *
*                                               Revision 1.1                    *
*                                               1/11/99                         *
*                                                                               *
*********************************************************************************/
	
/* ADSP-21065L System Register bit definitions */
#include 	"def21065L.h"
#include 	"new65Ldefs.h"
  
.GLOBAL		_main;
.GLOBAL		Init_DSP;
.EXTERN		Init_65L_SDRAM_Controller;
.EXTERN 	Blink_LEDs_Test;
.EXTERN		Program_I2Smode_SPORT0_Registers;
.EXTERN		Program_SPORT1_Registers;
.EXTERN		Program_DMA_Controller_SPT0;
.EXTERN		Program_DMA_Controller_SPT1;
.EXTERN		AD1819_Codec_Initialization;
.EXTERN		Init_Delay_Buffer;

/*---------------------------------------------------------------------------*/
.SEGMENT/dm dm_data;

.var sine4000[4000] = "sinetbl.dat";

.global audio_frame_timer; 
.var audio_frame_timer = 0;   /* 48kHz timer variable */

.endseg;

/*---------------------------------------------------------------------------*/

.segment /pm pm_code;

_main:	call Init_65L_SDRAM_Controller;		/* Initialize External Memory */
	call Program_SPORT1_Registers;			/* Initialize SPORT1 for codec communications */
	call Program_DMA_Controller_SPT1;		/* Start Serial Port 1 tx and rx DMA Transfers */
	call AD1819_Codec_Initialization;		/* Initialize & program AD1819 */
	call Program_I2Smode_SPORT0_Registers;	/* Initialize SPORT0 for I2S Mode */
	call Program_DMA_Controller_SPT0;		/* Set up I2S SPORT0 DMA transfers */

	/* call Init_Delay_Buffer; */
	call Init_DAGs;

	IRPTL = 0x00000000;						/* clear pending interrupts */
	bit set imask SPT1I;					/* start audio processing, reenable SPORT1 tx int */
	bit set imask SPR0I;					/* enable SPORT0 I2S rx interrupt */

	call Blink_LEDs_Test;					/* Are We Alive? */

wait_forever:
	call wait_flag1;
	bit tgl ustat1 0x3F;				/* toggle flag 4-9 LEDs */
	dm(IOSTAT)=ustat1; 
	jump wait_forever;


/* //////////////////////////////////////////////////////////////////////////////////////////// *
 *                                                                                              *
 *                                          Subroutines                                         *
 *                                                                                              *
 * //////////////////////////////////////////////////////////////////////////////////////////// */

wait_flag1:
	/* wait for flag 1 button press and release */			
	if flag1_in jump wait_flag1;        	/* wait for button press   */
release:
	if not flag1_in jump release;       	/* wait for button release */
	rts;


/*--------------------------------------------------------------------------------------*/
/* Note: This routine is first called at the Reset Vector in the Interrupt Vector Table */
/*--------------------------------------------------------------------------------------*/

Init_DSP:
	/* code to blink flag 4 */
	ustat1=0x3F;							/* flags 4 thru 9 are outputs for LEDs */
	dm(IOCTL)=ustat1;	
	bit set ustat1 0x3F;					/* toggle flag 4-9 LEDs */
	dm(IOSTAT)=ustat1;       				/* turn on all LEDs */
	bit clr mode2 FLG2O | FLG1O | FLG0O; 	/* flag 3, 2 & 0 inputs  */

	bit set mode2 IRQ1E | IRQ2E;			/* irqx edge sensitive 	*/
	bit clr mode2 IRQ0E;					/* keep irq1 to level sensitive for UART */
	IRPTL = 0x00000000;						/* clear pending interrupts */
	bit set mode1 IRPTEN | NESTM;   		/* enable global interrupts & nesting */	
	bit set imask IRQ0I | IRQ1I | IRQ2I;    /* irq1 and irq2 enabled, keep irq0 enabled for UART */	

	L0 = 0;
	L1 = 0;
	L2 = 0;
	L3 = 0;
	L4 = 0;
	L5 = 0;
	L6 = 0;
	L7 = 0;
	L8 = 0;
	L9 = 0;
	L10 = 0;
	L11 = 0;
	L12 = 0;
	L13 = 0;
	L14 = 0;
	L15 = 0;

	rts;


Init_DAGs:
	B1=sine4000;
	L1=4000;
	I1=sine4000;
	M1=50;

	B2=sine4000;
	L2=4000;
	I2=sine4000;
	M2=40;

	RTS;

.endseg;









⌨️ 快捷键说明

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