dds9834.c

来自「KeilC51编程,51与DDS芯片 AD9850的接口程序.包括对DDS的初始」· C语言 代码 · 共 73 行

C
73
字号
#include <absacc.h>
#include <reg51.h>
#include <intrins.h>
#include <stdio.h>
#include <DDS9834.h>

sbit FCLK= P1^6;
sbit FData= P1^7;

sbit FSYNC= P1^5;
sbit FRst= P1^4;

void WriteData(unsigned char aa,unsigned char bb)
{
	unsigned char a[8];
	unsigned char b[8];
	unsigned char i;
	FSYNC=1;
	FCLK=1;
	a[0]=(aa<<0>>7)&0x01;
	a[1]=(aa<<1>>7)&0x01;
	a[2]=(aa<<2>>7)&0x01;	
	a[3]=(aa<<3>>7)&0x01;
	a[4]=(aa<<4>>7)&0x01;
	a[5]=(aa<<5>>7)&0x01;
	a[6]=(aa<<6>>7)&0x01;
	a[7]=(aa<<7>>7)&0x01;

	b[0]=(bb<<0>>7)&0x01;
	b[1]=(bb<<1>>7)&0x01;
	b[2]=(bb<<2>>7)&0x01;
	b[3]=(bb<<3>>7)&0x01;
	b[4]=(bb<<4>>7)&0x01;
	b[5]=(bb<<5>>7)&0x01;
	b[6]=(bb<<6>>7)&0x01;
	b[7]=(bb<<7>>7)&0x01;
	
	FSYNC=0;
	for(i=0;i<=7;i++)
	{
		FData=a[i];
		FCLK=0;
		_nop_();
		FCLK=1;
		_nop_();
	}
	for(i=0;i<=7;i++)
	{
		FData=b[i];
		FCLK=0;
		_nop_();
		FCLK=1;
		_nop_();
	}
	FSYNC=1;
	FCLK=1;
}

void DDS_Rst()
{
//	FRst=1;
//	_nop_();
	FRst=0;//0000 0000 1001 11   01 0100 1001 0110
	WriteData(0x01,0x00);//(0b00000001,0b00000000)//PIN/SW=0 bit,RST=1
	WriteData(0x21,0x00);//(0b00100001,0b00000000);//Write Freq
//	WriteData(0x41,0x03);//(0b01000001,0b00000011);//01 000FBA9
//	WriteData(0x7B,0xA9);//(0b01111011,0b10101001);//50M->12K
	WriteData(0x40,0x27);// 0b01000000 0b00100111)			//009D496
	WriteData(0x54,0x95);// 0b01010100 0b10010110
	WriteData(0xC1,0x00);//(0b11000001,0b00000000);//Phase->0
	WriteData(0x00,0x00);//(0b00000000,0b00000000);//Rst->0
}

⌨️ 快捷键说明

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