📄 main.c
字号:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dds_en=P1^4;
sbit dds_clk=P1^5;
sbit dds_dat=P1^6;
void delay(uint k)
{
while (--k);
}
void write_2byte(uint a) //写2BYTE到DDS
{
uchar i;
dds_clk=1;
dds_dat=1;
dds_en=1;
// control=0;
delay(1000);
dds_clk=1;
delay(2);
dds_en=0;
for(i=0;i<16;i++)
{
if(a&0x8000){dds_dat=1;}//the MSB=1
else dds_dat=0;//the MSB=0
dds_clk=0;
delay(5);
dds_clk=1;
a=a<<1;
}
delay(2);
dds_en=1;
dds_clk=0;
delay(1000);
// control=1;
}
void init_dds(void)//初始化DDS芯片
{
write_2byte(0x2100);
write_2byte(0x2000);//write command;28mode;
write_2byte(0x4000);//write LSB of freq0 reg 置入00FC000
write_2byte(0x403F);//write MSB of freq0 reg
write_2byte(0x2900);
write_2byte(0x8000);//write LSB of freq1 reg 置入00FC000
write_2byte(0x803F);//write MSB of freq1 reg
write_2byte(0xC000);//write phase0 reg
write_2byte(0xF000);//write phase1 reg
write_2byte(0x2000);//lect freq0,phase 0,28bit mode,rst=0
}
//输出指定频率
void output(unsigned long freq_value)
{
unsigned long dds;//32 bit data for dds control word
uint dds1,dds2;
dds=freq_value*18.64135111111;
dds=dds<<2;
dds1=dds; //低字节
dds2=dds>>16; //高字节
dds1=dds1>>2;
dds2=dds2&0x7FFF;
dds2=dds2|0x4000;
write_2byte(0x2000);//enable the command mode is 28mode
write_2byte(dds1);
write_2byte(dds2);
}
void main()
{
init_dds();
output(1000000);
while (1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -