📄 ireceive.c
字号:
#include "NEW_8051.H"
#include"task.h"
#include <intrins.h>
#include"sbit.h"
unsigned char irtime;//红外用全局变量
bit irokk;
uchar IRcord[2];
uchar irdata[17];
/************************************************/
void tim1_isr (void) interrupt 3 using 1//定时器0中断服务函数
{
irtime++;
}
/*************************************************************/
//外部中断0解码程序
void ex0_isr (void) interrupt 0 using 2//外部中断0服务函数
{
static unsigned char i,p,z;
static bit startflag;
TR1=1;
if(startflag)
{
if(irtime<100&&irtime>=53)//引导码 TC9012的头码 13.5
{
i=0;
p=1;
z=0;
irdata[i]=irtime;
irtime=0;
}
z++;
if(z>=18)
{
irdata[p]=irtime;
irtime=0;
p++;
if(p==17)
{
irokk=1;
p=0;
TR1=0;
}
}
else
irtime=0;
}
else
{
irtime=0;
startflag=1;
}
}
/************************************************/
void Ircordpro(void)//红外码值处理函数
{
uchar i, j, k;
uchar cord,value;
k=1;
for(i=0;i<2;i++)//处理4个字节
{
for(j=1;j<=8;j++) //处理1个字节8位
{
cord=irdata[k];
if(cord>11)//大于某值为1
{
value=value|0x80;
}
else
{
value=value;
}
if(j<8)
{
value=value>>1;
}
k++;
}
IRcord[i]=value;
value=0;
}
//if(((IRcord[2])==~IRcord[3])&&(IRcord[0])==~IRcord[1])
//{
// IrOK=1;//处理完毕标志位置1
//}
//else
//IrOK=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -