?? 89s52 control dds.txt
字號(hào):
/////////////////////////////////////
#include <reg51.h>
#include <intrins.h>
//---------------------------
#define ADDRESS P2
#define DATA P0
#define ulong unsigned long
#define uchar unsigned char
sbit MASTER_RESET =P1^0;
sbit FBH =P1^1; //fsk/bpsk/hold
sbit SHAPED_LEYING =P1^2;
sbit IO_UPDATE =P1^4;
uchar temp;
uchar TAB_Data[40];
/////////////////////////////////////////
ulong fre=1000000;//輸出頻率
//////////////////////////////////////////
void AD9854_IO_INT();
void TAB_DataWord(double);
//-----------------------
void delay(long t)
{
unsigned int i=0;
while(t--)
for(i=0;i<=100;i++);
}
//--------------------------
void update(void)
{
IO_UPDATE=0;
delay(5);
IO_UPDATE=1;
}
//---------------------------
void Init_Device(void)
{
P0 = 0xff;
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
}
////////////////////////////////////////////////////////
//**********************************************************
void main (void)
{
Init_Device();
MASTER_RESET=0;
TAB_DataWord(fre);
AD9854_IO_INT();
while(1);
}
//****************************************************
void TAB_DataWord(double f)
{
//------------ phase turning word 1----------------
TAB_Data[0]=0x00; //高位
TAB_Data[1]=0x00; //低位
//------------ phase turning word 2----------------
TAB_Data[2]=0x00; //高位
TAB_Data[3]=0x00; //低位
/////////////////////////////////////////////////
//------------ frequency turning word 1----------------
TAB_Data[4]=((ulong)((f*256)/40000000))&(0x0000000000ff);// 0x00;// //高位
TAB_Data[5]=((ulong)((f*65536)/40000000))&(0x0000000000ff);//0x00;//
TAB_Data[6]=((ulong)((f*16777216)/40000000))&(0x0000000000ff);//0x9f;//
TAB_Data[7]=((ulong)((f*4294967296)/40000000))&(0x0000000000ff);//0x16;//
TAB_Data[8]=((ulong)((f*1099511627776)/40000000))&(0x0000000000ff);//0xb1;//
TAB_Data[9]=((ulong)((f*281474976710656)/40000000))&(0x0000000000ff);//0x1c;//
//------------ frequency turning word 2----------------
TAB_Data[10]=0x00; //高位
TAB_Data[11]=0x00;
TAB_Data[12]=0x00;
TAB_Data[13]=0x00;
TAB_Data[14]=0x00;
TAB_Data[15]=0x00;
/////////////////////////////////////////////////
//------------ delta frequency word 1----------------
TAB_Data[16]=0x00; //高位
TAB_Data[17]=0x00;
TAB_Data[18]=0x00;
TAB_Data[19]=0x00;
TAB_Data[20]=0x00;
TAB_Data[21]=0x00; //低位 三角波
/////////////////////////////////////////////////
//------------ update clock----------------
TAB_Data[22]=0x00; //高位
TAB_Data[23]=0x00;
TAB_Data[24]=0x00;
TAB_Data[25]=0x00; //低位
/////////////////////////////////////////////////
//------------ ramp rate clock----------------
TAB_Data[26]=0x00;
TAB_Data[27]=0x00;
TAB_Data[28]=0x00;
/////////////////////////////////////////////////
//------------ 初始化預(yù)設(shè)----------------
TAB_Data[29]=0x00; //高位
TAB_Data[30]=0x24; ///300M
TAB_Data[31]=0x00;
TAB_Data[32]=0x00; //低位
//------------ output shape key I Mul----------------
TAB_Data[33]=0x00;
TAB_Data[34]=0x00;
//------------ output shape key Q Mul----------------
TAB_Data[35]=0x00;
TAB_Data[36]=0x00;
//------------ output shape key ramp rate-------------
TAB_Data[37]=0x00;
//------------QDAC-------------
TAB_Data[38]=0x00;
TAB_Data[39]=0x00;
}
//***********************************************************
void AD9854_IO_INT()
{
uchar i;
MASTER_RESET=0;
FBH=0;
SHAPED_LEYING=1;//使上斜或下斜的引腳,從0到滿比例放大,低電平 相反
temp=0;
for(i=0;i<40;i++)
{
ADDRESS=temp; //送地址
DATA=TAB_Data[i];
WR=0;
WR=1;
delay(1);
WR=0;
temp++;
}
update();
delay(2);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -