|
发表于 2011-8-11 18:10:43
|
显示全部楼层
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
sbit wr=P2^0;
sbit a0=P2^1;
sbit a1=P2^2;
sbit a2=P2^3;
sbit a3=P2^4;
sbit d0=P2^5;
sbit d1=P2^6;
void del(char v)
{
while(v--);
}
address_262(uchar x)
{
x=(x&0x0f);
if((x&0x01)==0x01)a0=1;
else a0=0;
if((x&0x02)==0x02)a1=1;
else a1=0;
if((x&0x04)==0x04)a2=1;
else a2=0;
if((x&0x08)==0x08)a3=1;
else a3=0;
}
data_262(uchar x)
{
x=(x&0x03);
if(x&0x01)d0=1;
else d0=0;
if((x&0x02)==0x02)d1=1;
else d1=0;
}
send_data_262(uchar x,uchar y)//先地址,后数据
{
wr=1;
address_262(x);
del(2);
wr=0;
del(2);
data_262(y);
wr=1;
}
//函数功能: 设定max262的滤波器的工作模式
work_mod_262(uchar x,uchar y)//x表示工作模式(0--3),y表示哪个滤波器,滤波器0或者滤波器1
{
x=(x&0x03);
y=(y&0x01);
send_data_262((0x00+y*0x08),x);
}
set_fre_262(uchar x,uchar y)//x输入频率,y表示哪个滤波器,滤波器0或者滤波器1
{
uchar temp;
y=(y&0x01);
temp=(x&0x03);
send_data_262((0x01+y*0x08),temp);
temp=((x&0x0c)>>2);
send_data_262((0x02+y*0x08),temp);
temp=((x&0x30)>>4);
send_data_262((0x03+y*0x08),temp);
}
set_q_262(uchar x,uchar y)//x输入Q值,y表示哪个滤波器,滤波器0或者滤波器1
{
uchar temp;
y=(y&0x01);
temp=x&0x03;
send_data_262((0x04+y*0x08),temp);
temp=((x&0x0c)>>2);
send_data_262((0x05+y*0x08),temp);
temp=((x&0x30)>>4);
send_data_262((0x06+y*0x08),temp);
temp=((x&0x40)>>6);
send_data_262((0x07+y*0x08),temp);
}
main()
{
//uchar temp=2,y=1;
work_mod_262(0,0); //1
set_fre_262(24,0); //32
set_q_262(64,0); //64
//send_data_262((0x07+y*0x08),temp);
//data_262(2);
//work_mod_262(1,0);
//work_mod_262(0,1); //1
//set_fre_262(6,1); //32
//set_q_262(21,1);
while(1);
} |
|