⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 红外线遥控器源程序.txt

📁 单片机入门程序
💻 TXT
字号:
        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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -