ad9851_con.c

来自「基于ATMEGA16和DDS的信号发生器的代码」· C语言 代码 · 共 47 行

C
47
字号
#include<AD9851_CONFIG.H>
#include<intrinsics.h>

uchar a[]={0x00,0x00,0x00,0x00,0x00};
uchar b[5]={0xf0,0x22,0x35,0x33,0x00};

void set_dds_to_serial(void)
{
DDS_CON_DDR |= DDS_CON_DIR;    //设置控制端口的方向
DDS_CON_PORT &= ~DDS_CON_DIR;  //各端口初始化为0
DDS_DATA_DDR |= DDS_DATA_DIR;  //设置数据端口的方向
DDS_DATA_PORT &= ~DDS_DATA_DIR;//数据口初始化为0
SET_DDS_REST;                  //复位 
delay_nus(5);                  //复位时间为5US
CLR_DDS_REST;                  //复位完毕
SET_DDS_WCLK;                  //将硬件电路设置的XXXXX011写入W0中
delay_nus(2);
CLR_DDS_WCLK;
SET_DDS_FQUD;                  //将控制字送入内核
CLR_DDS_FQUD;

write_word(a);                 //调用write_word()用串行方式写入数组a中的值,应该得到与输入时钟相同频率的波形

}

void write_word(uchar *s)
{
uchar i,j;
uchar k,l;
for(i=0;i<5;i++)              //40位的控制字保存在5个字节中
  {
   k=s[i];
   for(j=0;j<8;j++)
      {
       l=k>>j;
       l=l&0x01;
       CLR_DDS_WCLK;
       DDS_DATA_BIT=l;
       SET_DDS_WCLK;
       
      }
  }
SET_DDS_FQUD;
CLR_DDS_FQUD;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?