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

📄 ad9851drive.c

📁 dds9851和凌阳单片机的驱动程序
💻 C
字号:
/*********************************Copyright (c)*****************************
**
**                            飞鹏电子工作室
**                              嵌入式项目
**                      http://xpstudio2003.blog.163.com
**
**项目名称:
**编译环境: unSP IDE 2.5.0
**--------------------------------------------------------------------------
**文 件 名: AD9851Drive.C
**作    者: 曹香鹏
**创建日期: 2008年12月19日
**描    述:
**--------------------------------------------------------------------------
**维护记录:
**
****************************************************************************/


#include "AD9851TEST.H" 


//---------	AD9851控制IO定义------------------------
#define	LOAD9851		0
#define	CLK9851			1
#define	DAT9851			2

#define DATA_PORT		*P_IOA_Buffer
#define SHORT_DLY()      Delay_ms(2)





#define Clr9851CLK()   DATA_PORT &= ~(1<<CLK9851)
#define Set9851CLK()   DATA_PORT |=  (1<<CLK9851)

#define Clr9851DAT()   DATA_PORT &= ~(1<<DAT9851)
#define Set9851DAT()   DATA_PORT |=  (1<<DAT9851)

#define Clr9851LOAD()  DATA_PORT &= ~(1<<LOAD9851)
#define Set9851LOAD()  DATA_PORT |=  (1<<LOAD9851)


void Reset9851SM()
{
	//初始化使用的IO
	*P_IOA_Dir    |=  (1<<CLK9851) | (1<<DAT9851) | (1<<LOAD9851);
	*P_IOA_Attrib |=  (1<<CLK9851) | (1<<DAT9851) | (1<<LOAD9851);
//	*P_IOA_Data   |=  (1<<CLK9851) | (1<<DAT9851) | (1<<LOAD9851);
	
//	*P_IOA_Dir    =  0xff;
//	*P_IOA_Attrib =  0xff;
//	*P_IOA_Data   =  0xff;
	
	
	//初始化设置为串行输入方式
    Clr9851CLK();
    Clr9851LOAD();
    Set9851CLK();
    SHORT_DLY();

    Clr9851CLK();
    Set9851LOAD();
    SHORT_DLY();

    Clr9851LOAD();
}


static void write_dds(INT32U dds)
{
    INT16U i;
    Clr9851LOAD();
    Clr9851CLK();
    for(i=0; i<40; i++)
    {
        Clr9851CLK();
        if( (dds&0x00000001)||(i==32) )
        {
            Set9851DAT();
        }
        else 
        {
            Clr9851DAT();
        }
        SHORT_DLY();
        Set9851CLK();
        dds >>=1 ;
    }
    Set9851LOAD();
    Clr9851CLK();
    SHORT_DLY();
    Clr9851LOAD();
}

//单位是Hz
void SetFreq(INT32U Frequency)
{
    //使用100M晶振,frequence就是所要输出的频率(HZ)
    Frequency=(INT32U)(23.860929422*Frequency);
    
    //设置频率
    write_dds(Frequency);
}

⌨️ 快捷键说明

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