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

📄 ad9851.c

📁 dds集成芯片ad9851的控制程序
💻 C
字号:
/***************************************************
                    ad9851控制程序
key0:输出信号
key1:加法运算
key2:减法运算
key3:选择位数
总体思路:以1M信号频率对应的数字为基准,对应的在各位
进行加减
***************************************************/


#define  kinit_int0
#define  kinit_t0
#define  kinit_int1
#define  kinit_t1

#include <init.H>
#include <dds9851.h>
#include "LCD1602.h"


unsigned char wbit=0;
unsigned char flash=0;
unsigned char num=0;
unsigned char time=0;
unsigned long dat=0;
unsigned char fdat[10]={48,48,44,48,48,48,44,48,48,48};

main()
{
    init_int0();
	init_int1();
	init_t0();
	init_t1();
	TMOD=0x44,TL0=0x1f,TH0=0xff ,TR0=1;
	TL1=0x1f,TH1=0xff ,TR1=1;
	Delay1ms(100);//等LCD启动
	LCD_Initial();
	GotoXY(0,0);
	Print("f= 00,000,000 Hz"); 
	while(1) 
	  {
	    if(flash==1)
		  {	   
			GotoXY(wbit+2,0);
			Print(" ");
			Delay1ms(300);
		   }
		 GotoXY(3,0);
		 Printnum(fdat,10);
		 Delay1ms(300);
	   }
}


mode() interrupt 0
{
    Delay1ms(200);
	if(INT0==0)
	  {
	    wbit++;	
	    if(wbit==11)
	     {
	       wbit=0;
		   flash=1;
		   writedds(dat);
	      }
	    if(wbit!=0)flash=1;
	   }
}

add() interrupt 1 
{
	TH0=0xff ,TL0=0x1f;
	switch(wbit)
	{
	 case 10:if(fdat[9]==57)    break	   ;
	         dat=dat+29826150/1000000;
			 fdat[9]++;         break	   ;
	 case 9: if(fdat[8]==57)    break	   ;
	         dat=dat+29826150/100000;
			 fdat[8]++;         break	   ;
	 case 8: if(fdat[7]==57)    break	   ;
	         dat=dat+29826150/10000;
			 fdat[7]++;         break	   ;
	 case 6: if(fdat[5]==57)    break	   ;
	         dat=dat+29826150/1000;
			 fdat[5]++;         break	   ;
	 case 5: if(fdat[4]==57)    break	   ;
	         dat=dat+29826150/100;
			 fdat[4]++;         break	   ;
	 case 4: if(fdat[3]==57)    break	   ;
	         dat=dat+29826150/10;	       
	      	 fdat[3]++;         break	   ;
	 case 2: if(fdat[1]==57)    break	   ;
	         dat=dat+29826150;
	         fdat[1]++;         break	   ;
	 case 1: if(fdat[0]==57)    break	   ;
	         dat=dat+29826150*10;
	         fdat[0]++;         break	   ;
	 default:;
	 }	

} 

decrease() interrupt 2 
{
	switch(wbit)
	{
	 case 10:if(fdat[9]==48)    break	   ;
	         dat=dat-29826150/1000000;
			 fdat[9]--;         break	   ;
	 case 9: if(fdat[8]==48)    break	   ;
	         dat=dat-29826150/100000;
			 fdat[8]--;         break	   ;
	 case 8: if(fdat[7]==48)    break	   ;
	         dat=dat-29826150/10000;
			 fdat[7]--;         break	   ;
	 case 6: if(fdat[5]==48)    break	   ;
	         dat=dat-29826150/1000;
			 fdat[5]--;         break	   ;
	 case 5: if(fdat[4]==48)    break	   ;
	         dat=dat-29826150/100;
			 fdat[4]--;         break	   ;
	 case 4: if(fdat[3]==48)    break	   ;
	         dat=dat-29826150/10;	       
	      	 fdat[3]--;         break	   ;
	 case 2: if(fdat[1]==48)    break	   ;
	         dat=dat-29826150;
	         fdat[1]--;         break	   ;
	 case 1: if(fdat[0]==48)    break	   ;
	         dat=dat-29826150*10;
	         fdat[0]--;         break	   ;
	 default:;
	 }
} 

out() interrupt 3
{
     TH1=0xff ,TL1=0x1f;
	 wbit=0;
	 flash=1;
	 writedds(dat);
}
 
    
    

⌨️ 快捷键说明

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