⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad9851.c

📁 DDS芯片AD9851的驱动程序 由凌阳单片机SPCE061A驱动
💻 C
字号:
/*********************************************************************/
/*公司名称: 华中科技大学电工电子创新中心*/

/*模 块 名:DDS模块 DDS型号:AD9851 */

/*创 建 人:周峡 日期:2006-08-17 */
/*修 改 人: 日期:2006-08-17 */
/*功能描述:产生频率可调的正玄波 */
/*其他说明:更改IO口时还需要更改AD9851函数中的  *P_IOA_Data=*P_IOA_Data & 0x0fff; */
/*版 本:1。0
/**********************************************************************/

#include   <SPCE061V004.h>
#include   <unSPMACRO.h> 

#define Set_Bit(x)      (*P_IOA_Data = *P_IOA_Data | x)
#define Clear_Bit(x)    (*P_IOA_Data = *P_IOA_Data & ~x)

//#define RESET   0x0100//IOA8
#define FQ_UD   0x0100//IOA8
#define CLK     0x0200//IOA9
#define DATA    0x0400//IOA10            //将其改为并口8位

#define     ClearWatchDog()     *P_Watchdog_Clear = 0x0001//清看门狗 
/*********************************************************************/

void Initail9851()//9851用IOA15~12
{
    asm("int off\n");//关中断
    *P_INT_Ctrl=0x0000; 
        
    *P_IOA_Dir |= 0x0700;//初始化IO口
    *P_IOA_Attrib |= 0x0700;
    *P_IOA_Data |= 0x0700;
    
    Clear_Bit(DATA);//清零各条数据线
//  Clear_Bit(RESET);
    Clear_Bit(CLK); 
    Clear_Bit(FQ_UD);
    
//  Set_Bit(RESET);//复位
//  Clear_Bit(RESET);   
    
    Set_Bit(FQ_UD);   //改为串行方式
    Clear_Bit(FQ_UD);   	
}
/*********************************************************************/

void AD9851(unsigned long int ReceiveData)
{   
    unsigned int ui_Cnt;
    unsigned int ui_ContrleData=0x0001;
    unsigned int ui_CntTemp;
    
    Clear_Bit(DATA);//清零各条数据线
//  Clear_Bit(RESET);
    Clear_Bit(CLK); 
    Clear_Bit(FQ_UD);
            
    for(ui_Cnt=0;ui_Cnt<32;ui_Cnt++)//送频率控制字
    {
        if(ReceiveData & 0x0001)
        {
            Set_Bit(DATA);
        }
        else
        {
            Clear_Bit(DATA);
        }
        	
        Set_Bit(CLK);   
        ReceiveData >>=1;
        Clear_Bit(CLK);     
    }
    
    for(ui_Cnt=0;ui_Cnt<8;ui_Cnt++)//送最后8位控制字
    {
        if(ui_ContrleData & 0x0001)
        {
            Set_Bit(DATA);
        }
        else
        {
            Clear_Bit(DATA);
        }
    
        Set_Bit(CLK);   
        ui_ContrleData >>=1;
        Clear_Bit(CLK);     
    }
    
    Set_Bit(FQ_UD);//将数据送入DDS核心
    Clear_Bit(FQ_UD);
}       

⌨️ 快捷键说明

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