📄 pro.c
字号:
#include <general.h>
sbit clflag=ACC^7;
bit int_flag=0; /*中断标志位*/
uchar key_value;/*中断返回键值*/
sbit adf4113_sclk=P3^0;
sbit adf4113_sdata=P3^1;
sbit adf4113_le=P3^2;
sbit adf4113_out=P3^3;
//uchar spll[]={0x07,0x87,0x0b,0x30,0x00,0xc8,0x15,0xcc,0xa1};
//uchar spll[]={0x1f,0x82,0xc3,0x02,0x00,0xc8,0x22,0x71,0x01};1GHz
uchar spll[]={0x1f,0x98,0x43,0x62,0x00,0xc8,0x01,0xb5,0x11};//700MHz 0xb3 changed to 0xe3 enable the muxout to be serial data
// 0x43 will use the other PD polarity and R divder output
void ADF4113(void);
void AD9858_init(void);
void main()
{
ulong i,j,k;
AUXR = 0x02;/*STC单片机关内部RAM和开ALE*/
for(i=0;i<5;i++)
{
for(j=0;j<100;j++)
{
for(k=0;k<100;k++);
}
}
COM=0xd1;//1101 0001b 清除所有显示
do{ACC=COM;}
while(clflag==1); //清除起来比较慢,所以一条指令执行的时间不足以完成所有清除,故需等待
COM=0x01;COM=0x0a; /*分频次数10*/
IE=0x81;TCON=0x01;
timer1_init();
for(i=0;i<7;i++)
{
COM=0xd1; /*总清除命令*/
do{ACC=COM;}
while(clflag==1); /*等待清除结束*/
COM=0x80+i;
DAT=0x3f;
COM=0x80+i+1;
DAT=0x67;
for(j=0;j<20000;j++);
}
// while(1)
ADF4113();
delay(100);
AD9858_init();
// */
while(1)
{
while(int_flag==0);/*等待中断*/
int_flag=0;
switch(key_value)
{
case 0x40:
{
key0();
fre_order[ftw-1]=0;
break;}
case 0x41:
{
key1();
fre_order[ftw-1]=1;
break;
}
case 0x42:
{
key2();
fre_order[ftw-1]=2;
break;
}
case 0x43:
{
key3();
fre_order[ftw-1]=3;
break;
}
case 0x48:
{
key4();
fre_order[ftw-1]=4;
break;
}
case 0x49:
{
key5();
fre_order[ftw-1]=5;
break;
}
case 0x4a:
{
key6();
fre_order[ftw-1]=6;
break;
}
case 0x4b:
{
key7();
fre_order[ftw-1]=7;
break;}
case 0x50:
{
key8();
fre_order[ftw-1]=8;
break;
}
case 0x51:
{
key9();
fre_order[ftw-1]=9;
break;
}
case 0x52:key10();break;
case 0x53:key11();break;
case 0x58:key12();break;
case 0x59:key13();break;
case 0x5a:key14();break;
case 0x5b:
{
key15();
break;
}
case 0x00:
{
skey0();
// ADF4113();
break;
}
case 0x01:
{
skey1();
AD9858_init();
break;
}
case 0x02:
{
skey2();
break;
}
case 0x03:skey3();break;
case 0x08:skey4();break;
case 0x09:skey5();break;
case 0x0a:skey6();break;
case 0x0b:skey7();break;
case 0x10:skey8();break;
case 0x11:skey9();break;
case 0x12:skey10();break;
case 0x13:skey11();break;
case 0x18:skey12();break;
case 0x19:skey13();break;
case 0x1a:skey14();break;
case 0x1b:skey15();break;
default:break;
}
}
}
void ADF4113(void)
{
uint i,j;
uchar temp;
//EA=1;
//adf4113_out=1;
for(i=0;i < 9; i++)
{
adf4113_le=0;
for(j=0;j < 8;j++)
{
temp = spll[i];//???????????
adf4113_sclk = 0;
delay(1);
adf4113_sdata = temp&0x80?1:0;
adf4113_sclk = 1;
delay(1);
temp<<=1;//????????????
}
if((i+1)%3==0)
{
adf4113_le=1;
delay(5);
adf4113_le=0;
}
}
delay(5);
/* if(adf4113_out==1)
{////.............
COM=0xd1;//1101 0001b 清除所有显示
do{ACC=COM;}
while(clflag==1);
}
*/
}
void AD9858_init(void)
{
uint i,j;
uchar temp;
ad9858_reset=0;
ad9858_fud=0;
ad9858_cs=0;
for(i=0;i<40;i++)
{
j = 0;
temp = ad9858_cfrdata[j];
ad9858_sclk=0;
delay(1);
ad9858_sdata = temp&0x80==0?0:1;
ad9858_sclk=1;
delay(1);
temp<<=1;
if(!i%8) j++;
}
ad9858_cs=1;
//
/* ad9858_cs=0;
for(i=0;i<40;i++)
{
j=0;
temp = ad9858_ftw0data[j];
ad9858_sclk=0;
delay(1);
ad9858_sdata = temp&0x80==0?0:1;
ad9858_sclk=1;
delay(1);
temp<<=1;
if(!i%8) j++;
}
ad9858_cs=1;
ad9858_fud=1;
ad9858_cs=0;
for(i=0;i<40;i++)
{
temp = ad9858_ftw1[j];
j=0;
ad9858_sclk=0;
delay(1);
ad9858_sdata = temp&0x80==0?0:1;
ad9858_sclk=1;
delay(1);
temp<<=1;
if(!i%8) j++;
}
ad9858_cs=1;
*/
}
void int_int0() interrupt 0 using 0
{
int_flag=1;
ftw++;
key_value=keyin();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -