急!!!用过ad9833的请帮我看看这段代码有没有问题!!谢谢
/***********向AD9833写入控制字*************/void AD9833_Send_Word(unsigned int Data_In)
{
unsigned char i;
S_CLK=1;
FSYNC=0;
for(i=0;i<16;i++)
{
S_CLK=1;
SDATA=(bit)((Data_In & 0x8000)>>15);
S_CLK=0;
Data_In=Data_In<<1;
}
FSYNC=1;
S_CLK=0;
}
/******波形发生函数************/
//入口参数:频率Freq
// 形状:0(正弦波)1(三角波)3(方波)
void Wave_Generate(unsigned long Freq,unsigned char Shape)
{
unsigned long temp;
unsigned char k;
if(Freq>12000000) Freq=12000000;
switch(Shape)
{
case 0:Config_Data=0x2108;
Config_Data=0x2008; break;
case 1:Config_Data=0x210A;
Config_Data=0x200A; break;
case 2:Config_Data=0x2128;
Config_Data=0x202A; break;
default:Config_Data=0x2108;
Config_Data=0x2008;
}
temp=Freq*16.77;
Config_Data=temp&0x00003fff;
Config_Data=Config_Data;
Config_Data=(temp&0x0fffc000)>>14;
Config_Data=Config_Data;
Config_Data=Config_Data|0x4000;
Config_Data=Config_Data|0x4000;
Config_Data=Config_Data|0x8000;
Config_Data=Config_Data|0x8000;
Config_Data=0xc000;
Config_Data=0xe000;
for(k=0;k<8;k++)
{
AD9833_Send_Word(Config_Data);
}
} 帮不上你。
好奇地问下,Config_Data[]是送给谁的? //-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <C8051F120.h> // SFR declarations
#define tByte unsigned char
#define tWord unsigned int
#define tLong unsigned long
sbitFSYNC=P0^2;
sbitSCLK =P0^1;
sbitSDATA=P0^0;
sbitddd=P1^6;
tWord Config_Data;
voidWave_Generate(tLong,tByte);
//-----------------------------------------------------------------------------
void Oscillator_Init (void) //20MHz晶振内部倍频到100MHz
{
int i = 0;
SFRPAGE = CONFIG_PAGE;
OSCXCN = 0x67;
for (i = 0; i < 3000; i++);// Wait 1ms for initialization
while ((OSCXCN & 0x80) == 0);
PLL0FLT = 0x3F;
CLKSEL = 0x31;
OSCICN = 0x01;
}
//--------------------------------------------------------------------------
void Port_Init (void)
{
SFRPAGE = CONFIG_PAGE;
P0MDOUT = 0xFF;
P1MDOUT = 0xFF;
XBR2 = 0x40;
}
void AD9833_Send_Word(tWord Data_In)
{
tByte i;
SCLK=1;
FSYNC=0;
for(i=0;i<16;i++)
{
SCLK=1;
SDATA=(bit)((Data_In & 0x8000)>>15);
SCLK=0;
Data_In=Data_In<<1;
}
FSYNC=1;
SCLK=0;
}
//波形发生函数
//入口参数: 频率:Freq (<=12000000)
// 形状:0(正弦波),1(三角波),2(方波)
//默认: Fmclk=25MHz, 0相移,方波不分频.
voidWave_Generate(tLong Freq,tByte Shape)
{
tLong temp;
tByte k;
//if(Freq>23000000) Freq=23000000;
switch(Shape)
{
case 0: Config_Data=0x2108;
Config_Data=0x2008;
break;
case 1: Config_Data=0x210A;
Config_Data=0x200A;
break;
case 2: Config_Data=0x2128;
Config_Data=0x2028;
break;
default:Config_Data=0x2108;
Config_Data=0x2008;
}
//temp=Freq*10.73; //temp=Freq*(0x10000000/20000000);
temp=Freq*2.68435456;
Config_Data=temp&0x00003fff;
Config_Data=Config_Data;
Config_Data=(temp&0x0fffc000)>>14;
Config_Data=Config_Data;
Config_Data=Config_Data|0x4000;
Config_Data=Config_Data|0x4000;
Config_Data=Config_Data|0x8000;
Config_Data=Config_Data|0x8000;
Config_Data=0xC000;
Config_Data=0xE000;
for(k=0;k<8;k++)
{
AD9833_Send_Word(Config_Data);
}
} 我记着有个办法好像可以让程序有颜色呀,那位给帮忙指点一下
页:
[1]