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

📄 接收.asm

📁 红外遥控编码接收程序
💻 ASM
字号:
;**************************************************************
;*------------------ 红外遥控电子密码锁程序-------------------*
ORG     0000H                  ;主程序
MOV     R0, #00H               ;立即数00H到寄存器R0
CLR     P1.3                   ;关报警
CLR     P1.4                   ;P1.4清零(关锁)
MOV     R0,#00H                ;串行口初始化
MOV     52H,#02H               ;将立即数02h送52h
MOV     TMOD,#20H              ;设置T1工作为方式2
MOV     TL1,#0F4H              ;定时初始值送TL1
MOV     TH1,#0F4H              ;定时初始值送TH1
SETB    TR1                    ;启动定时器T1
MOV     SCON,#0D0H             ;定义串行口工作在方式3
MOV     PCON,#0F3H
KEY:    JNB     P1.5,KEP1              ;选择密码57618
        LJMP    KEP2

;***********************************密码57618程序
KEP1:      MOV     P2,#0FFH               ;关显示
           MOV     A,P0                   ;判断是否有键按下
           CPL     A                      ;对p0口的数据取反
           ANL     A,#0FFH                ;立即数ff与p0的数据相与
           JNZ     JP                     ;有键按下转至jp
           MOV     A, P1                  ;判断是否有键按下
           CPL     A                      ;将p1口的数据取反
           ANL     A,#07H                 ;累加器数据为零转遥控接收程序
           LJMP     WAIT
           ACALL   D10MS                ;调用延时20秒
           MOV     A ,P1
           CPL     A
           ANL     A,#07H
           LJMP     WAIT
PP00:       CJNE     A,  #01H,JP2       ;比较直接地址01H和累加器A,不相等则转移到JP1
           MOV     P2,  #89H           ;显示字符H
          LJMP     K0P1                ;无条件长转移
PP10:           CJNE     A,  #02H,JP2
           MOV     P2,  #89H           ;显示字符”H”
          LJMP     K0P1
JP2:      CJNE     A,   #04H,KEP1
          MOV     P2,  #89H           ;显示字符”H”
JP3:            MOV     A,  P1
           ANL     A,   #07H
          CJNE     A,  #07H,JP3
          LJMP     LP1
K0P1:      MOV     A,  P1
           ANL     A,  #07H
          CJNE     A,  #07H,K0P1
          LJMP     KEP1
JP:            LCALL    D10MS
           MOV     A  ,P0
           CPL     A
           ANL     A,  #0FFH
           JZ      C6
          CJNE     A,  #01H,KEY02
           MOV     P2, #89H
          LJMP     KEY1
KEY02:     CJNE     A,  #02H,KEY03
           MOV     P2, #89H
          LJMP     KJP1
KEY03:     CJNE     A,  #04H,KEY04
           MOV     P2, #89
           LJMP     KJP1
KEY04:         CJNE     A,  #08H,KEY05
           MOV     P2, #89H
          LJMP     KJP1
KEY05:         CJNE     A,  #10H,KEY06
           MOV     P2, #89H
          LJMP     KJP1
KEY06:         CJNE     A,  #08H,KEY07
           MOV     P2, #89H
          LJMP     KJP1
KEY07:         CJNE     A,  #10H,KEY08
           MOV     P2, #89H
          LJMP     KJP1
KEY08:         CJNE     A,  #10H,C6
           MOV     P2, #89H
          LJMP     KJP1
KJP1:           MOV     A,  P0
          CJNE     A,  #0FFH,KJP1
 C6:      LJMP     WAIT
  ;******************************************************************
KEY1:          LCALL    MP
          CJNE     A,  #02H,KEY03
           MOV     P2, #89H
KEY2:          LCALL    MP
          CJNE     A,  #04H,KEY02
           MOV     P2, #89H
KEY3:     LCALL    MP
          CJNE     A,  #08H,KEY02
           MOV     P2, #89H
KEY4:          LCALL    MP
          CJNE     A,  #10H,KEY02
           MOV     P2, #89H
KEY5:           MOV     A,  P0
          CJNE     A,  #0FFH,KEY5
           MOV     P2,  #0FFH
           MOV     R5, #30H
KEY6:           MOV     A,  P0
           CPL     A
           ANL     A,  #0FFH
           JNZ     BB2
           MOV     A,  P1
           CPL     A
           ANL     A,  #07H
           JZ      BB1
          LCALL    D10MS
          MOV     A,   P1
          CPL     A
          ANL     A,   #07H
          JZ      BB2
          CJNE      A,   #04H,B1
          MOV     P2,  #89H
          LJMP      LP2
B1:           CJNE      A,   #01H,BL1
         MOV      P2,  #89H
        LJMP      K0P1
BL1:          CJNE      A,   #02H,BB1
         MOV      P2,  #89H
        LJMP      K0P1
BB2:          LCALL     D10MS
         MOV      A,   P0
         CPL      A
         ANL      A,   #0FFH
         JZ       BB1
        LJMP      KEY02
BB1:     MOV      R7,  #0C8H
BB4:     MOV      R6,  #0F9H
         NOP
         NOP
BB5:    DJNZ      R6, BB5
        DJNZ      R7,  BB4
        DJNZ      R5,  KEY6
        LJMP      WAIT
 ;*****************************************************密码81675程序
KEP2:          MOV      P2,   #0FFH            ;关显示
         MOV      A,    P0
         CPL      A
         ANL      A,    #0FFH
         JNZ      HP
         MOV      A,    P1
         CPL      A
         ANL      A,    #07H
         JZ       C9
        LCALL     D10MS
         MOV      A,    P1
         CPL      A
         ANL      A,    #07H
         JZ       C9
BB:           CJNE      A,    #01H,HP1
         MOV      P2,   #89H
        LJMP      K1P1
HP1:          CJNE      A,    #02H,HP2
         MOV      P2,   #89H
        LJMP      K1P1
HP2:          CJNE      A,    #04H,C9
         MOV      P2,   #89H
HP3:           MOV      A,    P1
         ANL      A,    #07H
        CJNE      A,    #07H,HP3
         MOV      P2,   #0FFH
        LJMP      LP1
K1P1:          MOV      A,    P1
         ANL      A,    #07H
        CJNE      A,    #07H,K1P1
 C9:          LJMP      WAIT
 HP:          LCALL     D10MS
         MOV      A,    P0
         CPL      A
         ANL      A,    #0FFH
         JZ       C9
        CJNE      A,    #10H,K0Y02
         MOV      P2,   #89H
        LJMP      K0Y1
K0Y02:  CJNE      A,    #01H,K0Y03
         MOV      P2,   #89H
         LJMP      KUP1
K0Y03:        CJNE      A,    #02H, K0Y04
                MOV     P2,   #89H
               LJMP     KUP1
 K0Y04:        CJNE      A,    #04H,K0Y05
               MOV     P2,   #89H
              LJMP      KUP1
K0Y05:        CJNE      A,   #08H,K0Y06
              MOV     P2,  #89H
              LJMP      KUP1
K0Y06:        CJNE      A,   #20H,K0Y07
               MOV     P2,  #89H
              LJMP      KUP1
K0Y07:        CJNE      A,   #40H,K0Y08
              MOV     P2,  #89H
              LJMP      KUP1
K0Y08:        CJNE      A,   #80H,U2
              MOV     P2,  #89H
             LJMP      KUP1
KUP1:           MOV     A,   P0
              CJNE      A,   #0FFH,KUP1
U2:           LJMP      WAIT
K0Y1:         LCALL     MP
              CJNE      A,    #08H,K0Y02
              MOV      P2,   #89H
K0Y2:         LCALL     MP
             CJNE      A,    #04H,K0Y02
              MOV      P2,   #89H
K0Y3:         LCALL     MP
              CJNE      A,    #02H,K0Y02
               MOV      P2,   #89H
K0Y4:         LCALL     MP
              CJNE      A,    #01H,K0Y03
               MOV      P2,   #89H
K0Y6:          MOV      A,    P0
               CPL      A
               ANL      A,    #0FFH
         JNZ      PP2
         MOV      A,    P1
         CPL      A
         ANL      A,    #07H
         JZ       PP1
        LCALL     D10MS
         MOV      A,    P1
         CPL      A
         ANL      A,    #07H
         JZ       PP1
        CJNE      A,    #04H,Y1
         MOV      P2,   #89H
        LJMP      LP2
Y1:     CJNE      A,    #01H,Y11
         MOV      P2,   #89H
        LJMP      K1P1
Y11:     CJNE      A,    #02H,PP1
         MOV      P2,   #89H
        LJMP      K1P1
PP2:          LCALL     D10MS
         MOV      A,    P0
         CPL      A
         ANL      A,    #0FFH
         JZ       PP1
        LJMP      K0Y02
PP1:           MOV      R7,   #0C8H
PP4:           MOV      R6,   #0F9H
         NOP
         NOP
PP5:          DJNZ      R6,   PP5
        DJNZ      R7,   PP4
        DJNZ      R5,   K0Y6
        LJMP      WAIT
    ;*******************************************************报警程序
LP1:          SETB      P1.4
         INC      R0
