test_aic23.c

来自「声卡芯片AIC23的测试程序」· C语言 代码 · 共 85 行

C
85
字号

#include "DSP28_Device.h"

Uint16	  	volume;
int ADbuf[500];
int DA_wptr,DA_rptr,y;
int play_mode;
int	AicRegs;

void main(void)
{
	Uint16	temp,i;
	/*初始化系统*/
	InitSysCtrl();

	/*关中断*/
	DINT;
	IER = 0x0000;
	IFR = 0x0000;
	/*初始化PIE*/
	InitPieCtrl();

	/*初始化PIE矢量表*/
	InitPieVectTable();	
	InitPeripherals();	
	AicRegs = 0xBF;
	Led8Reg = AicRegs;
    
	InitAic23();	
	delay(500);
    volume=108;
    WriteAic23(L_HEADPHONE_VOLUME,0x0180+volume);   
	
	EALLOW;	// This is needed to write to EALLOW protected registers
	PieVectTable.MRINTA = &ISRMcbspSend;
	EDIS;   // This is needed to disable write to EALLOW protected registers
	IER |= M_INT6;
	PieCtrl.PIEIER6.bit.INTx5 = 1;
	
    // Enable global Interrupts and higher priority real-time debug events:
	
	EINT;   // Enable Global interrupt INTM
	ERTM;	// Enable Global realtime interrupt DBGM
	play_mode = 0;
    while(1)
    	{	
    		for(temp=30000;temp>0;temp-=100)
    			{
       				for(i=0;i<2;i++)
      					{
         					y=5000;       
         					delay(temp);
         					y=-5000;       
         					delay(temp);
       					}
     			} 
     	}		 
}
interrupt void  ISRMcbspSend(void)
{
    int temp;
	PieCtrl.PIEACK.all = 0xFFFF;
	PieCtrl.PIEIFR6.bit.INTx5 = 0;
	ERTM;
        
      temp=McbspRegs.DRR1.all;
        
      DA_rptr++;
      if(DA_rptr>=500)
            DA_rptr=0;

      ADbuf[DA_rptr]=temp;   //保存录音数据
      
      if(play_mode==0)
        McbspRegs.DXR1.all = y;
                   //警报声的幅值
      else
        McbspRegs.DXR1.all = temp;        //放音
	
}


//========================== NO MORE ===========================

⌨️ 快捷键说明

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