📄 ir.h
字号:
//程序:红外识别程序
//备注:非中断版,38K红外信号,16bit系统码,8bit数据码,8bit数据反码。
#include <REGX52.H>
#define true 1
#define false 0
sbit IRIN = P3^2;
unsigned char nbit;
union _IRBuffer
{
unsigned char b[4];
struct _Buffer
{
unsigned char AddrH,AddrL;
unsigned char Data,norData;
}Buffer;
}IrDA;
bit isIRStart(); //
void AvoidStartTail(); //
bit ReceiveIRBit(); //
void PushData2Buff(unsigned char *pIRBuffer);
//bit VerfyIRData(unsigned char *pIRBuffer);
bit ReadIR();
void delayIR84();
void delayIR475();
void delay();
bit isIRStart() //
{
unsigned char i;
if(!IRIN)
{
while(i<10)
{
delayIR84();
i++;
if(IRIN)return false;
}
if(!IRIN)return true;
}
else return false;
}
/*
void AvoidStartTail() //
{
while(!IRIN);
delayIR475();
}
*/
bit ReceiveIRBit() //
{
while(!IRIN);
delayIR84();
if(IRIN)
{
while(IRIN);
return true;
}
else return false;
}
void PushData2Buff(unsigned char *pIRBuffer)
{
unsigned char temp;
unsigned char nbit,nbyte;
for(nbyte=0;nbyte<4;nbyte++)
{
for(nbit=0;nbit<8;nbit++)
{
temp = (unsigned char)ReceiveIRBit();
temp <<= nbit;
pIRBuffer[nbyte] |= temp;
}
}
}
bit VerifyIRData(unsigned char *pIRBuffer)
{
unsigned char temp;
temp = ~pIRBuffer[3];
if(temp == pIRBuffer[2])return true;
else return false;
}
void main() //bit ReadIR()
{
//unsigned char tempa,tempb;
while(true)
{
IrDA.Buffer.AddrH=0x00;
IrDA.Buffer.AddrL=0x00;
IrDA.Buffer.Data=0x00;
IrDA.Buffer.norData=0x00;
if(isIRStart())
{
while(!IRIN);
delayIR475();
PushData2Buff(IrDA.b);
if(VerifyIRData(IrDA.b))
{
REC_LED=0;
P0 = ~IrDA.Buffer.AddrH;
delay();
P0 = 0xff;
REC_LED=1;
P0 = ~IrDA.Buffer.AddrL;
delay();
P0 = 0xff;
REC_LED=0;
P0 = ~IrDA.Buffer.Data;
delay();
P0 = 0xff;
REC_LED=1;
P0 = ~IrDA.Buffer.norData;
}
else{ P0=0xAA; }
}
}
}
void delayIR84()
{
unsigned char i,j;
for(i=10;i>0;i--)
for(j=30;j>0;j--);
}
void delayIR475()
{
unsigned char i,j;
for(i=10;i>0;i--)
for(j=215;j>0;j--);
}
void delay()
{
unsigned char i,j,k;
for(k=10;k>0;k--)
for(i=120;i>0;i--)
for(j=240;j>0;j--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -