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