📄 test18.c
字号:
#pragma CODE_SECTION(vect,"vect")
#include "math.h"
unsigned int *pmem=0;
#define PMST *(pmem+0x001D)
#define SWCR *(pmem+0x002B)
#define SWWSR *(pmem+0x0028)
#define BSCR *(pmem+0x0029)
#define IMR *(pmem+0x0000)
#define IFR *(pmem+0x0001)
#define pi 3.1415926
#define fs 200000 /*sample rate*/
#define f 1000 /*baseband frequency 500~20kHz*/
#define N fs/f
#define M 51 /*filter step*/
int Ac=1638;
int i,j,k;
float q;
float m[N];
float x1[N],x2[N];
float y[N+M-1];
float h[M],hd[M],w[M];
float out[N]; /*D/A input signal*/
void bpf(unsigned int n);
/*****************CPU initialization****************/
void cpu_init()
{
PMST=0x3fa0;
SWWSR=0x7fff;
SWCR=0x0000;
BSCR=0x0002;
IMR=0;
IFR=IFR;
}
main()
{
cpu_init();
for(i=0;i<N;i++)
{
q=(float)f/fs;
m[i]=(1.5*cos(2*pi*i*q)+1.5)*4095/5;
}
for(i=0;i<N;i++)
{
x1[i]=cos(2*pi*i*5/200);
x2[i]=cos(2*pi*i*15/200);
}
for(i=0;i<N;i++)
{
m[i]=m[i]+Ac;
y[i]=m[i]*x1[i];
y[i]=y[i]*x2[i];
}
bpf(M);
}
/****************band pass filter************/
void bpf(unsigned int n)
{
unsigned int a;
int b;
float wh=0.23,wl=0.17;
float l;
a=(n-1)/2;
for(i=0;i<n;i++)
{
w[i]=0.54-0.46*cos(2*pi*i/(n-1));
b=i-a;
if(i==a)
hd[i]=wh-wl;
else
{
l=(float)(sin(b*pi*wh)-sin(b*pi*wl));
hd[i]=l/(pi*b);
}
h[i]=w[i]*hd[i];
}
for(i=N;i<N+n-1;i++)
y[i]=y[i-N];
for(i=n-1;i<N+n-1;i++)
{
l=0;
for(j=0;j<n;j++)
l+=h[j]*y[i-j];
out[i-n+1]=l;
}
}
/************************************************/
void vect()
{
asm(" .ref _c_int00");
asm(" b _c_int00"); /* reset */
asm(" nop");
asm(" nop");
asm(" rete"); /* nmi */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* int0 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* int1 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* int2 */
asm(" nop"); /* tint0 */
asm(" nop");
asm(" nop");
asm(" rete"); /* brint0 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* bxint0 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* dmac0 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* tint1 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* int3 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* hpint */
asm(" nop");
asm(" nop");
asm(" rete"); /* brint1 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* bxint1 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* dmac4 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* dmac5 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -