ir.c
来自「15寸」· C语言 代码 · 共 100 行
C
100 行
#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 + =
减小字号Ctrl + -
显示快捷键?