📄 dtmf_enc.c
字号:
/* In general:
*******************************************************
* DEQ: y(n) = 2*cos(2pi*f/fs)*y(n-1) - y(n-2) *
* I.C.: y(-1) = 0 *
* y(-2) = -A*sin(2pi*f/fs) *
* where A = desired amplitude of sine wave *
* f = desired frequency of sine wave *
* fs = sampling frequency 16K *
* *
* Example: *
* .word cos(2pi*f/fs)*32768 ;coefficient*
* .word 0 ;y(-1) *
* .word -A*sin(2pi*f/fs)*32768 ;y(-2) *
* *
*******************************************************
*/
#define MCBSP1_ADDR 0x0049;
#define MCBSP1_DRR *(volatile unsigned int *)(MCBSP1_ADDR+0x00);
#define MCBSP1_DXR *(volatile unsigned int *)(MCBSP1_ADDR+0x02);
#define MCBSP1_SPCR *(volatile unsigned int *)(MCBSP1_ADDR+0x04);
#define MCBSP1_RCR *(volatile unsigned int *)(MCBSP1_ADDR+0x06);
#define MCBSP1_XCR *(volatile unsigned int *)(MCBSP1_ADDR+0x08);
#define MCBSP1_SRGR *(volatile unsigned int *)(MCBSP1_ADDR+0x0A);
#define MCBSP1_MCR *(volatile unsigned int *)(MCBSP1_ADDR+0x0B);
#define MCBSP1_RCER *(volatile unsigned int *)(MCBSP1_ADDR+0x0C);
#define MCBSP1_XCER *(volatile unsigned int *)(MCBSP1_ADDR+0x0D);
#define MCBSP1_PCR *(volatile unsigned int *)(MCBSP1_ADDR+0x0E);
int TblTone[24]={27978,0,-17056,489,0,-152,484,0,-168,477,0,-185,455,0,-234,443,0,-256,428,0,-297,410,0,-306};
DTMF_enc()
{
int i,j;
long m;
int *pTblTone;
pTblTone=TblTone;
MCBSP1_PCR=0xffef;
for(;;)
{
i=*pTblTone;
m=((long)*pTblTone)*((long)*(pTblTone+1));
j=(int)(m>>15);
i=j*2-*(pTblTone+2);
*(pTblTone+2)=*(pTblTone+1);
*(pTblTone+1)=i;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -