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