xuquanrui 发表于 2009-8-6 22:40:43

AD9850没有输出波形,请大侠帮助

我用AVR写了一个信号发生器的简单程序,一开始测是有正确的波形输出的,但第二天测时发现什么都没有了,不知道为什么,大家帮帮忙。下面是我写的程序:

//-----------------------函数声明,变量定义------------------------------
#include <iom16v.h>
#include <macros.h>
#defineuchar unsigned char
#defineuintunsigned int


//-----------------------定义管脚--------------------------------------------------------
#definedata_OUT   PORTC
#defineSETB_FQUD    PORTD|=0x01;          //P3.0 AD9850信号更新申请
#defineCLR_FQUD   PORTD&=0xfe;
   
#defineSETB_WCLK    PORTD|=0x02;         //P3.1
#defineCLR_WCLK   PORTD&=0xfd;   

         
#defineSETB_SET   PORTD|=0x04;         //P3.2 写控制字时钟
#defineCLR_SET      PORTD&=0xfb;      
//-----------------------定义管脚----------------------------------------



unsigned char CON_word;
//Word    data    data    data    data    data    data    data    data
//W0   Phase b   Phase b3   Phase b2   Phase b1    Phase b0   Power Down   Control      Control
//W1    Freq-b31    Freq-b30    Freq-b29    Freq-b28    Freq-b27    Freq-b26    Freq-b25    Freq-b24
//W2    Freq-b23    Freq-b22    Freq-b21    Freq-b20    Freq-b19    Freq-b18    Freq-b17    Freq-b16
//W3    Freq-b15    Freq-b14    Freq-b13    Freq-b12    Freq-b11    Freq-b10    Freq-b9    Freq-b8
//W4    Freq-b7      Freq-b6      Freq-b5      Freq-b4      Freq-b3      Freq-b2      
//--------------------------------------------------------------------------------------------------
// 函数名称: delay

//--------------------------------------------------------------------------------------------------
void delay(unsignedint N)   
{
int i;
for(i=0;i<N;i++);
}
//--------------------------------------------------------------------------------------------------
// 函数名称: WRITE_AD9850
// 函数功能: 将控制字写入AD9850 ,频率的转换
//--------------------------------------------------------------------------------------------------
void WRITE_AD9850(long value_Freq)
{   
   unsigned char i;        
   long f;
   unsigned char L4,L3,L2,L1,L0;
   
   f=value_Freq*42;
   L0=0x28;
   L4= f&0x000000ff;
   L3=(f>>8)&0x000000ff;
   L2=(f>>16)&0x000000ff;
   L1=(f>>24)&0x000000ff;
   CON_word=L0;
   CON_word=L4;
   CON_word=L3;
   CON_word=L2;
   CON_word=L1;
   
   
   CLR_FQUD;
   delay(0);
   for(i=0;i<5;i++)
   {
       
   data_OUT=CON_word;      //送控制字
   delay(1);
   SETB_WCLK;
   delay(0);
   CLR_WCLK;                   //上升延
   delay(0);
   }
   SETB_FQUD;               //上升延要求AD9850改变输出
}
//--------------------------------------------------------------------------------------------------
// 函数名称:main
// 用户主函数
// 函数功能:主函数
//--------------------------------------------------------------------------------------------------
void main()
   {
   DDRC=0xff;
   DDRD|=0x07;
   SETB_FQUD;
   CLR_WCLK;
   delay(1);
   WRITE_AD9850(20000000);
   while(1);
              
   }

laohuang868 发表于 2011-6-6 15:59:29

我的也一样,纳闷呀!你的现在怎么样l !

zgh 发表于 2014-3-9 01:11:04

同感啊,求大神指导
页: [1]
查看完整版本: AD9850没有输出波形,请大侠帮助