📄 mcbsp1.c
字号:
#include "cpu_reg.h"
//#include "math"
int ADbuf[500];
unsigned int i=0;
extern int DA_wptr,DA_rptr,y;
extern int play_mode;
int record[4096];
int cop[4096];
unsigned int j=0;
float e=0;
void write_subreg1(unsigned int addr,unsigned int val);
unsigned int read_subreg1(unsigned int addr);
unsigned int read_subreg1(unsigned int addr)
{
*(SPSA1)=addr;
return(*SPSD1);
}
void write_subreg1(unsigned int addr,unsigned int val)
{
*(SPSA1)=addr;
*(SPSD1)=val;
}
void McBsp1_init()
{
write_subreg1(SPCR1,0);
write_subreg1(SPCR2,0);
write_subreg1(SPCR1,SPCR11_VAL);
write_subreg1(SPCR2,SPCR21_VAL);
write_subreg1(PCR,PCR1_VAL);
write_subreg1(RCR1,RCR11_VAL);
write_subreg1(RCR2,RCR21_VAL);
write_subreg1(XCR1,XCR11_VAL);
write_subreg1(XCR2,XCR21_VAL);
delay(10);
*(DXR11)=0;
/*now enable McBSP transmit and receive*/
write_subreg1(SPCR1,SPCR11_VAL|1);
write_subreg1(SPCR2,SPCR21_VAL|1);
delay(10);
*(IMR)|=0x0010; //开接收0中断
}
void delay(int k)
{
while(k--);
}
interrupt void codec_ch1_in() //接收0中断 BRINT0
{
int temp=0;
temp=(*DRR11); //放音
cop[j]=temp;
//e=temp*3.1;
//temp=e;
e=temp*2.4;
temp=e;
//temp=temp&0xf000;//数据格式为整形数据
//if(i%2==1) temp=temp<<2; //数据移位即是乘法运算
// temp=temp;//*1.2;//*(sin(6.28*i/0x7fff)+3);
//if(i%2==1) temp=temp&0x0000;//左右分时传输
//e=temp;
//e=e+1;
//temp=e;
record[j]=temp;
j++;
if(j>4095) j=0;
//record[i]=(*DRR11)&0x00ff;
//i++;
//if(i==1024)i=0;
//DA_rptr++;
//if(DA_rptr>=500)
// DA_rptr=0;
//ADbuf[DA_rptr]=temp; //保存录音数据
//if(play_mode==0)
// *DXR11=y; //警报声的幅值
//else
*DXR11=temp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -