原创 红外解码程序

2008-8-2 23:16 2259 4 4 分类: MCU/ 嵌入式
红外解码程序

 


此程序适用于PT2221/2、uPD6121/2芯片的解码。


程序中设计精确定时0.1ms延时位基础,以计数实际的波形宽度,若读数
值位4,则位0.4ms,若位16,则位1.6ms。程序中用减法指令SUBB来完成
SUBB A,R2
R2为计数值
A值为8
当8-R2有借位,借位标志C=1,则编码值为1
当8-R2无借位,借位标志C=0,则编码值为0
将错位标志C经过右移RRC A转入A寄存器,再由R0寄存器间接寻址存入内存。


IR_IN:              ; 红外解码子程序
I1:   JNB IRIN,I2   ; 等待信号出现
      JMP I1
I2:   MOV R4,#20
I20:  CALL DEL
      DJNZ R4,I20
      JB IRIN,I1    ;信号确认
      CLR WLED      ;工组指示灯亮
I21:  JB IRIN,I3   ; 等待高电平
      CALL DEL
      JMP I21
I3:   MOV R3,#0     ;
LL:   JNB IRIN,I4    ; 等待低电平
      CALL DEL
      JMP LL
I4:   JB IRIN,I5     ; 等待高电平
      CALL DEL
      JMP I4
I5:   MOV R2,#0      ;0.1ms计数
L1:   CALL DEL
      JB IRIN,N1
      MOV A,#8
      CLR C
      SUBB A,R2
      MOV A,@R0
      RRC A
      MOV @R0,A
      INC R3
      CJNE R3,#8,LL ;需处理8位数据
      MOV R3,#0
      INC R0
      CJNE R0,#34H,LL  ;处理4个字节
      JMP OK
N1:   INC R2
      CJNE R2,#30,L1   ; 0.1ms计时过长,则自动离开
OK:   SETB WLED   ;关掉指示灯
      RET

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条