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

📄 main.c

📁 六路三十二次谐波信号发生器 可产生三十次以下任何谐波叠加的波形
💻 C
字号:
#include<reg51.h>
unsigned char i,n,j;
unsigned char indata,OutData;
unsigned char tosin[96];
unsigned	char	flag;

void ComOutChar(unsigned char OutData) ;

void main(void)
{
	 n=0;
	 j=0;
	 flag=0;
	SCON=0x50;	//通讯方式一 

	TMOD=0X21;	//定时器0方式一	  定时器1方式二,用于产生波物率 
	PCON=0X80;	//SMOD=1
	RI=0;
	TI=0;
	TH0=0xFE;
	TL0=0x5A;
	TH1=0xf3;										 
	TL1=0xf3;	//波特率9600      24HZ 

	ES=1;		//串行中断使能 
	
	TR1=1;		//定时器开启 
	EA=1;
	while(1) 
	  {
		  if(flag==1)	 //每接收完一组新数据,将收到的数据发送一遍给上位机 
		  {
			  if(j==95)
			  {
				   j=0;
				   flag=0;
			   }
			   else
			   {
				   ComOutChar(tosin[j]);
				   j++;
			   }
		   }
	  }
}


void ComOutChar(unsigned char OutData) 
{ 
	SBUF = OutData;
	while(!TI); 
	TI = 0; 
} 


void timer0(void) interrupt  1 	

{
	TR0=0; 
	if(i==95)
	 i=0;
	 P1= tosin[i];
	 i++;

	TH0=0xFE;  
	TL0=0x5A;	

	TR0=1;
}

void ComInINT(void) interrupt 4 using 2
{ 
	 if (RI) /*判断是不是收完字符 */
	 {
		RI=0;
		n++;
		if(n==95)
		{
		ET0=1;	 	//开定时器0中断 
		TR0=1;
		n=0;
		flag=1;
		}
		
	 	tosin[n]=SBUF;
		
	 }
 }

⌨️ 快捷键说明

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