📄 ad9851drive.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 + -