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

📄 freq.c

📁 自己写的几个ADC抓换与DAC转换程序
💻 C
字号:
#include <reg52.h>
#include <absacc.h>
#include <math.h>

#define dac	XBYTE[0xa000]
#define pi	3.14

sbit set =P3^3;
sbit add =P3^4;
sbit dec =P3^5;
unsigned int current[2]={127,127};

unsigned int  	dot=127;
unsigned char 	TS=100;
unsigned char	KT=0;
unsigned char 	ms=0;

unsigned char xdata dacval[500];

void Delayms(unsigned int t)
{
	unsigned char i;
	while(--t)
		for(i=0;i<125;i++)
		{	;	}
}

void Sin_val(void) reentrant
{
	unsigned char i;
	for(i=0;i<dot;i++)
	{
		dacval[i]=(unsigned char)(127.5*sin(2*pi*(i/dot))+127.5);
	}
	
}

void Sin_wave(void)
{
	static unsigned int i=0;
	if(++i>dot)	i=0;	
	else	dac=dacval[i];

}


void	set_(void)
{
	KT++;
	if(KT>=3)KT=0;
}

void	add_(void)
{
	switch(KT)
	{
		case 1:if(TS>250)TS=10;
			   else	TS=TS+10;
			   break;
		case 2:if(dot>=500)dot=128;
			   else	dot=dot+5;
			   current[0]=dot;
			   if(current[1]!=current[0])
			   Sin_val();
			   current[1]=current[0];
			   break;
		default:break;
	}
}

void	dec_(void)
{
	switch(KT)
	{
		case 1:if(TS<10)TS=10;
			   else	TS=TS-10;
			   break;
		case 2:if(dot<128)dot=128;
			   else dot=dot-5;
			   current[0]=dot;
			   if(current[1]!=current[0])
			   Sin_val();
			   current[1]=current[0];
			   break;
		default:break;
	}
}

void Key_Scan(void)
{

	if(set==0)
	{
		Delayms(20);
		if(set==0)
		{  set_();	}
	}while(set==0);

	if(add==0)
	{
		Delayms(20);
		if(add==0)
		{  add_();	}
	}while(add==0);

	if(dec==0)
	{
		Delayms(20);
		if(dec==0)
		{  dec_();	}
	}while(dec==0);

}

void Time_init(void)
{
	TMOD=0x12;
	PT0 =1;
	TH0 =(-TS);
	TH1 =(-10000)>>8;
	TL1 =(-10000);
	ET0=1;
	ET1=1;
	TR0=1;
	TR1=1;
}

void main(void)
{
	Time_init();
	EA=1;
	Sin_val();
	while(1)
	{	;	}
}

void Time_int0(void) interrupt 1
{
	ET0=0;TR0=0;TH0 =(-TS);TR0=1;
	Sin_wave();
	ET0=1;
}

void Time_int1(void) interrupt 3
{
	TL1 =(-10000);
	TH1 =(-10000)>>8;
	ms++;
	if(ms==15)
	{
		ms=0;
		Key_Scan();
	}
}

⌨️ 快捷键说明

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