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

📄 text1.c

📁 单片机源fsdafasdfsadfaafsdfasfdsafsda
💻 C
字号:
			    //AD9852测试程序
//**********************************************
#include<reg51.h>
#include<intrins.h>  //包含右移
#include<math.h>
sbit UPDCLK = P3^4;  //20 更新时钟,上升沿锁存数据到编程寄存器
sbit WRCLK  = P3^5;  //21 写端口数据 上升沿锁存数据
sbit RDCLK  = P3^6;  //22 读端口数据 高电平读
sbit MRESET = P1^7;  //71 主复位端,高电平有效复位
unsigned char FWord[6]={0x00,0xDA,0x74,0x0D,0xA7,0x40}; //1MHz频率字寄存器
//unsigned char FWord[6]={0x08,0x88,0x88,0x88,0x88,0x88};   //10MHz频率字寄存器
unsigned char Address;  //寄存器地址
unsigned char PortReg;  //控制端口寄存器
unsigned char MultReg;  //乘法寄存器
unsigned char ModeReg;  //工作模式寄存器
unsigned char PowerReg; //功率寄存器

void WriteData(unsigned char DataByte);    //写字节数据
void WriteADDR(unsigned char DATAAddress); //写寄存器地址
void UpdataFWord(unsigned char *FWord);
//*********************************
void main()
{
   unsigned char n;

   MultReg = 0x46;     //乘法器
   PortReg = 0x04;     //控制端口
   P0=0;
   //DATACLK=0;
   //ADDRCLK=0;

   P0=0x06;            //设置成并行模式,并复位
   for(n=5;n>0;)
       n--;
   P0=0x04;
  // CONCLK =0;          //锁存控制端口状态
//*************************
   WriteADDR(0x1E);    //写乘法器地址
   WriteData(0x46);    //初始化乘法器,打开倍速频器,倍频6x50=300Mhz

   UpdataFWord(FWord);

   WriteADDR(0x20);    //反辛格函数滤波器地址
   WriteData(0x60);    //关闭反辛格函数滤波
   WriteADDR(0x21);    //幅度字高字节地址
   WriteData(0xFF);    //幅度字高字节
   WriteADDR(0x22);    //幅度字低字节地址
   WriteData(0xFF);
    while(1);

}
//*********************************
//***频率字更新
void UpdataFWord(unsigned char *FWord)
{
   WriteADDR(0x04);
   WriteData(FWord[0]);//0x0f);    //频率字最高字节
   WriteADDR(0x05);
   WriteData(FWord[1]);//0x45);
   WriteADDR(0x06);
   WriteData(FWord[2]);//0x45);
   WriteADDR(0x07);
   WriteData(FWord[3]);//0x45);
   WriteADDR(0x08);
   WriteData(FWord[4]);//0x45);
   WriteADDR(0x09);
   WriteData(FWord[5]);//0x00);    //频率字最低字节
}
//*********************************
//***写入数据
void WriteData(unsigned char DataByte)
{
   unsigned char bdata x,y;
   x =DataByte;
   y =0;
   if(x&0x01)        //数据格式旋转180
      y=y|0x80;      //由D7 D6 D5 D4 D3 D2 D1 D0
   if(x&0x02)        //  D0 D1 D2 D3 D4 D5 D6 D7
      y=y|0x40;
   if(x&0x04)
      y=y|0x20;
   if(x&0x08)
      y=y|0x10;
   if(x&0x10)
      y=y|0x08;
   if(x&0x20)
      y=y|0x04;
   if(x&0x40)
      y=y|0x02;
   if(x&0x80)
      y=y|0x01;
   P0=y;
  // DATACLK=1;       //锁存数据
  // DATACLK=0;

}
//*********************************
//***完整地址
void WriteADDR(unsigned char DATAAddress)
{
   P0=DATAAddress;
   //ADDRCLK=1;
   //ADDRCLK=0;

   P0=0x04;
  // CONCLK = 1;
     WRCLK=1;
     WRCLK=0;
   //CONCLK = 0;

}

⌨️ 快捷键说明

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