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

📄 getmain.c

📁 用户可以在远端利用固定电话或移动电话发送DTMF双音多频信号,实现对近端电器设备的远程控制。
💻 C
字号:
#include  <regx52.h>

#define  REDUSER          0x09     

sbit   control1 = P0^0 ;
sbit   control2 = P0^1 ;
sbit   control3 = P0^2 ;


unsigned char  redcode[4];

bit            reddata	 ;			   /*读数据标志*/
bit            firstcode ;            /*引导码标志*/
bit            getcode   ;

void setred(void)
{
	TMOD = 0x01;

	TH0 = 0 ;
	TL0 = 0 ;
	TR0 = 1 ;

	EA  = 1 ;
	ET0 = 1 ;
	EX0 = 1 ;
	IT0 = 1 ;
	
	reddata = 0 ;
	firstcode = 0 ;
	getcode = 0 ;
}

void sethome(void)
{
		control1 = 0 ;
		control2 = 0 ;
		control3 = 0 ;
}
void int_t0(void) interrupt 1 
{
	
	TH0 = 0 ;
	TL0 = 0 ;
	reddata   = 0 ;
	firstcode = 0 ;

}

void int_ex0(void) interrupt 0 
{
	static unsigned char num ;
	static unsigned char wei;


	if(reddata == 0)
	{								   /*引导码判断*/

		if( firstcode == 0 )
			{
				firstcode = 1 ;
			}
	 	else 
			{
				if( TH0 >= 0x2B && TH0 <= 0x3E  )
						{
							reddata    = 1 ;
							num = 0 ;
							wei = 0 ;
							getcode = 0 ;
						}

				firstcode = 0 ; 
			}

	 }
	 else
	 {									/*代码判断*/
	 		
		if( TH0 > 0x0C)	   /*大于3MS出错*/
		{	
			reddata = 0 ;
			num = 0 ;
			wei = 0 ;
		}
		else if(TH0 >= 0x07 )  /*大于1.8MS小于3MS  为1 */ 
			  {
					redcode[num] >>= 1 ;
			  		redcode[num] |= 0x80;
					wei++ ; 
			  }
				 else if (TH0 >= 0x03)	 /*大于0.8小于1.8MS 为0*/
	 		 		 {
					 		redcode[num] >>= 1 ;
			  				redcode[num] &= 0x7f ;
							wei++ ;
			  		 }
					 else 
					 {							 /*出错*/
					 	reddata = 0 ;
						num 	= 0 ;
						wei 	= 0 ;
					 }

		if(wei == 8 ) 
		{					   /*转下一个8位码*/
			wei = 0 ;
			num++;
		}
		
		if(num == 4) 
		{					   /*接收完毕*/
		   wei = 0 ;
		   num = 0 ;
		   reddata = 0 ;

		   if( (redcode[0] == ~redcode[1]) && (redcode[2] == ~redcode[3]))		 /*校验收到的码*/
			  	getcode = 1 ;

		}		

	 }
	 

	TH0 = 0 ;
	TL0 = 0 ;
	return;
}

void main(void)
{
	setred();
	sethome();
	while(1)
	{
		if(getcode)
		{
			if(redcode[0] == REDUSER)
				{
					switch(redcode[2])
					{
						case 0 :control1 = 1 ;
							break;
						case 1 :control2 = 1 ;
							break;
						case 2 :control3 = 1 ;
							break;
						case 3 :control1 = 0 ;
							break;
					    case 4 :control2 = 0 ;
							break;
						case 5 :control3 = 0 ;
							break;
					}
						getcode = 0 ;
				}		
		}
	}
}

⌨️ 快捷键说明

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