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

📄 main.c

📁 数字频率合成器DDS9851的驱动程序实验
💻 C
字号:
#include "spce061a.h"
#define uint unsigned int

uint table[]={"输入频率"};
uint number[]={"0123456789"};
uint keyval=0;
uint flag=0;
uint move=0;
uint frq[8]={0};
unsigned long int dds_frq;

main()
{
	uint i;
	*P_IOA_Dir=0xffff;
	*P_IOA_Attrib=0xffff;
	*P_IOA_Data=0xffff;
	*P_IOB_Dir=0xe1ff;
	*P_IOB_Attrib=0xe1ff;
	*P_IOB_Data=0xffff;
	
	LCM_Write_Comm(0x30);
	LCM_Write_Comm(0x0f);
	LCM_Write_Comm(0x01);
	LCM_Write_Comm(0x80);
	for(i=0;i<8;i++)
		LCM_Write_Data(table[i]);
	LCM_Write_Comm(0x88);
	for(i=0;i<8;i++)
	{
		LCM_Write_Data(number[0]);
		LCM_Write_Data(number[1]);
	}
	LCM_Write_Comm(0x8f);
	while(1)
	{
		*P_Watchdog_Clear=0x0001;
		keyscan();
		if(flag==1)
		{
			flag=0;
			switch(keyval)
			{
				case 1:	move++;
						if(move==8)
							move=0;
						LCM_Write_Comm(0x8f-move);
						break;
				case 2:	frq[move]++;
						if(frq[move]==10)
							frq[move]=0;
						LCM_Write_Comm(0x8f-move);
						LCM_Write_Data(number[frq[move]*2]);
						LCM_Write_Data(number[frq[move]*2+1]);
						LCM_Write_Comm(0x8f-move);
						break;
				case 3:	frq[move]--;
						if(frq[move]>10)
							frq[move]=9;
						LCM_Write_Comm(0x8f-move);
						LCM_Write_Data(number[frq[move]*2]);
						LCM_Write_Data(number[frq[move]*2+1]);
						LCM_Write_Comm(0x8f-move);
						break;
				case 4:	dds_frq=frq[7]*10000000+frq[6]*1000000+frq[5]*100000+frq[4]*10000+frq[3]*1000+frq[2]*100+frq[1]*10+frq[0];
						dds_inital();
						dds_frq=dds_frq*28.633226*3;
						AD9850(dds_frq);
						dds_frq=0;
						break;
				default :break;
			}
		}
	}
}

void delay()
{
	uint i;
	for(i=80;i>0;i--)
		*P_Watchdog_Clear=0x0001;
}

void keyscan(void)
{
	unsigned int iob;
	*P_IOB_Data=0xffff;
  	iob=*P_IOB_Data;
	iob&=0x1e00;
   	if(iob!=0x1e00)
   	{
   		delay();
   		*P_IOB_Data=0xffff;
   		iob=*P_IOB_Data;
   		iob&=0x1e00;
   		if(iob!=0x1e00)
   		{
   			flag=1;
   			switch(iob)
   			{
   				case 0x0e00:keyval=1;break;
   				case 0x1600:keyval=2;break;
   				case 0x1a00:keyval=3;break;
   				case 0x1c00:keyval=4;break;
   				default :break;
   			}
   			while(iob!=0x1e00)
   			{
   				iob=*P_IOB_Data;
   				iob&=0x1e00;
   			}
   		}
   	}
}

⌨️ 快捷键说明

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