?? ad9851.c
字號:
//------------------------------------AD9851---------------------------------------
#include "REG51.h"
sbit M_DATA=P1^0;
sbit M_CLK=P1^1;
sbit M_UD=P1^2;
sbit M_RESET=P1^3;
unsigned int Phase_Ctrl_Word = 0x0000;
unsigned int Order_Ctrl_Word = 0x0001;
/*************************************************************************************/
void Write_AD9851(unsigned long int Freq_Ctrl_Word)
{
unsigned long int mask = 0x00000001;
unsigned int i;
M_UD=0;
for(i = 0;i < 32;i++) //寫頻率
{
M_CLK=0;
if(Freq_Ctrl_Word & mask)
{
M_DATA=1;
}
else
{
M_DATA=0;
}
M_CLK=1;
mask=mask<<1;
}
mask = 0x0001;
for(i = 0;i < 3;i++) //寫3位控制字,
{
M_CLK=0;
if(Order_Ctrl_Word & mask)
{
M_DATA=1;
}
else
{
M_DATA=0;
}
M_CLK=1;
mask = mask << 1;
}
mask = 0x0001;
for(i = 0;i < 5;i++) //寫相位控制字
{
M_CLK=0;
if(Phase_Ctrl_Word & mask)
{
M_DATA=1;
}
else
{
M_DATA=0;
}
M_CLK=1;
mask = mask << 1;
}
M_UD=1;
}
/**********************************************************************************/
void Write_freq(unsigned long int freq)
{
unsigned long int dds;
dds= 42.94967296*freq; //32位=2^32/clock*f ,用的是100M的有源震蕩器
Write_AD9851(dds);
}
/****************************************************************************************/
main()
{
M_RESET=0; //初始化:注意,本程序用串行方式進行數據傳輸,D0,D1接高電平,D2接低電平
M_RESET=1; //就省去了開始要用并行方式送控制字:00000011
M_RESET=0;
M_CLK=0;
M_UD=0;
M_CLK=1;
M_CLK=0;
M_UD=1;
M_UD=0;
Write_freq(8000000);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -