📄 pll.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 + -