📄 9851.c
字号:
#include<regx51.h>
#include <intrins.h>
#include <AD9851.h>
sbit RST_AD9851= P3^0;
//长延时
/******
void Delay80Ms(unsigned int k)
{
unsigned int j;
while(k--)
{
j=7269;
while(j--);
}
}
*////////
sbit FQ_UD_AD9851=P3^2;
sbit W_CLK_AD9851=P3^1;
//======================
unsigned long int freq = 0;
unsigned long int freq1=0;
unsigned long int freq2=0;
//unsigned char Control_AD9851 = 0x09; // Phase0 ,power down mode and 6 REFCLK Multiplier enable
//unsigned char Control_AD9851 = 0x00; // Phase0 ,power on mode and 6 REFCLK Multiplier disable
unsigned char Control_AD9851 = 0x01; // Phase0 ,power on mode and 6 REFCLK Multiplier enable
unsigned char W4=0X0e;
unsigned char W3=0X38;
unsigned char W2=0Xe3;
unsigned char W1=0X8e;
unsigned char W5;
unsigned char W6;
unsigned char W7;
unsigned char W8;
void Parallel2Serial_AD9851(void)
{ FQ_UD_AD9851=0;
W_CLK_AD9851=0;
P1=Control_AD9851; //写入控制字
W_CLK_AD9851=1;
W_CLK_AD9851=0;
P1=W1; // P0=W8; //先发高位
W_CLK_AD9851=1;
W_CLK_AD9851=0;
P1=W2; //P0=W7;
W_CLK_AD9851=1;
W_CLK_AD9851=0;
P1=W3; // P0=W6;
W_CLK_AD9851=1;
W_CLK_AD9851=0;
P1=W4;//P0=W5;
W_CLK_AD9851=1;
W_CLK_AD9851=0;
FQ_UD_AD9851=1;
FQ_UD_AD9851=0;
}
void Set_Freq(float Freqency)
{
unsigned char i;
//freq= (unsigned long int)(23.86092942*Freqency); // SYSCLK = 180 MHz
// freq= (unsigned long int)(23.86115*Freqency); // SYSCLK = 180 MHz
freq= (unsigned long int)(28.6331153*Freqency); // SYSCLK = 150 MHz
// freq=200;
// freq2=200;
/* for(i=0;i<32;i++)
{
if(freq&0x0001)
{
if(i==0) freq1=freq1+1;
freq1=(freq1+1)<<1;
freq=freq>>1;
}
else
{
if(i==0) freq1=0;
freq1=freq1<<1;
freq=freq>>1;
}
} */
freq1=freq|(freq&0x01);
for(i=0;i<32;i++)
{
freq1=freq1<<1; //左移一位
freq=freq>>1;
freq1=freq1|(freq&0x01);
}
//把freq中的高位放到freq1的低位
W1=(unsigned char)freq1&0xff;
freq1=freq1>>8;
// W5=(unsigned char)freq2&0xff;
// freq2=freq2>>8;
W2=(unsigned char)freq1&0xff;
freq1=freq1>>8;
// W6=(unsigned char)freq2&0xff;
// freq2=freq2>>8;
W3=(unsigned char)freq1&0xff;
freq1=freq1>>8;
// W7=(unsigned char)freq2&0xff;
// freq2=freq2>>8;
W4=(unsigned char)freq1&0xff;
// W8=(unsigned char)freq2&0xff;
Parallel2Serial_AD9851();
}
void main(void)
{
RST_AD9851=1;
RST_AD9851=1;
RST_AD9851=0;
Set_Freq(8000000);//发送的频率
while(1)
{
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -