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

📄 lock.asm

📁 基于msc-51系列单片机的电子密码锁的设计;基于msc-51系列单片机的电子密码锁的设计;基于msc-51系列单片机的电子密码锁的设计
💻 ASM
字号:
         ORG 0000H
 GO:NOP
         LCALL HEX          ;开机logo
   OVERQ:MOV WORD,#01H      ;选择close
         LCALL TCH          ;把close送入显示缓存区31---36h
   CLOSE:LCALL SHOW
         LCALL KEY          
         MOV A,30H
         CJNE A,#79H,CLOSE ;E键
         LCALL KEYOFF      ;判断按键是否弹起
         LCALL input       ;调入输入模块
         LCALL check       ;调入密码核对模块
         MOV WORD,#04H     ;选择open输出
         LCALL TCH
    TURN:LCALL SHOW
         LCALL KEY

         CJNE A,#5EH,TURN ;判断是否锁毕系统
         LJMP GO

SHOW:MOV P1,#0
     MOV A,#00H                ;显示模块,入口地址31H-36H
     MOV R0,#31H               ;显示缓存的首地址
     MOV R5,#01H

 NEXT:MOV A,@R0
      MOV P2,A
      MOV A,R5
      MOV P1,A
      LCALL TIMESHOW
      INC R0
      RL A
      MOV R5,A
      CJNE R5,#080H,NEXT
      RET
 TIMESHOW:MOV R6,#10
     DL2:MOV R7,#DL1
     DL1:NOP
         NOP
         DJNZ R7,DL1
         DJNZ R6,DL2
         RET



  KEY:LCALL KEY0                   ;键盘模块
      CJNE A,#0FFH,KEY1
      RET
 KEY0:MOV P0,#0FFH  ;延时读状态
      LCALL TIME
      MOV A,P0
      RET
 KEY1:MOV B,A
      MOV R2,#0FFH
      MOV DPTR,#YCODE
 KEY4:INC R2
      MOV A,R2
      MOVC A,@A+DPTR
      CJNE A,B,KEY2
      MOV DPTR,#BCODE
       MOV A,R2
       MOVC A,@A+DPTR
       MOV 30H,A

       RET
 KEY2:CJNE A,#0FFH,KEY4
       RET
 TIME:MOV R7,#1FH
     BB:MOV R6,#0AH
     AA:NOP
        NOP
        DJNZ R6,AA
        DJNZ R7,BB

        RET
  YCODE: DB 7EH,07DH,78H,77H,0BEH,0BDH,0BBH,0B7H,0DEH,0DDH,0DBH,0D7H,0EEH,0EDH,0EBH,0E7H,0FFH ;特征代码
  BCODE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H                    ;自定义代码




 input:MOV W,#60H                        ;输入模块
       MOV WORD,#02H
       MOV H34,#03H   ;选择保持三位
       MOV Q,#34H
       LCALL TCH
BACK11:NOP
 BACK1:LCALL SHOW
       LCALL KEY
       CJNE A,#0FFH,SQ1
       SJMP BACK1
  SQ1:LCALL SAVE
      LCALL KEYOFF                ;等待弹起
      DJNZ H34,BACK11
  REPT:LCALL SHOW
              LCALL KEY
              CJNE A,#71H,REPT
              LCALL KEYOFF
              SJMP SV2
    SV2:MOV WORD,#03H
             MOV H34,#04H
             MOV Q,#33H
             LCALL TCH
        HQ22:NOP
         HQ2:LCALL SHOW
             LCALL KEY
             CJNE A,#0FFH,SQ2
             SJMP HQ2
         SQ2:LCALL SAVE
              LCALL KEYOFF
              DJNZ H34,HQ22
       REPT1:LCALL SHOW       ;判断’F‘
             LCALL KEY
             CJNE A,#071H,REPT1
             LCALL KEYOFF
             RET
       SAVE:MOV R0,#0
            MOV R1,#0
            MOV R0,Q
            MOV @R0,A
            MOV R1,W
            MOV @R1,A
            INC Q
            INC W
              RET
    KEYOFF:NOP             ;是否键弹起
   KEYDOWN:LCALL SHOW
           LCALL KEY
           CJNE A,#0FFH,KEYDOWN
           RET

  H34 DATA 43H
    Q DATA 44H
    W DATA 45H
 WORD DATA 41H  ;显示选择地址
  NO1 DATA 42H

    TCH:MOV R1,#00H  ;显示选择模块
        MOV R0,#31H
        MOV A,#00H
        MOV DPTR,#HELLO
        LCALL CHOOSE
        MOV R1,A
NEXTBIT:MOVC A,@A+DPTR
        CJNE A,#0FFH,C1
        RET
     C1:MOV @R0,A
        INC R0
        INC R1
        MOV A,R1
        SJMP NEXTBIT
CHOOSE:MOV A,WORD
       CJNE A,#0,CH1
       RET
   CH1:MOV NO1,A
   AG1:ADD A,#06H
       DJNZ NO1,AG1
       RET
HELLO:DB 76H,79H,38H,38H,3FH,00H,0FFH ;HELLO
      DB 39H,38H,3FH,6DH,79H,00H,0FFH ;CLOSE
      DB 06H,5EH,40H,00H,00H,00H,0FFH ;ID-
      DB 06H,40H,08H,08H,08H,08H,0FFH ;]-
      DB 3FH,73H,79H,37H,00H,00H,0FFH ;OPEN
   check:CLR C                         ;密码核对
        MOV R2,#0
        MOV R0,#60H
        MOV A,#0
        MOV DPTR,#MIMA
    CNEXT:MOV A,R2
          MOVC A,@A+DPTR
          CJNE A,#0FFH,NTQ
          SETB C
          MOV 70H,C
              RET
       NTQ:MOV B,A
                MOV A,@R0
                CJNE A,B,OVER               ;over 为返回input处
                INC R2
                INC R0
                SJMP CNEXT

           OVER:LJMP OVERQ
MIMA:DB 77H,77H,77H,77H,77H,77H,77H,0FFH

   HEX:MOV 31H,#0         ;开机logo
       MOV 32H,#0
       MOV 33H,#0
       MOV 34H,#0
       MOV 35H,#0
       MOV 36H,#0
       MOV R1,#31H
       MOV DPTR,#WEL
   BN2:MOV R4,#5
       MOV A,#00H
       MOVC A,@A+DPTR
       CJNE A,#0FFH,NEXT1
       INC R1
       CJNE R1,#37H,TY
       RET


 NEXT1:MOV @R1,A         ;走码模块
    SC:LCALL TIMESHOW
       LCALL SHOW
       DJNZ R4,SC
    TY:INC DPL
       SJMP BN2
 WEL:DB 20H,30H,70H,72H,76H,0FFH
     DB 01H,21H,31H,71H,79H,0FFH
     DB 20H,30H,38H,0FFH
     DB 20H,30H,38H,0FFH
     DB 20H,30H,38H,3CH,3EH,3FH,0FFH
END

⌨️ 快捷键说明

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