📄 06_7_12_23_45_main.c
字号:
/*
*Author hejun
*Date 2006_7_12
*/
/*SystemClock=180MHz*/
//F_out=10MHz FrqDWord=238609294; W1=0x0e; W2=0x38; W3=0xe3; W4=0x83;//(W1=Freq–b31__Freq–b3Freq–b24)
//F_out=1MHz FrqDWord=23860929; W1=0x01; W2=0x6c; W3=0x16; W4=0xc1;//(W1=Freq–b31__Freq–b3Freq–b24)
//F_out=100kHz FrqDWord=2386093; W1=0x00; W2=0x24; W3=0x68; W4=0xad;//(W1=Freq–b31__Freq–b3Freq–b24)
//F_out=10kHz FrqDWord=238609; W1=0x00; W2=0x03; W3=0xa4; W4=0x11;//(W1=Freq–b31__Freq–b3Freq–b24)
//F_out=1kHz FrqDWord=23861; W1=0x00; W2=0x00; W3=0x5d; W4=0x35;//(W1=Freq–b31__Freq–b3Freq–b24)
//F_out=100Hz FrqDWord=2386; W1=0x00; W2=0x00; W3=0x09; W4=0x52;//(W1=Freq–b31__Freq–b3Freq–b24)
#include <at89X52.h>
#define uchar unsigned char
#define uint unsigned int
#define RESET P1_0
#define W_CLK P1_1
#define FQ_UD P1_2
#define DDSData P2
#define CLR_WCLK() W_CLK = 0
#define CLR_FQUD() FQ_UD = 0
#define CLR_RESET() RESET = 0
#define SET_WCLK() W_CLK = 1
#define SET_FQUD() FQ_UD = 1
#define SET_RESET() RESET = 1
/*声明全局变量*/
unsigned long FrqDWord; //32-bit frequency tuning word
unsigned long Step; //步进
unsigned char W0,W1,W2,W3,W4; //
/*声明子程序*/
void F_Init_ParallelMode(); //初始化DDS
void F_ParallelLoad_AD9851(); //并行置数
void F_S2P_AD9851(); //串行数据向并行数据转换
void delay();
/*定义子程序*/
void F_Init_ParallelMode()
{
CLR_RESET();
delay();
SET_RESET();
delay();
delay();
delay();
delay();
delay();
CLR_RESET(); //AD9851复位
}
void F_S2P_AD9851()
{
unsigned long frqTmp;
frqTmp = FrqDWord;
W4 = frqTmp;
W4 &= ~0xff00;
frqTmp >>= 8;
W3 = frqTmp;
W3 &= ~0xff00;
frqTmp >>= 8;
W2 = frqTmp;
W2 &= ~0xff00;
frqTmp >>= 8;
W1 = frqTmp;
}
void F_ParallelLoad_AD9851()
{
F_S2P_AD9851();
CLR_WCLK();
CLR_FQUD();
CLR_WCLK(); //Load W1 to shifting register
DDSData= W0;
delay();
SET_WCLK();
delay();
CLR_WCLK(); //Load W1 to shifting register
DDSData= W1;
delay();
SET_WCLK();
delay();
CLR_WCLK(); //Load W2 to shifting register
DDSData= W2;
delay();
SET_WCLK();
delay();
CLR_WCLK(); //Load W3 to shifting register
DDSData= W3;
delay();
SET_WCLK();
delay();
CLR_WCLK(); //Load W4 to shifting register
DDSData= W4;
delay();
SET_WCLK();
delay();
CLR_WCLK();
delay();
delay();
delay();
SET_FQUD();
delay();
delay();
delay();
delay();
delay();
delay();
CLR_FQUD(); //锁存频率相位值
}
void delay()
{
unsigned char i;
for (i=1;i<=0xff;i++);
}
/*主函数*/
void main()
{
W0 = 0x01; //6′ REFCLK Multiplier Enable
FrqDWord = 23861; //set initial F_out=10Mhz
F_Init_ParallelMode();
F_ParallelLoad_AD9851();
for(;;)
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -