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

📄 serial.h

📁 51单片机红外遥控解码程序
💻 H
字号:
//*********************************************
 //MCU:AT89C2051 ,晶振频率:6 MHz
 //用到串口的参数: 
 //波特率: 2400bps
 //制作人:平顶山工学院计算机系,郭猛
//**********************************************
uchar IR_REC[10]={0,0,0,0,0,0,0,0,0,0,};
uchar IR_RecNum=0;
bit Flag_HOST_Send=0;	// =0:主机没有向MCU发送AT命令;=1:主机向MCU发送AT命令,MCU应该做出响应.

void DelayuS(uchar DelayTimes);			//延时,单位uS
void Delay_1ms();						//延时1mS
void Delay(unsigned int DelayTimes);	//延时,DelayTimes是延时的ms数

//**************************************微秒级延时****************************************
void DelayuS(uchar DelayTimes)
{
    while(--DelayTimes);				//12Mhz下,延时DelayTimes*2+3微秒
}

//**************************************1毫秒延时****************************************
void Delay_1ms()
{
	DelayuS(240);DelayuS(240);
}

//*************************************较长时间,mS级延时(不精确)******************************
void Delay(unsigned int DelayTimes)	
{
	while(--DelayTimes) Delay_1ms();	//延时,DelayTimes是延时的ms数
}

void Init_SerialComm()		//BPS是波特率
{
    IE     |= 0x90;      //Enable Serial Interrupt			 
	TR1=0;				 //Pause
    SCON    = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr 
    TMOD   |= 0x20;      //TMOD: timer 1, mode 2, 8-bit reload
    PCON   = 0x80;      //SMOD=1; 	 
	//if (BPS==192)				//192:	 19200
	TH1    = 0xFD;       //Baud:19200bps  fosc=11.0592MHz 
    TL1    = 0xFD;
	TR1    = 1;          // timer 1 run 
	TR0=0;				//T0 pause.
/////////////////////////////////////////////////
}

//向串口发送一个字符 
void Send_Char_Com(uchar ch)  
{
    SBUF=ch;
    while(TI==0);
    TI=0;
}

//向串口发送一个字符串,strlen为该字符串长度 
void Send_String_Com(uchar *str,unsigned int strlen)
{
    unsigned int k=0;
	do 
    {
        Send_Char_Com(*(str + k));
        k++;
    } while(k < strlen);
}

//串口接收中断函数 
void serial () interrupt 4 
{
	uchar ch;
//	EA=0;		//关中断
	if(RI)		//接收到数据
   {
   	ch=SBUF;
    RI = 0;//TI=0;
	if(ch=='s')			//帧开始
	{
		IR_RecNum=0;
	}
	else if(ch=='e')	//帧结束
	{
		if (IR_REC[0]=='A' && IR_REC[1]=='T' && IR_RecNum==2)
		{
			Flag_HOST_Send=1;
		}
		IR_RecNum=0;
	}
	else
	{
		IR_REC[IR_RecNum++]=ch;
	}
   }
//	EA=1;		//中断开放
}

⌨️ 快捷键说明

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