?? main.c
字號:
/******************************************************
/程序部分開始
******************************************************/
# include "reg24le1.h"
# include "intrins.h"
/*****************************************************/
#define ad9850_w_clk P00
#define ad9850_fq_up P01
#define ad9850_rest P02
#define ad9850_bit_data P03
#define LED P04
#define Enableint do{EA=1;}while(0)
#define Disableint do{EA=0;}while(0)
#define EnableAD9850 do{ad9850_fq_up=0;\
ad9850_fq_up=1; }while(0)
/*****************************************************
/重定義數據類型
*****************************************************/
typedef unsigned char uchar;
typedef unsigned int uint ;
/*****************************************************
/
/AD9850復位(并口模式)
/
*****************************************************/
void ad9850_reset()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
/* rest信號 */
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
}
/*****************************************************
/
/AD9850復位(串口模式)
/
******************************************************/
void ad9850_reset_serial()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
/*rest信號 */
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
/*w_clk信號 */
ad9850_w_clk=0;
ad9850_w_clk=1;
ad9850_w_clk=0;
/*fq_up信號 */
ad9850_fq_up=0;
ad9850_fq_up=1;
ad9850_fq_up=0;
}
/*****************************************************
/
/往AD9850移入一個字節(串口模式)
/
******************************************************/
void Write_Byte_S(uchar Dat)
{
uchar i;
for(i=0;i<8;i++)
{
ad9850_bit_data=(Dat>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
}
/*****************************************************
/
/往AD9850移入一個字節(并口模式,設并口連接P0口)
/
******************************************************/
void Write_Byte_P(uchar Dat)
{
P0=Dat;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
/****************************************************
/
/向ad9850中寫命令與數據(并口)
/
*****************************************************/
void ad9850_wr_parrel(uchar w0,double frequence)
{
uchar w;
long int y;
double x;
x=4294962957/125;
frequence=frequence*x/1000000;
y=frequence;
w=w0;
Write_Byte_P(w);/*寫w0數據 */
w=(y>>24);
Write_Byte_P(w);/*寫w1數據 */
w=(y>>16);
Write_Byte_P(w);/*寫w2數據 */
w=(y>>8);
Write_Byte_P(w);/*寫w3數據 */
w=(y>>=0);
Write_Byte_P(w);/*寫w4數據 */
EnableAD9850; /*移入使能 */
}
/*****************************************************
/
/串口方式寫AD9850的控制字
/
******************************************************/
void ad9850_wr_serial(uchar w0,double frequence)
{
uchar w;
long int y;
double x;
x=4294967295/125;
frequence=frequence*x/1000000;
y=frequence;
w=(y>>=0);
Write_Byte_S(w);/*寫w4數據 */
w=(y>>8);
Write_Byte_S(w);/*寫w3數據 */
w=(y>>16);
Write_Byte_S(w);/*寫w2數據 */
w=(y>>24);
Write_Byte_S(w);/*寫w1數據 */
w=w0;
Write_Byte_S(w);/*寫w0數據 */
EnableAD9850; /*移入使能 */
}
/****************************************************
/
/nRF24LE1工作時鐘設置
/
****************************************************/
void WorkClkSet()
{
CLKCTRL = 0x28;
CLKLFCTRL = 0x01;
}
/****************************************************
/
/nRF24LE1的I/O口配置函數,P0口配置成輸出,初始為低電平
/
*****************************************************/
void IO_CNFG()
{
P0DIR=0X00;
P0=0X00;
}
/****************************************************
/
/Delay延時函數
/
****************************************************/
void Delay(uint x)
{
uint dl;
for(;x>0;x--)
for(dl=120;dl>0;dl--)
{
_nop_();
}
}
/****************************************************
/
/LED燈的閃爍函數
/
*****************************************************/
void Light_LED()
{
LED=!LED;
Delay(1000);
}
/****************************************************
/
/主函數部分
/
*****************************************************/
main()
{
Disableint;
WorkClkSet();
IO_CNFG();
ad9850_reset_serial(); /*復位芯片 AD9850*/
Delay(100);
ad9850_wr_serial(0x00,10000000); /*串行寫入 AD9850*/
Delay(100);
Enableint;
while(1)
{
Light_LED(); /*LED指示燈進行芯片狀態顯示*/
}
}
/****************************************************
* 程序到此結束 *
****************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -