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 + -
显示快捷键?