📄 put9851.c
字号:
/*
----------------------------------------------------------
; (c) Copyright xami All Rights Reserved
----------------------------------------------------------
; SOURCE_FILE: PUT9851.C
; APPLICATION: 80c51\80c52
; DESCRIPTION: 对ad9851写控制字
; AUTHOR: xami
; DATE: 28 Apr. 2007
--------------------------------------------------------------------
<控制字转换公式>
f_OUT = (Phase * System_Clock)/(2^32)
--------------------------------------------------------------------
Phase = decimal value of 32-bit frequency tuning word;
System_Clock = direct input reference clock (in MHz) or 6′ the
input clock (in MHz) if the 6′ REFCLK Multiplier
is engaged;
f_OUT = frequency of the output signal in MHz.
--------------------------------------------------------------------
*/
void input9851(unsigned long f_out)
{
uchar put_byte[4]; //存储频率控制字
unsigned long res;
res = (ulong)((float)f_out*204.8); //频率转控制字
//生成控制字
put_byte[0]=0xff&res;
res=res>>8;
put_byte[1]=0xff&res;
res=res>>8;
put_byte[2]=0xff&res;
res=res>>8;
put_byte[3]=0xff&res;
//---------------------------------------------------------
//写adc9851控制字
//---------------------------------------------------------
P3_6= 1; //W_CLK信号置低
P3_7= 1; //FQ_UD信号置低
P2_5= 0; //片选信号 开
P0= 0x00; //第一个tuning word放到总线上
delay(2); //3.5ns
P3_6= 0; //W_CLK信号置高
delay(2); //3.5ns
P3_6= 1; //W_CLK信号置低
P0= put_byte[3];
delay(2); //3.5ns
P3_6= 0; //W_CLK信号置高
delay(2); //3.5ns
P3_6= 1; //W_CLK信号置低
P0= put_byte[2];
delay(2); //3.5ns
P3_6= 0; //W_CLK信号置高
delay(2); //3.5ns
P3_6= 1; //W_CLK信号置低
P0= put_byte[1];
delay(2); //3.5ns
P3_6= 0; //W_CLK信号置高
delay(2); //3.5ns
P3_6= 1; //W_CLK信号置低
P0= put_byte[0];
delay(2); //3.5ns
P3_6= 0; //W_CLK信号置高
delay(2); //3.5ns
P3_6= 1; //W_CLK信号置低
delay(3); //4.5ns
P3_7= 0; //FQ_UD信号置高
delay(6); //7.5ns
P3_7= 1; //FQ_UD信号置低,结束后7.5ns开始产生相应的频率
P2_5= 1; //片选信号 关
//----------------------------------------------------------
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -