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

📄 11.c

📁 51控制9850
💻 C
字号:
#include<reg52.h>
#define uchar unsigned char

sbit FQ_UD=P2^1;          //AD9850信号更新申请 
sbit W_CLK=P2^0;
sbit D7=P2^2;  //写控制字时钟
sbit t=P1^5;
sbit s=P0^3;
unsigned char flag;
unsigned long int h,sh,bh,k,sk,bk,m,sm,a;
unsigned long int f=128849018; //输出22MHZ
unsigned long int b=42949673;
uchar   RxBuf[21]; 
uchar c;
uchar i=0;
void ini_9850()
{

	W_CLK=0;
	t=0;
	FQ_UD=0;
	t=0;
	t=0;
	W_CLK=1;
	t=0;
	t=0;
	W_CLK=0;
	t=0;
	t=0;
	t=0;
	t=0;
	t=0;
	FQ_UD=1;
	t=0;
	t=0;
	FQ_UD=0;	
	
}

void send8(char PC)//发送5位相位和3位控制位
 {
  uchar j;
  for(j=0;j<8;j++) 
  {
  	t=0;
		t=0;
			t=0;
  if((PC&0x01)==1)
  D7=1;
  else
  	t=0;
	t=0;
  D7=0;
  PC=(PC>>1);
	W_CLK=1;
	t=0;
	t=0;
	W_CLK=0;
	t=0;
 }

	FQ_UD=1;
	t=0;
	t=0;
	t=0;
	W_CLK=0;

	FQ_UD=0;
	t=0;
 }
 
void send32(unsigned long int freq)//发送32位频率
 {
   uchar i;
   for(i=0;i<32;i++)
   {
    if((freq&0x00000001)==1)
	D7=1;
	else D7=0;
	freq=(freq>>1);
	W_CLK=1;
	t=0;
	W_CLK=0;
	t=0;
   }
 }

 void send_AD9850(unsigned long int F_con,unsigned char P_con )
 {  
    ini_9850(); 
	send32(F_con);
	send8(P_con);
	
 }
void main()
{

	uchar j;
//	uchar k;
	
	
	
	TMOD=0x20;//设置定时器1为工作方式2
	TH1=0xfd;
	TL1=0xfd;
	TR1=1;
	REN=1;
	SM0=0;
	SM1=1;
	EA=1;
	ES=1;
	sm=0;
	send_AD9850(f,30);
	while(1)
		{flag=1;
		/*	if(RI==1)
			{
			RI=0;
			P1=SBUF;
			}*/
			if(flag==1)
				{
					ES=0;
					flag=0;
					f=f+15429561;
//					f=128849018;
					send_AD9850(f,30);
					for(j=1;j<21;j++)
					{
						SBUF=RxBuf[j];
						while(!TI);	
						TI=0;						
					
					}
					SBUF=RxBuf[0];
					while(!TI);	
					TI=0;
					
				
/*					sm=RxBuf[2];
					m=RxBuf[3];
					bk=RxBuf[4];
					sk=RxBuf[5];
					k=RxBuf[6];
					bh=RxBuf[7];
					sh=0;
					h=0;
					a=sm*10000000+m*1000000+bk*100000+sk*10000+k*1000+bh*100;          
					a=a/1000000;
					f=0;
					f=f+a*b;
					send_AD9850(f,30);*/
					ES=1;
				}
		}
}

void ser() interrupt 4
{
	 
	uchar TRUE=1;
	uchar FALSE=0;
	uchar bstart=FALSE;

	//uchar c = SBUF;
	
	//RxBuf[10]=c;
	  
	RI=0;
	c=SBUF;
 	RxBuf[i]=c;
	i++;
	if(i>20)
	{
		
		if( RxBuf[1]== '$'&&RxBuf[10]=='<'&&RxBuf[11]=='0'&&RxBuf[12]=='x'&&RxBuf[14]=='d'&&RxBuf[15]=='>')
		{
    	flag=1;
		i=0;}
		
	}
   
 /*  if(  RxBuf[0]== '$')
    {
       bstart = TRUE;
    }
    if( bstart )
    {
		sm=RxBuf[1];
		m=RxBuf[2];
		bk=RxBuf[3];
		sk=RxBuf[4];
		k=RxBuf[5];
		bh=RxBuf[6];
		sh=0;
		h=0;
		if((RxBuf[9]=='\r')&&(RxBuf[10]=='\n'))
		{flag=1; }    
    }*/
}

⌨️ 快捷键说明

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