📄 main.c
字号:
#include <iom16v.h>
#include "AD9852.h"
//送入9852的数据缓冲区,初始化为控制寄存器值,使能PLL,4倍频,外部刷新
unsigned char AD9852_Data[]={0x10,0x44,0x00,0x60,0x00,0x00};
void delay_us(unsigned int us)
{
while (--us);
{
us++;
us--;
}
}
void AD9852_DataPost(unsigned char Addr, unsigned char *pDat, unsigned char DataLen)
{
unsigned char i=0;
AD9852_Set_IORESET();
asm("nop");
AD9852_Clr_IORESET();
i=Addr;
AD9852_ByteSend(i);
for (i=0;i<DataLen;i++)
{
AD9852_ByteSend(pDat[i]);
}
AD9852_Set_IOUD();
asm("nop");
AD9852_Clr_IOUD();
}
void AD9852_Init()
{
AD9852_CTRL_DDR |= ((0x01<<AD9852_IORESET)|(0x01<<AD9852_SCLK)|(0x01<<AD9852_MasterReset)|(0x01<<AD9852_CLKPOWER)|(0x01<<AD9852_IOUD)|(0x01<<AD9852_SDIO));
AD9852_CTRL_PORT &= (~((0x01<<AD9852_CLKPOWER)|(0x01<<AD9852_IOUD)));
AD9852_CTRL_PORT |= ((0x01<<AD9852_IORESET)|(0x01<<AD9852_SCLK)|(0x01<<AD9852_MasterReset));
delay_us(500);
AD9852_Clr_MasterReset(); //AD9852复位
asm("nop");
AD9852_Set_MasterReset();
asm("nop");
delay_us(10);
AD9852_Clr_MasterReset();
asm("nop");
AD9852_DataPost(0x07,AD9852_Data,4); //送入初始控制字
delay_us(1000);
AD9852_Set_CLKPOWER(); //启动晶振
}
int main ()
{
DDRC = 0xff;
PORTC = 0xff;
delay_us(2000);
delay_us(2000);
AD9852_Init(); //AD9852初始化
AD9852_DataPost(0x07,AD9852_Data,4); //送入初始控制字
delay_us(200);
AD9852_Data[0]=0x0f; //满幅
AD9852_Data[1]=0xff;
AD9852_DataPost(0x08,AD9852_Data,2);
delay_us(200);
AD9852_Data[0]=0x19; //10M
AD9852_Data[1]=0x99;
AD9852_Data[2]=0x99;
AD9852_Data[3]=0x99;
AD9852_Data[4]=0x99;
AD9852_Data[5]=0x99;
AD9852_DataPost(0x02,AD9852_Data,6);
delay_us(200);
while (1);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -