📄 ad9851.c
字号:
/*
* Copyright (C) 2007, 华中科技大学电气与电子科技创新中心
* All Rights Reserved.
*
* 文件名: AD9851.c
* 文件描述: AD9851驱动程序文件
*
* 当前版本: 1.1
* 作者:
* 完成日期: 2007年7月25日
*
*/
#include"AD9851\AD9851.h"
#include<intrins.h>
/***************************************
说明: 初始化AD9851,写入空数据进行初始化
*****************************************/
void AD9851_Initial(void)
{
CLK=0;
_nop_();
LOAD=0;
AD9851_Delay(2);
CLK=1;
AD9851_Delay(2);
CLK=0;
AD9851_Delay(5);
LOAD=1;
AD9851_Delay(2);
LOAD=0;
}
/***************************************
说明: 写入频率,将要写入的频率转化成32位频率控制位;
如写入500Hz,即调用此函数AD9851_WriteFreq(500);
****************************************/
void AD9851_WriteFreq(unsigned long f)
{
unsigned long dds;
dds=f*35.79139413; //30MHz晶振所用23.860929422做为倍乘系数
AD9851_WriteData(dds);
}
/**************************************
说明: 串行写入数据子程序,先写入32位数据控制位,
后写入8位其他控制位,用6倍频。
**************************************/
void AD9851_WriteData(unsigned long dds)
{
unsigned char i;
LOAD=0;
CLK=0;
for(i=0;i<40;i++)
{
CLK=0;
_nop_();
if((dds&0x00000001)||(i==32))
DAT=1;
else
DAT=0;
_nop_();
CLK=1;
dds=dds>>1;
}
LOAD=1;
CLK=0;
_nop_();
AD9851_Delay(5);
LOAD=0;
}
/************************************
说明:延量50us子程序
**************************************/
void AD9851_Delay(unsigned char t)
{
unsigned char i,j;
for(i=0;i<t;i++)
{
for(j=0;j<255;j++)
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -