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

📄 6122decode.asm

📁 6122红外解码
💻 ASM
字号:
	CLK	    BIT P3.2
	DOUT	    BIT P3.3
	TXBUF	    EQU 35H
ORG 0000H 
LJMP  MAIN


ORG 0100H 
  
MAIN:MOV SP,#63H
	 MOV    R6,#10H                                                                                                                       
     LCALL   CH2
	 LCALL   CH2
     MOV    R6,#0CH                                                                                                                       
     LCALL   CH2
	 MOV    R6,#14H                                                                                                                       
     LCALL   CH2
	 MOV    R6,#0DH                                                                                                                       
     LCALL   CH2
	 MOV    R6,#0EH                                                                                                                       
     LCALL   CH2
	 MOV    R6,#10H                                                                                                                       
     LCALL   CH2
	 MOV    R6,#06H                                                                                                                       
     LCALL   CH2
	 MOV    R6,#01H                                                                                                                       
     LCALL   CH2
	 MOV    R6,#02H                                                                                                                       
     LCALL   CH2
	 MOV    R6,#02H                                                                                                                       
     LCALL   CH2
     MOV    1AH,#00H 
     MOV    1BH,#00H 
     MOV    1CH,#00H 
     MOV    1DH,#00H 
B0:  JB         P3.4   ,   B0      
     LCALL   DELAY900
     LCALL   DELAY900
     LCALL   DELAY900
     LCALL   DELAY900
     LCALL   DELAY900
	 JNB          P3.4   ,   IR
	 SJMP		B0
     
;   解码程序 
IR:  
    ;以下对遥控信号的9000微秒的初始低电平信号识别
     MOV    R6,#3	    ;延时一次
IR_SB: 
     ACALL DELAY900        ;调用900微秒延时子程序 
     JB     P3.4,IR_ERROR  ;延时900秒后判断P3.2脚是否出现高电平如果有就退出解码程序 
     DJNZ   R6,IR_SB       ;重复3次,目的是检测在2700微秒内如果出现高电平就退出解码程序 
     JNB     P3.4, $         ;等待高电平避开9毫秒低电平引导脉冲 
	 ACALL DELAY900		    ;等待低电平避开4.5毫秒低电平引导脉冲 
	 JB 	  P3.4,$
     MOV     R1,#1AH        ;设定1AH为起始RAM区 
     MOV     R2,#4  ;只收一个字节  
IR_4BYTE:  
     MOV     R3,#8 
IR_8BIT:    
    JNB     P3.4,$         ;等待地址码第一位的高电平信号 
    LCALL  DELAY900        ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态 
    MOV    C,P3.4         ;将P3.2引脚此时的电平状态0或1存入C中 
    JNC     IR_8BIT_0      ;如果为0就跳转到IR_8BIT_0 
    LCALL  DELAY900 
IR_8BIT_0:  
    MOV    A,@R1           ;将R1中地址的给A 
    RRC    A               ;将C中的值0或1移入A中的最低位 
    MOV    @R1,A           ;将A中的数暂时存放在R1中 
    DJNZ   R3,IR_8BIT      ;接收地址码的高8位 
    INC    R1              ;对R1中的值加1,换下一个RAM 
    DJNZ   R2,IR_4BYTE     ;接收完16位地址码和8位数据码和8位数据, 
                           ;存放在1AH/1BH/1CH/1DH的RAM中 
     ;解码成功 
    JMP    IR_GOTO 
  
  
IR_ERROR: 
    ;错语退出 
	MOV    R1,#0BH
BB5:	MOV    R6,#0EH                                                                                                                       
    LCALL   CH2
    DJNZ    R1,BB5
    LJMP   B0 ;退出解码子程序 
  
;================================================= 
;遥控执行部份 
IR_GOTO: 

	MOV	R0,#01H
	MOV	R1,#1AH
AA4:MOV     A,@R1         ;将按键的键值显示出来! 
	ANL	    A,#0F0H
	SWAP	    A
    MOV	    R6,A
	LCALL	    CH2
	MOV      A,@R1
	ANL	    A,#0FH
    MOV	    R6,A
	LCALL	    CH2	
	INC	R1
	DJNZ	R0,AA4
	MOV	R6,#03H
	LCALL	    CH2
	MOV	R6,#0AH
	LCALL	    CH2
	MOV	    R6,#10H
	LCALL	    CH2 
OUT:MOV	    R6,#10H
	LCALL	    CH2    
	LCALL	    CH2  
	LCALL	    CH2  
	LCALL	    CH2  
	LCALL	    CH2  
	LCALL	    CH2 
	MOV    1AH,#00H 
    MOV    1BH,#00H 
    MOV    1CH,#00H 
    MOV    1DH,#00H  
	LJMP  B0
;================================================= 
; 延时子程序 
;=============================400
DELAY400:  ;1x((90+4)+4)=400
    MOV R7,#90 
DELAY400_A: 
    NOP 
    NOP 
    DJNZ   R7,DELAY400_A
RET 
;=============================900
DELAY900:   ;1x ((224x4)+6)=900 
    MOV R7,#205
DELAY900_A: 
    NOP 
    NOP 
    DJNZ   R7,DELAY900_A 
    NOP
RET 

;=============================2400 
DELAY2400:   ;1x ((239x10)+10)=2400
    MOV R7,#220
DELAY2400_A: 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP
    
    DJNZ   R7,DELAY2400_A 
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    RET 
;______________________________________====================

CH2: 	 MOV      A,DPH	
         PUSH     ACC
         MOV      A,DPL
         PUSH     ACC
	 MOV	 A,R6
	 MOV     DPTR,#TAB	
  	 MOVC    A,@A+DPTR
	 MOV	 TXBUF,A
	
TX:      MOV      R7,#08H		;依次传8个位
         MOV      A,TXBUF

     TX1:RRC      A		
         MOV      DOUT,C
	 NOP
	 NOP
	 CLR	  CLK
	 NOP
 	 SETB     CLK       
	 DJNZ	  R7,TX1
	 POP      ACC
         MOV      DPL,A
         POP      ACC
         MOV      DPH,A
         RET

     TAB: DB   03H   ;0 数码管段码
	  DB   9FH   ;1	
	  DB   25H   ;2
	  DB   0DH   ;3
 	  DB   99H   ;4
	  DB   49H   ;5
	  DB   41H   ;6
	  DB   1FH   ;7
	  DB   01H   ;8	  
	  DB   09H   ;9
	  DB   11H   ;A
	  DB   0C1H   ;B
	  DB   63H   ;C
	  DB   85H   ;D
	  DB   61H   ;E	  
	  DB   71H   ;F
	  DB   0FDH   ;-   10H
	  DB	0FFH	;WU	  11H
	  DB	0DFH	;i		12H
	  DB	0F5H	;r		 13H
	  DB	0A3H	;O		  14H
        END

⌨️ 快捷键说明

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