⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 89s52 control dds.txt

📁 完整版AD9854资料
💻 TXT
字号:
/////////////////////////////////////
#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;  

/////////////////////////////////////////////////
//------------ 初始化预设----------------
     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);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -