哪位高手可以给分析下程序呀
void DDS_out(unsigned long freq_value){
unsigned long dds;
unsigned int dds1,dds2;
dds=freq_value*8.94784853333336;为什么乘以这些呀
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);
}
temp=spidata;
switch(temp)//计算控制数据
{
case 0:X1=1;X10=0;X100=0;dac_data0=960;spi_out_b(dac_data0);dac_data1=1960;spi_out_a(dac_data1);break; //5mv/div
case 1:X1=1;X10=0;X100=0;dac_data0=830;spi_out_b(dac_data0);dac_data1=1945;spi_out_a(dac_data1);break; //10mv
case 2:X1=1;X10=0;X100=0;dac_data0=707;spi_out_b(dac_data0);dac_data1=1965;spi_out_a(dac_data1);break; //20mv
case 3:X1=1;X10=0;X100=0;dac_data0=545;spi_out_b(dac_data0);dac_data1=1950;spi_out_a(dac_data1);break; //50mv
case 4:X1=1;X10=0;X100=0;dac_data0=415;spi_out_b(dac_data0);dac_data1=1948;spi_out_a(dac_data1);break; //100mv
case 5:X1=1;X10=0;X100=0;dac_data0=270;spi_out_b(dac_data0);dac_data1=1963;spi_out_a(dac_data1);break; //200mv
case 6:X1=0;X10=1;X100=0;dac_data0=545;spi_out_b(dac_data0);dac_data1=1952;spi_out_a(dac_data1);break; //500mv
case 7:X1=0;X10=1;X100=0;dac_data0=415;spi_out_b(dac_data0);dac_data1=1958;spi_out_a(dac_data1);break; //1v
case 8:X1=0;X10=1;X100=0;dac_data0=270;spi_out_b(dac_data0);dac_data1=1960;spi_out_a(dac_data1);break; //2v
case 9:X1=0;X10=0;X100=1;dac_data0=545;spi_out_b(dac_data0);dac_data1=1950;spi_out_a(dac_data1);break; //5v
case 10:X1=0;X10=0;X100=1;dac_data0=415;spi_out_b(dac_data0);dac_data1=1958;spi_out_a(dac_data1);break; //10v
case 11:X1=0;X10=0;X100=1;dac_data0=270;spi_out_b(dac_data0);dac_data1=1953;spi_out_a(dac_data1);break; //20v
/* case 0:X1=1;X10=0;X100=0;dac_data0=960;spi_out_b(dac_data0);dac_data1=2015;spi_out_a(dac_data1);break; //5mv/div
case 1:X1=1;X10=0;X100=0;dac_data0=830;spi_out_b(dac_data0);dac_data1=2025;spi_out_a(dac_data1);break; //10mv
case 2:X1=1;X10=0;X100=0;dac_data0=707;spi_out_b(dac_data0);dac_data1=2035;spi_out_a(dac_data1);break; //20mv
case 3:X1=1;X10=0;X100=0;dac_data0=545;spi_out_b(dac_data0);dac_data1=2045;spi_out_a(dac_data1);break; //50mv
case 4:X1=1;X10=0;X100=0;dac_data0=415;spi_out_b(dac_data0);dac_data1=2028;spi_out_a(dac_data1);break; //100mv
case 5:X1=1;X10=0;X100=0;dac_data0=270;spi_out_b(dac_data0);dac_data1=2025;spi_out_a(dac_data1);break; //200mv
case 6:X1=0;X10=1;X100=0;dac_data0=545;spi_out_b(dac_data0);dac_data1=2045;spi_out_a(dac_data1);break; //500mv
case 7:X1=0;X10=1;X100=0;dac_data0=415;spi_out_b(dac_data0);dac_data1=2030;spi_out_a(dac_data1);break; //1v
case 8:X1=0;X10=1;X100=0;dac_data0=270;spi_out_b(dac_data0);dac_data1=2025;spi_out_a(dac_data1);break; //2v
case 9:X1=0;X10=0;X100=1;dac_data0=545;spi_out_b(dac_data0);dac_data1=2045;spi_out_a(dac_data1);break; //5v
case 10:X1=0;X10=0;X100=1;dac_data0=415;spi_out_b(dac_data0);dac_data1=2026;spi_out_a(dac_data1);break; //10v
case 11:X1=0;X10=0;X100=1;dac_data0=270;spi_out_b(dac_data0);dac_data1=2027;spi_out_a(dac_data1);break; //20v */
default:break;
}
temp=spidata;
switch(temp)//计算控制数据
{
case 0:CLK_S0=1;DDS_out(1000);spi_out_a(dac_data1-20);break; //1us 30M
case 1:CLK_S0=0;DDS_out(15000000);spi_out_a(dac_data1-10);break; //2us15M
case 2:CLK_S0=0;DDS_out(6000000);break; //5us 6M
case 3:CLK_S0=0;DDS_out(3000000);break; //10us3M
case 4:CLK_S0=0;DDS_out(1500000);break; //20us1.5M
case 5:CLK_S0=0;DDS_out(600000);break; //50us 600K
case 6:CLK_S0=0;DDS_out(300000);break; //100us300K
case 7:CLK_S0=0;DDS_out(150000);break; //200us150K
case 8:CLK_S0=0;DDS_out(60000);break; //500us 60K
case 9:CLK_S0=0;DDS_out(30000);break; //1ms 30K
case 10:CLK_S0=0;DDS_out(15000);break; //2ms 15K
case 11:CLK_S0=0;DDS_out(6000);break; //5ms 6K
case 12:CLK_S0=0;DDS_out(3000);break; //10ms 3K
case 13:CLK_S0=0;DDS_out(1500);break; //20ms 1.5K
default:break;
}
temp=spidata;
if(temp!=0)ACDC=0;
else ACDC=1;
j=0;
}
}
每句什么含义呀?
实现什么功能呀 我也研究很久了都没看明白,这几个元件的应用都还没有学好! 是呀 Fout=M(FMCLK/2 28)
页:
[1]