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