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

📄 pll.c

📁 ADF4118选带控制程序
💻 C
字号:
#include "c8051f410.h"
#include "main.h"


/*地定义与单片机的接口管脚*/

//第一版管脚定义
/*
sbit    PLL_LE   = P0^3;
sbit    PLL_CLK  = P0^7;
sbit    PLL_DATA = P0^6;
sbit    PLL_MUX  = P0^2;
*/
//第二版管脚定义

sbit    PLL_LE   = P0^2;
sbit    PLL_CLK  = P0^7;
sbit    PLL_DATA = P0^3;
sbit    PLL_MUX  = P0^1;


/****************函数声明*********************/
void send_data(unsigned long PLL_REGG);
void PREPARE_ADF4118_PLL_DATA(unsigned long freqq,unsigned long *AB_REG);
void set_pll_freq( void);

extern unsigned long  set_freq;
/*********************************************/
//设置PLL频率
//芯片:ADF4118
//*******************************************/
void set_pll_freq( void )
{
   unsigned char xdata temp;
   unsigned long xdata PLL_REG[3]={0x0093,0x0200,0x0000};//PDF为100KHz  晶振=12.8MHz
   unsigned long xdata *PLL_point;
   PLL_point = &PLL_REG;

   PREPARE_ADF4118_PLL_DATA( set_freq,(PLL_point+2) );
   
   for( temp = 0; temp < 3; temp++)
      {
         PLL_LE = 0;
         send_data(PLL_REG[temp]);
         PLL_LE = 1;
         PLL_LE = 0;
      }
}
/*******************************************/
//PLL send data:向PLL发送数据
//芯片:ADF4118
/*******************************************/
void send_data(unsigned long PLL_REGG)
{
	unsigned char i;
	for (i=0;i<21;i++)
	{
		PLL_CLK = 1;
		if ((PLL_REGG & 0X100000) ==0)
		{
			PLL_DATA = 0;
		}
		else
		{
			PLL_DATA = 1;
		}
		PLL_CLK = 0;
		PLL_REGG = PLL_REGG << 1;
	}
	PLL_CLK = 1;
}

/*************************************/
//PLL data prepare:准备向PLL发送的数据
//芯片:ADF4118
/*************************************/
void PREPARE_ADF4118_PLL_DATA(unsigned long freqq,unsigned long *AB_REG)
{
	unsigned long B;
	unsigned int A;
    
	B = freqq >>5;		//除以 P = 32;
	A = freqq % 32;		//取余 P = 32;
	A = A << 2;
	A = A & 0x7c;//0111 1100
	B = B <<7;
	B = B & 0xfff80;//1111 1111 1111 1000 0000
	*AB_REG= 0x1;
	*AB_REG= A + B +*AB_REG;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -