OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2186|回复: 0

纯IO单片机,100微秒定时查询解码红外NEC协议

[复制链接]

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2020-1-16 10:39:58 | 显示全部楼层 |阅读模式
直接上程序.
;中断服务程序
ORG 0H
NOP
RST
ORG 8H
ISR()
{
  COPYA = A
  SWAPR STATUS,0
  COPYS = A
  IF T1IF
  {
   CLR_T1IF
   TICK = 1 ;这一行与解码无关
   IF IRPIN ; 红外接收引脚
   {
    IRH ++
   }
   ELSE
   {
    IF IRH >= 18
    {
     IRN = 0 ;接收位长度清0
    }
    ELSE
    IF IRH >= 8
    {
     IRN ++
     FC = 1
     GET_DATA
    }
    ELSE
    IF IRH >= 1
    {
     IRN ++
     FC = 0
     GET_DATA
    }
RET_FIE:
    IRH = 0
   }
  }
  SWAPR COPYS,0
  STATUS = A
  SWAPR COPYA,1
  SWAPR COPYA,0
  RETIE
}
GET_DATA()
{
  SLEEP_TIME = 0
  IRBUF#3 >>>
  IRBUF#2 >>>
  IRBUF#1 >>>
  IRBUF#0 >>>
  IF IRN >= 32  ; 接收了 32 个位
  {
   IRN = 0
   IF IRBUF#0 = 0X80  ;验证用户编码
   IF IRBUF#1 = 0X7F ;验证用户编码

   {
    A = IRBUF#2
    IRBUF#3 + A
IRBUF#3 ++   
    IF IRBUF#3 = 0 ;验证校验码
    {
     IR_FLAG = 1  ; 收到一个完整的数据,接收成功
     IR_COMMAND = IRBUF#2
    }
   }
  }
  JMP RET_FIE   ; 返回中断
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-19 16:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表