P019:          MOV      R3,   #05H
P020:          MOV      R7,   #0A0H
P018:         SETB      P1.3
        LCALL     P01A
         CLR      P1.3
        LCALL     P01A
        DJNZ      R7,    P018
        DJNZ      R3,    P020
         CLR      P1.3
        CJNE      R0,    #03H,P017
        LJMP      P019
P017:          CLR      P1.4
        LJMP      WAIT
;**********************************************开锁程序
LP2:     SETB      P1.4
        LCALL     T5S
         CLR      P1.4
         MOV      R0,    #00H
        LJMP      WAIT
;************************************************判断键是否释放
MP:      MOV      A,     P0
        CJNE      A,     #0FFH,  MP
         MOV      P2,    #0FFH
PM:            MOV      R5,    #30H
        LCALL     TP
               RET
         ;*********************************************判断是否有键按下
TP:      MOV      A,     P0
         CPL      A
         ANL      A,     #0FFH
         JNZ      AP
         MOV      A,     P1
         CPL      A
         ANL      A,     #07H
         JZ       TP3
        LCALL     D10MS
         MOV      A,     P1
         CPL      A
         ANL      A,     #07H
         JZ       TP3
        LCALL     D10MS
         MOV      A,     P1
         CPL      A
         ANL      A,     #07H
         JZ       TP3
        CJNE      A,     #04H,C1
         MOV      P2,    #89H
C3:            MOV      A,      P1
         ANL      A,      #07H
        CJNE      A,      #07H,C3
         MOV      P2,     #0FFH
        LJMP      LP1
C1:           CJNE      A,      #01H,C2
         MOV      P2,     #0C0H
        LJMP      KCP1
C2:           CJNE      A,      #02H,U11
         MOV      P2,     #90H
        LJMP      KCP1
KCP1:   MOV      A,      P1
         ANL      A,      #07H
         CJNE      A,      #07H,KCP1
 U11:         LJMP      WAIT
 AP:          LCALL     D10MS
         MOV      A,      P0
         CPL      A
         ANL      A,      #0FFH
         JZ       TP3
         RET
    ;******************************************************400MS延时程序
TP3:           MOV      R7,    #0C8H
TP1:           MOV      R6,    #0F9H
         NOP
         NOP
TP2:     DJNZ      R6,    TP2
         DJNZ      R7,    TP1
        DJNZ      R5,    TP           ;10S
        LJMP      WAIT
   ;**********************************************10MS延时程序
D10MS:         MOV      R7,    #05H
LOOP1:         MOV      R6,    #0F9H
         NOP
         NOP
LOOP2:        DJNZ      R6,    LOOP2
        DJNZ      R7,    LOOP1
         RET
    ;*************************************************** 延时程序
P01A:          MOV      R2,    #06H
        LCALL     DELY
         RET
DELY:         PUSH      02H
DEL2:         PUSH      02H
DEL3:         PUSH      02H
DEL4:         DJNZ      R2,    DEL4
        POP      02H
       DJNZ      R2,    DEL3
        POP      02H
       DJNZ      R2,    DEL2
        POP      02H
       DJNZ      R2,    DELY
        RET
;***************************************************5S延时程序
T5S:           MOV      R4,    #15H
TS1:           MOV      R3,    #64H
TS2:           MOV      R2,    #05H
TS3:           MOV      R1,    #0F9H
        NOP
        NOP
TS4:    DJNZ      R1,    TS4
        DJNZ      R2,    TS3
        DJNZ      R3,    TS2
        DJNZ      R4,    TS1
          RET

;**********************遥控接收程序********************************

WAIT:    JBC Ri, LOOP5              ;遥控接收程序
         LJMP    KEY
LOOP5:  MOV R0, #51H               ;将立即数51H送R0
        MOV R7, #03H               ;将立即数03H送R7
LOOP6:  MOV A, SBUF                ;将串行缓冲器接收到的数据累加器A中
        JNB PSW.0, LOOP7           ;标志位F0是否清零?
	JNB RB8, LOOP8                 ;数据是否已经接收完毕?
LOOP9:  MOV @R0, A
        MOV R1, 51H
	CJNE R1, #1EH, LP
	DJNZ 52H, KP
	CLR P1.4
	MOV 52H, #02H
	MOV R0, #00H
	LJMP WAIT
KP:     SETB P1.4                  ;开锁
        LJMP WAIT
LP:     DJNZ R7, WAIT
        CLR PSW.5
	LJMP WAIT
LOOP7:  JB RB8, LOOP8
        LJMP LOOP9
LOOP8:  SETB PSW.5                 ;给标志位F0置1
        LJMP WAIT                  ;继续接收数据
end

⌨️ 快捷键说明

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