📄 ad9958.txt
字号:
AD9858程序:12M晶体
#include<reg52.h>
#define PLL_M 8
#define Fclk (20*1000000*PLL_M)
#define uchar unsigned char
#define uint unsigned int
sbit OSK="P1"^5; //
sbit PS0=P1^6; //
sbit PS1=P1^7; //
void delay10ms()
{uchar i,j;
for(i=248;i>0;i--)
for(j=20;j>0;j--);
}
void AD9954_init()
{ IO_UPDATE=0;
RESET="0";
PWRDWNCTL="0";
IOSYNC="0";
OSK="0";
_CS=1;
SDIO="0";
}
void run()
{
IO_UPDATE=0;
IO_UPDATE=0;
IO_UPDATE=0;
IO_UPDATE=1;
IO_UPDATE=1;
IO_UPDATE=1;
}
void write_a_byte(uchar w_data)
{
uchar i;
for(i=0;i<8;i++)
{
SDIO=(w_data&0x80);
w_data<<=1;
SCLK="0";
SCLK="0";
SCLK="1";
SCLK="1";
}
}
//********************** 写控制字1 ****************************/
void write_CFR1(uchar w1,uchar w2,uchar w3,uchar w4)
{_CS=0;
_CS=0;
write_a_byte(0x00);
write_a_byte(w1);
write_a_byte(w2);
write_a_byte(w3);
write_a_byte(w4);
_CS=1;
_CS=1;
}
//********************** 写控制字2 ****************************/
//************* 主要确定PLL倍频控制字M*********************/
void write_CFR2(uchar w1,uchar w2,uchar w3)
{_CS=0;
_CS=0;
write_a_byte(0x01);
write_a_byte(w1);
write_a_byte(w2);
write_a_byte(w3);
_CS=1;
_CS=1;
}
//**********************写幅度转换字****************************/
void write_ASF(uchar w1,uchar w2)
{_CS=0;
_CS=0;
write_a_byte(0x02);
write_a_byte(w1);
write_a_byte(w2);
_CS=1;
_CS=1;
}
//**********************写幅度转换速度字****************************/
void write_ARR(uchar w1)
{_CS=0;
_CS=0;
write_a_byte(0x03);
write_a_byte(w1);
_CS=1;
_CS=1;
}
//**********************写频率转换字FTW1****************************/
void write_FTW0(uchar w1,uchar w2,uchar w3,uchar w4)
{_CS=0;
_CS=0;
write_a_byte(0x04);
write_a_byte(w1);
write_a_byte(w2);
write_a_byte(w3);
write_a_byte(w4);
_CS=1;
_CS=1;
}
//**********************写相位偏移字****************************/
void write_POW0(uchar w1,uchar w2)
{_CS=0;
_CS=0;
write_a_byte(0x05);
write_a_byte(w1);
write_a_byte(w2);
_CS=1;
}
//**********************写频率转换字2****************************
void write_FTW1(uchar w1,uchar w2,uchar w3,uchar w4)
{_CS=0;
_CS=0;
write_a_byte(0x06);
write_a_byte(w1);
write_a_byte(w2);
write_a_byte(w3);
write_a_byte(w4);
_CS=1;
}
main()
{
uint i;
for(i=200;i>0;i--)
delay10ms();
AD9954_init();
while(1)
{
for(i=200;i>0;i--)
delay10ms();
write_CFR1(0x02,0x00,0x02,0x00);
write_CFR2(0x00,0x02,0x30);// 写PLL_M=6, 必不可少
write_ASF(0x10,0x00);
write_FTW0(0x01,0x00,0x00,0x00);
write_POW0(0x00,0x01);
run();
while(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -