📄 lmx1501.c
字号:
#include <AT89X52.H>
#include <MAIN.H>
#include <PORT.H>
#include <LMX1501.H>
//#include <lcd_1602.h>
#define ref_cy 12800 // 10240 or 12800
#define bj 25 //设置步进为25K
void Init_LMX1501(void)
{
LMX1501_LE = 0;
LMX1501_CLK = 0;
}
//****************************
void DELAY1(void)
{}
//*********************************
void PLL_1501(long int pl)
{
unsigned int pllnt,plln,pllr;
unsigned char plla;
unsigned char i;
pllr=ref_cy/bj; //晶体参考频率计数器 8~16383
pllnt=pl/bj; //工作频率除步进,总计数值
plln=pllnt/128; //
plla=pllnt%128; //
//发送参考分频寄存器
LMX1501_DATA=0; //发送前置分频值时 64=1 128=0
LMX1501_CLK=1;
DELAY1();
LMX1501_CLK=0;
i=14;
do //发送R (14位)
{
LMX1501_DATA=(pllr&0x2000);
LMX1501_CLK=1;
DELAY1();
LMX1501_CLK=0;
pllr<<=1;
}while(--i!=0);
LMX1501_DATA=1; //发送控制码,当为参考分频值时 CONTROL=1
LMX1501_CLK=1;
DELAY1();
LMX1501_CLK=0; //LCD=0x6800;
LMX1501_LE = 1;
DELAY1();
LMX1501_LE = 0;
//发送分频寄存器
i=11;
do //发送N (11位)
{
LMX1501_DATA=(plln&0x400);//0100 0000 0000
LMX1501_CLK=1;
DELAY1();
LMX1501_CLK=0;
plln<<=1;
}while(--i!=0);
i=7;
do //发送A (7位)
{
LMX1501_DATA=(plla&0x40);
LMX1501_CLK=1;
DELAY1();
LMX1501_CLK=0;
plla<<=1;
}while(--i!=0);
LMX1501_DATA=0; //发送控制码,当为分频值时 CONTROL=0
LMX1501_CLK=1;
DELAY1();
LMX1501_CLK=0;
LMX1501_LE = 1;
DELAY1();
LMX1501_LE = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -