?? 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 + -