打印

有没有用过ADF4118的高手

[复制链接]
1583|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
archy|  楼主 | 2007-4-14 21:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
adf, PLL, se, TI, ST
各位大侠,我才接触ADF4118。用51进行控制,但为什么我的程序老是控制不了频率呢?锁不住。那位大侠帮我看一下
//*****************************
//***    L BAND PLL    ***
//***    ODU C 4.9GHz 数字锁定 p=32  pd=10M
//*****************************
#include <intrins.h>
#include "math.h"
#include "absacc.h"
#include "reg51.h"

#define LOW 0
#define HIGH 1
#define TRUE     1
#define FALSE     ~TRUE

sbit CLK=P3^1;    //  时钟信号
sbit DATA=P3^0;   //  数据信号
sbit LE=P2^7;     //  使能信号 
sbit key=P2^6;     // 

unsigned char REFCOUNT1=0x00;
unsigned char REFCOUNT2=0x01;
unsigned char REFCOUNT3=0x00;
unsigned char NCOUNT1=0x00;
unsigned char NCOUNT2=0x17;
unsigned char NCOUNT3=0x9d;
unsigned char FUNCTION1=0x00;
unsigned char FUNCTION2=0x00;
unsigned char FUNCTION3=0x93;

void delay(void)
{
    unsigned int i;
    for(i=0;i<100;i++);
}
/****************************************************************************
*    Prototype: void I_start(void);
*    Function: start I2C,start condition:when SCL=HIGH,SDA from HIGH to LOW
*     I2C是一种芯片间的通讯方式,采用两条线进行通讯,一条数据线,一条时钟线。
****************************************************************************/
void PLL_start( void ) {
    
        
    LE=LOW;    //0,START

 }

/****************************************************************************
*    Prototype: void I_stop(void);
*    Function: stop I2C,stop condition:when SCL=HIGH,SDA from LOW to HIGH
****************************************************************************/
void PLL_stop( void ) {
    


    LE=HIGH;   //1,STOP

}


/****************************************************************************
*    Prototype: bit I_clock(void);
*    Function: Provide CLK for I2C BUS,return SDA when CLK is HIGH,
*              the function can be used in data transmitting and receiving 
****************************************************************************/
void PLL_clock( void ) {
    CLK = LOW ;    
    CLK = HIGH ;
    _nop_();
    CLK = LOW ;    

 }

/****************************************************************************
*    Prototype: bit I_send(byte I_data);
*    Function: send 8 bit data and ask an ACK signal
*              if receive ACK return 1(TRUE),or else return 0(FALSE) 
****************************************************************************/
void PLL_send( unsigned char I_data ) {
    unsigned char i ;
    // send 8 bit data
    for ( i=0 ; i<8 ; i++ )         //发8位
    {
        DATA = (bit)( I_data & 0x80) ;    //置DATA为最高位和1与的结果
        I_data = I_data << 1 ;    //I_data左移1位
        PLL_clock() ;    //发送DATA值
    }
}
/****************************************************************************
*    Prototype: bit I_send(byte I_data);
*    Function: send 8 bit data and ask an ACK signal
*              if receive ACK return 1(TRUE),or else return 0(FALSE) 
****************************************************************************/
void PLL_send5( unsigned char I_data ) {
    unsigned char i ;
    I_data = I_data << 3 ;    //I_data左移1位
    // send 8 bit data
    for ( i=0 ; i<5 ; i++ )         //发8位
    {
        DATA = (bit)( I_data & 0x80) ;    //置DATA为最高位和1与的结果
        I_data = I_data << 1 ;    //I_data左移1位
        PLL_clock() ;    //发送DATA值
    }
}



void main(){
unsigned    char    j;
PLL_start();
PLL_send5(FUNCTION1);
PLL_send(FUNCTION2);
PLL_send(FUNCTION3);
PLL_stop();

PLL_start();
PLL_send5(REFCOUNT1);
PLL_send(REFCOUNT2);
PLL_send(REFCOUNT3);
PLL_stop();

PLL_start();
PLL_send5(NCOUNT1);
PLL_send(NCOUNT2);
PLL_send(NCOUNT3);
PLL_stop();
key=0;
PLL_start();
while(1)
{
    delay();
    if(key)
    {
        PLL_start();
        PLL_send5(FUNCTION1);
        PLL_send(FUNCTION2);
        PLL_send(FUNCTION3);
        PLL_stop();

        PLL_start();
        PLL_send5(REFCOUNT1);
        PLL_send(REFCOUNT2);
        PLL_send(REFCOUNT3);
        PLL_stop();

        PLL_start();
        PLL_send5(NCOUNT1);
        PLL_send(NCOUNT2);
        PLL_send(NCOUNT3);
        PLL_stop();    
        PLL_start();
    }
}


}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

1

粉丝