📄 ir.c
字号:
#include "header.h"
#include "IR.h"
#define IR_c
enum IrState
{
IrStart=0,
IrLead,
IrData,
IrStop
};
enum IrState Ir_State = IrStart;
uchar IsDataOk=0;
unsigned long ircode=0x0,irlogic=0x80000000;
void IrCaptureISR(void) interrupt 0
{
uint IrIntervalTime;
switch(Ir_State)
{
case IrStart:
timer0_stop();
timer0_start();
Ir_State = IrLead;
IsDataOk = 0;
ircode=0x0;
irlogic=0x80000000;
break;
case IrLead:
timer0_stop();
IrIntervalTime = read_timer0();
timer0_start();
if(IrIntervalTime>=Ir_LeadMin&&IrIntervalTime<=Ir_LeadMax)
Ir_State = IrData;
else
Ir_State = IrStart;
break;
case IrData:
timer0_stop();
IrIntervalTime = read_timer0();
timer0_start();
if(IrIntervalTime>=Ir_0_Min&&IrIntervalTime<=Ir_0_Max)
;
else if(IrIntervalTime>=Ir_1_Min&&IrIntervalTime<=Ir_1_Max)
ircode |=irlogic;
else
{
timer0_stop();
Ir_State = IrStart;
break;
}
irlogic>>=1;
if(irlogic==0)
{
timer0_stop();
IsDataOk = 1;
Ir_State = IrStart;
}
break;
default:
timer0_stop();
Ir_State = IrStart;
}
}
#undef IR_c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -