|
楼主 |
发表于 2009-8-7 15:51:40
|
显示全部楼层
#include<mega128.h>
#define DAT PORTB.5
#define CLK PORTB.6
#define CE PORTB.7
void delay(unsigned int j)
{
unsigned int i;
for(i=0;i<j;i++);
}
void write_2byte(unsigned int a)
{
unsigned char i;
CLK=1;
DAT=1;
CE=1;
delay(1000);
CE=0;
for(i=0;i<16;i++)
{
if(a&0x8000)
{
DAT=1;
}
else
{
DAT=0;
}
delay(5);
CLK=0;
delay(5);
CLK=1;
a<<=1;
}
delay(5);
CE=1;
CLK=0;
}
void init_dds(void)
{
write_2byte(0x2100);
write_2byte(0x2000);
write_2byte(0x4000);
write_2byte(0x403f);
write_2byte(0x2900);
write_2byte(0x2100);
write_2byte(0x8000);
write_2byte(0x803f);
write_2byte(0xc000);
write_2byte(0x2000);
}
void output(unsigned long freq_value)
{
unsigned long dds;
unsigned int dds1,dds2;
dds=freq_value*5.36870912;
dds=dds<<2;
dds1=dds;
dds2=dds>>16;
dds1=dds1>>2;
dds2=dds2&0x7fff;
dds2=dds2|0x4000;
dds1=dds1&0x7fff;
dds1=dds1|0x4000;
write_2byte(0x2028);
write_2byte(dds1);
write_2byte(dds2);
}
main()
{
DDRB=0XFF;
DDRD=0XFF;
init_dds();
delay(1000);
output(120000);
while(1);
} |
|