📄 red_operate.c
字号:
/****************************************************************************************************/
//****说明:本函数用于红外设防/撤防中的接受红外部分
//创建日期:2007.3.28
//创建人 :STONE
/****************************************************************************************************/
#include <REGX51.H>
#include <ini_51.h> //51单片机状态初始化
/****************************************************************************************************/
#define led_p P0
sbit led=P2^6;
/****************************************************************************************************/
//全局变量的定义
unsigned char personal_ID[4]={0x00}; //存放接收到的红外码
unsigned char personal_ID_buf[6]={0x00}; //个人ID的缓存,用来装待验证的个人ID
/****************************************************************************************************/
//端口定义
sbit warnning=P0^1;
/****************************************************************************************************/
//函数名称:red_data_rec
//函数功能:操纵串口接收数据
//入口参数:无
//出口参数:无
//****备注:规定一组红外码共有4个字节组成,在本函数中就是要接收到这四个字节。
void red_data_rec(void)
{
unsigned char red_rec_num; //定义红外接收字节的个数
unsigned char start_byte=0x00; //数据包同步字节
unsigned char end_byte=0x00; //数据包结束字节
unsigned char i=0;
EA=0;
for(red_rec_num=0;red_rec_num<6;red_rec_num++) //一组身份ID由4个字节组成
{
while(RI==0) //当接收中断标志位没有置位,等待
{;}
RI=0; //接收中断标志位置位时清零
personal_ID_buf[red_rec_num]=SBUF; //接收数据
personal_ID_buf[red_rec_num]=!personal_ID_buf[red_rec_num];
}
led=0;
led_p=personal_ID_buf[3];
if(personal_ID_buf[0]==0x05)
{
if(personal_ID_buf[5]==0x50)
{
for(i=0;i<4;i++)
{
personal_ID[i]=personal_ID_buf[i+1]; //接收到的数据包结束字相同,则接收数据
}
}
}
EA=1;
}
/****************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -