论坛元老
- 积分
- 6661
- 金钱
- 6661
- 注册时间
- 2016-5-29
- 在线时间
- 909 小时
|
本帖最后由 操作系统 于 2024-8-19 16:17 编辑
IR_RUN() // 100微秒调用一次
{
IF GETIR ;//高电平状态
{
IRH ++
}
ELSE ;// 低电平状态
{
IF IRH >= 40 ;//脉冲宽度不是1,也不是0
{
IRBIT = 0
}
ELSE
IF IRH >= 10 ;// 1 的脉冲宽度
{
FC = 1
GOTO CALIRBUF
}
ELSE
IF IRH >= 2 ;// 0 的脉冲宽度
{
FC = 0
GOTO CALIRBUF
}
CLRIRH
CALIRBUF:
IRBUF3 >>> //循环右移一位
IRBUF2 >>> //循环右移一位
IRBUF1 >>>//循环右移一位
IRBUF0 >>>//循环右移一位
IRBIT ++
IF IRBIT >= 32 // 收到 32 位,大功告成
{
IRBIT = 0
IROK = 1
BUF3 = IRBUF3 ; //复制保存遥控码
BUF2 = IRBUF2
BUF1 = IRBUF1
BUF0 = IRBUF0
}
CLRIRH:
IRH = 0
}
}
|
|