📄 main1.c
字号:
#include "DSP28_Device.h"
Uint16 volume;
int ADbuf[500];
int DA_wptr,DA_rptr,y;
int play_mode;//模式选择,录音还是放音。为0是连续放音,警报声;选1是边录音边放。
unsigned int * SIAdd = (unsigned int *) 0x4600;
//bit0->CS bit1->Data bit2->SCLK
void main(void)
{
Uint16 temp,i;
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE矢量表*/
InitPieVectTable();
InitPeripherals();
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;
* SIAdd=0x0001;
while(1)
{
for(temp=30000;temp>0;temp-=100)
{
for(i=0;i<2;i++)
{
y=20000;
delay(temp);
y=-20000;
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -