📄 max262.c
字号:
#define __MAX262_LIB__
#include "max262.h"
void delays(uint16 i)
{
while(i--);
}
void MAX262_Initial(void)
{Wr=1;}
void MAX262_Update(uchar ch,uchar mode,uchar f,uchar q)
{
uchar add,i,x;
if (ch==0) add=0; else add=32; //ch=0 for channel A, =1 for B
//Wr=0;
setport(add+mode-1);
//Wr=1;
dataup();
add=add+4;
for (i=0;i<3;i++)
{
x=add+(f-4*(f/4));
//Wr=0;
setport(x);
//Wr=1;
dataup();
f=f/4;
add=add+4;
}
for (i=0;i<4;i++)
{
x=add+(q-4*(q/4));
//Wr=0;
setport(x);
//Wr=1;
dataup();
q=q/4;
add=add+4;
}
setport(0xff);
}
uchar convf(uint32 fclk,uint32 f0)
{
return (uchar)((double)(fclk*2.0)/(double)f0/3.14-26);
}
uchar convq(float q)
{
return (uchar)(128.0-64.0/q);
}
void MAX262_Lowpass(uint32 fo)
{
AD9954_RESET();
AD9954_Initial(SingleToneMode);//LinearSweepMode,RamMode.SingleToneMode
AD9954_SETFRE(fo*160);
MAX262_Update(0,2,63,64);//Filter A,MOD2,Qmax=90
MAX262_Update(1,3,63,64);//Filter B,MOD3,Qmax=64
//Send9851(fo,0);
}
void MAX262_Highpass(uint32 fo)
{
AD9954_RESET();
AD9954_Initial(SingleToneMode);//LinearSweepMode,RamMode.SingleToneMode
AD9954_SETFRE(fo*160);
MAX262_Update(0,3,63,64);
MAX262_Update(1,3,63,64);
//Send9851(fo,0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -