红外线遥控器解码程序(汇编)111.txt

来自「红外线遥控器解码程序(汇编) ORG 0000H AJMP」· 文本 代码 · 共 82 行

TXT
82
字号
红外线遥控器解码程序(汇编)  
            

      ORG 0000H 
      AJMP MAIN
      ORG 0003H ;外部中断INT0入口地址 
      AJMP INT ;转中断服务子程序
      MAIN: MOV SP,#40H 
      MOV P1,#00H
      SETB EA ;开CPU中断
      SETB IT0 ;设定INT0触发方式
      SETB EX0 ;INT0请求中断 

      DSP: MOV R2,#9 ;将遥控器键值转化成A(0~9)
      MOV DPTR,#TAB1
      VV: MOV A,R2
      MOVC A,@A+DPTR
      XRL A,1CH
      JZ ABC
      DJNZ R2,VV
      ABC: MOV A,R2
      MOV DPTR,#TAB ;将A的值通过数码管显示出来 
      MOVC A,@A+DPTR 
      RX1: MOV P1,A 
      CLR P0.1 
      AJMP DSP
      INT: CLR EA 
      MOV R6,#10
      SB: ACALL YS1
      JB P3.2,EXIT
      DJNZ R6, SB
      JNB P3.2, $ ;等待高电平避开9毫秒低电平引导脉冲
      ACALL YS2 ;延时4。74毫秒判断是否连发
      JB P3.2,EXIT
      CPL P0.0
      MOV R1,#1AH ;将32位代码分别放在1AH/1BH/1CH/1DH中
      MOV R2,#4 
      PP: MOV R3,#8
      JJJJ: JNB P3.2,$
      LCALL YS1
      MOV C,P3.2
      JNC UUU
      JB P3.2,$
      UUU: MOV A,@R1
      RRC A
      MOV @R1,A
      DJNZ R3,JJJJ
      INC R1
      DJNZ R2,PP 
      MOV P2,1CH
      MOV A,1AH ;进行代码识别 
      XRL A,#0 ;判断1AH的值是否等于00000000
      JNZ EXI ;如果不同则无效将1CH清零
      CLR P0.1 
      MOV A,1BH
      XRL A,#11110111B ;再判断高8位地址是否正确
      JNZ EXI
      MOV A,1CH
      CPL A
      XRL A,1DH ;将1CH的值取反后和1DH比较 不同则无效丢弃核对数据是否准确
      JNZ EXI 
      AJMP EXIT
      EXI: MOV 1CH,#0
      EXIT: SETB EA ;允许中断
      RETI 
      YS1: MOV R4,#20 ;精确延时882微秒
      D1: MOV R5,#20
      DJNZ R5,$
      DJNZ R4,D1 
      RET
      YS2: MOV R4,#10 ;精确延时4740微秒
      D2: MOV R5,#235
      DJNZ R5,$
      DJNZ R4,D2 
      RET
      TAB: DB 60H,7DH,0D0H,58H,4DH 
      DB 4AH,42H,7CH,40H,48H
      TAB1:DB 0CH,09H,1DH,1FH,0DH 
      DB 19H,1BH,11H,15H,17H
      END
      ;TAB LED数码管显示表 TAB1遥控器键值表
      

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?