?? ad9833.c
字號:
#include "reg51.h"
sbit dds_en=P1^5;
sbit dds_clk=P1^6;
sbit dds_dat=P1^7;
unsigned char control;
void delay(unsigned int T)
{
while(T){
T--;
}
}
void write_2byte(unsigned int a){ //write 2 byte to dds
unsigned char 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;}
else dds_dat=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){
write_2byte(0x2100);
write_2byte(0x2000);
write_2byte(0x4000);
write_2byte(0x403F);
write_2byte(0x8000);
write_2byte(0x803F);
write_2byte(0xC000);
write_2byte(0xF000);
write_2byte(0x2000);
}
void output(unsigned long freq_value){
unsigned long dds;
unsigned int dds1,dds2;
dds=freq_value*11.18481067;
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(0x2000);
write_2byte(dds1);
write_2byte(dds2);
}
void scan(unsigned long first,unsigned long step,unsigned long end){
unsigned long temp,jj;
for(temp=first;temp<end;temp=temp+step){
output(temp);
for(jj=0;jj<100;jj++){
delay(1000);
}
}
}
void main(){
//
init_dds();
// output(50) ;
while(1){
scan(1000,10000,1000000);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -