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

📄 pro.c

📁 基于STC89C58的单片机控制DDS程序
💻 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 + -