找回密码
 注册
搜索
查看: 555|回复: 2

[讨论] 求助,AD4106控制程序

[复制链接]
发表于 2006-10-27 13:36:38 | 显示全部楼层 |阅读模式
各位大虾帮帮忙,我用51控制PLL AD4106的程序为什么老是控制不了,不懂了.....谁用过的能帮我看看么

//ODU
//*****************************
//***    L BAND PLL    ***
//*** ODU C  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&lt;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&lt;8 ; i++ )   //发8位
{
  DATA = (bit)( I_data &amp; 0x80) ; //置DATA为最高位和1与的结果
  I_data = I_data &lt;&lt; 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 &lt;&lt; 3 ; //I_data左移1位
// send 8 bit data
for ( i=0 ; i&lt;5 ; i++ )   //发8位
{
  DATA = (bit)( I_data &amp; 0x80) ; //置DATA为最高位和1与的结果
  I_data = I_data &lt;&lt; 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();
}
}

}
发表于 2006-10-27 17:16:20 | 显示全部楼层
锁相环我没做过,有经验的同志帮忙看一下哈
点评回复

使用道具 举报

发表于 2006-10-27 17:45:57 | 显示全部楼层
1.你的时钟发送是不是应该延时长一点,太快了,估计接收有困难。
2.你的置数顺序应该要和datasheet上说的一样,一般是有置数顺序要求的。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-18 17:47 , Processed in 0.075519 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表