📄 ir.c
字号:
#include <at89x52.h>
//#include <stdio.h>
#define ir P3_2
bit is_ir_err;
bit is_ir_continue;
bit is_ir;
unsigned char data d[4];
//12MHz
void delay(unsigned char t)
{
unsigned char data i;
for(i=0;i<t;i++);
}
void ir_int(void) interrupt 0
{
unsigned char i;
unsigned char j;
EA = 0;
for(i=0; i<3; i++)
{
delay(138);//--1.125ms--
delay(138);//--1.125ms--
if(ir == 1)
{
is_ir_err = 1;
EA = 1;
return;
}
}
while(ir != 1);
delay(138);//--1.125ms--
if(ir == 0)
{
is_ir_err = 1;
EA = 1;
return;
}
delay(207);//--1.6875ms--
if(ir == 0)
{
is_ir_continue = 1;
EA = 1;
return;
}
while(ir != 0);
delay(34);//--0.28125ms--
for(j = 0; j<4; j++)
{
for(i=0;i<8;i++)
{
while(ir != 1);
//ir == 1
delay(104);//--0.84375ms--
if(ir == 0) // is "0"
{
d[j] = d[j]<<1;
}
else // is "1"
{
d[j] = d[j]<<1;
d[j]++;
delay(138);//1.125ms
if(ir == 1)
{
is_ir_err = 1;
EA = 1;
return;
}
}
}
}
is_ir = 1;
EA = 1;
}
unsigned char ir_recv(void)
{
if(d[2] == ~d[3])
{
is_ir_err = 0;
return d[2];
}else{
is_ir_err = 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -