📄 dds.c
字号:
#include"includes.h"
extern unsigned char wav[256]; //波形数据
extern unsigned char addr[256]; //地址数据
extern unsigned long K_value; //K值
extern unsigned char P_value; //P值
extern unsigned char wav_flag;
void wav_count(unsigned char f) //计算波形数据
{
unsigned int i;
for(i=0;i<256;i++)
{
addr[i]=i;
}
if(f==0)
{
for(i = 0; i <256;i++)
{
wav[i]=125*(1+sin(6.28*i/255));
}
}
else if(f==1)
{
for(i=0;i<128;i++)
{
wav[i]=0;
}
for(i=128;i<256;i++)
{
wav[i]=250;
}
}
else if(f==2)
{
for(i=0;i<128;i++)
{
wav[i]=2*i;
}
for(i=128;i<256;i++)
{
wav[i]=255-((i-128)*2);
}
}
else if(f==3)
{
for(i=0;i<256;i++)
{
wav[i]=256-i;
}
}
}
void write_wav_addr() // 写波形、地址
{
unsigned char wave,address;
unsigned int i,j;
for(i=0;i<256;i++)
{
wave=wav[i];
address=addr[i];
for(j=0;j<8;j++)
{
wave<<=1;
da=CY;
clk=0;
clk=1;
clk=0;
}
for(j=0;j<8;j++)
{
address<<=1;
da=CY;
clk=0;
clk=1;
clk=0;
}
wren=0;
wren=1;
wren=0;
}
}
void write_fre() //写频率、相位
{
unsigned int i;
for(i=0;i<32;i++)
{
K_value<<=1;
da=CY;
clk=0;
clk=1;
clk=0;
}
P_value<<=3;
for(i=0;i<5;i++)
{
P_value<<=1;
da=CY;
clk=0;
clk=1;
clk=0;
}
}
void wtite_clr() //清零
{
clr=0;
clr=1;
mydelay(500);
clr=0;
}
void saom()
{
unsigned int i;
ena=0;
for(i=0;i<64;i++)
K_value=i*1310720;
wtite_clr();
wav_count(wav_flag);
write_wav_addr();
write_fre();
mydelay(100);
ena=1;
delay_nms(1000);
}
void delay_1msb(void)
{
unsigned int i;
for(i=0;i<1950;i++);
}
void delay_nms(unsigned int num) //延时nms子程序
{
unsigned int i;
for(i=0;i<num;i++)
{
delay_1msb();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -