⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于AVR单片机的AD9852的驱动程序
💻 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 + -