📄 text1.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 + -