📄 hongwai.c
字号:
#include <regx51.h>
#define uchar unsigned char
#define uint unsigned int
#define IR_RE P3_2
bit k=0; //红外解码判断标志位,为0则为有效信号,为1则为无效
uchar date[4]={0,0,0,0}; //date数组为存放地址原码,反码,数据原码,反码
/*--------------------------延时1ms程子程序-----------------------*/
delay1000()
{
uchar i,j;
i=5;
do{j=95;
do{j--;}
while(j);
i--;
}while(i);
}
/*---------------------------延时882us子程序-----------------------*/
delay882()
{
uchar i,j;
i=6;
do{j=71;
do{j--;}
while(j);
i--;
}while(i);
}
/*--------------------------延时2400us程子程序-----------------------*/
delay2400()
{
uchar i,j;
i=5;
do{j=237;
do{j--;}
while(j);
i--;
}while(i);
}
//**************************************************************
//**************************************************************
/*----------------------------------------------------------*/
/*-----------------------红外解码程序(核心)-----------------*/
/*----------------------------------------------------------*/
void IR_decode()
{
uchar i,j;
while(IR_RE==0);
delay2400();
if(IR_RE==1) //延时2.4ms后如果是高电平则是新码
{
delay1000();
delay1000();
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
while(IR_RE==0); //等待地址码第1位高电平到来
delay882(); //延时882us判断此时引脚电平
///CY=IR_RE;
if(IR_RE==0)
{
date[i]>>=1;
date[i]=date[i]|0x00;
}
else if(IR_RE==1)
{
delay1000();
date[i]>>=1;
date[i]=date[i]|0x80;
}
} //1位数据接收结束
} //32位二进制码接收结束
}
}
//*****************************************************************
//********************************************************************
/*------------------------外部中断0程序-------------------------*/
/*------------------主要用于处理红外遥控键值--------------------*/
void int0() interrupt 0
{
uchar i;
k=0;
EX0=0; //检测到有效信号关中断,防止干扰
for(i=0;i<4;i++)
{
delay1000();
if(IR_RE==1){k=1;} //刚开始为9ms的引导码.
}
if(k==0)
{
// EX0=0; //检测到有效信号关中断,防止干扰
IR_decode(); //如果接收到的是有效信号,则调用解码程序
P0=date[1];
delay2400();
delay2400();
delay2400();
}
EX0=1; //开外部中断,允许新的遥控按键
}
//*********************************************************************
//********************************
void main()
{
SP=0x60; //堆栈指针
EX0=1; //允许外部中断0,用于检测红外遥控器按键
EA=1; //总中断开
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -