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

📄 12864lcdlocker.asm

📁 该汉字密码锁
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        MOV   A,TIMERS
        CLR   C
       SUBB   A,#01H
        JNZ   PS_2
        MOV   PS1,BUFF        ;依照顺序存放密码


        JNB   F_6,PS_N_11
        MOV   NEWPRD1,PS1     ;存放修改密码的第一次输入密码的第一位
   PS_N_11:
        JNB   F_4,PS_N_1
        MOV   TWOPRD1,PS1     ;存放修改密码的第二次输入密码的第一位
    PS_N_1:
         JB   F_5,PS_A1
       SETB   PASSBIT1
        MOV   A,#9AH        ;前1位密码显示INPUT:*_
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D

        MOV   A,#9BH
      LCALL   SEND_I

       AJMP   NEXT

   KEY_OUT:
       AJMP   NEXT9

     PS_A1:
        MOV   A,#8AH        ;前1位密码显示INPUT:*_
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D

        MOV   A,#8BH
      LCALL   SEND_I
       AJMP   NEXT




      PS_2:
        MOV   A,TIMERS
       SUBB   A,#02H
        CLR   C
        JNZ   PS_3
        MOV   PS2,BUFF

        JNB   F_6,PS_N_12
        MOV   NEWPRD2,PS2     ;存放修改密码的第一次输入密码的第二位
   PS_N_12:
        JNB   F_4,PS_N_2
        MOV   TWOPRD2,PS2     ;存放修改密码的第二次输入密码的第二位

    PS_N_2:
         JB   F_5,PS_A2
        CLR   PASSBIT1
       SETB   PASSBIT2
        MOV   A,#09BH        ;前2位密码显示INPUT:**_
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D
        MOV   A,#9CH
      LCALL   SEND_I
       AJMP   NEXT

     PS_A2:
        MOV   A,#08BH        ;前2位密码显示INPUT:**_
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D
        MOV   A,#8CH
      LCALL   SEND_I
       AJMP   NEXT

      PS_3:
        MOV   A,TIMERS
        CLR   C
       SUBB   A,#03H
        JNZ   PS_4
        MOV   PS3,BUFF

        JNB   F_6,PS_N_13
        MOV   NEWPRD3,PS3     ;存放修改密码的第一次输入密码的第三位
   PS_N_13:
        JNB   F_4,PS_N_3
        MOV   TWOPRD3,PS3     ;存放修改密码的第二次输入密码的第三位
    PS_N_3:
         JB   F_5,PS_A3
        CLR   PASSBIT2
       SETB   PASSBIT3
        MOV   A,#09CH        ;前3位密码显示INPUT:***_
      LCALL   SEND_I

        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D
        MOV   A,#9DH
      LCALL   SEND_I
       AJMP   NEXT

     PS_A3:
        MOV   A,#08CH        ;前3位密码显示INPUT:***_
      LCALL   SEND_I

        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D
        MOV   A,#8DH
      LCALL   SEND_I
       AJMP   NEXT


      PS_4:
        MOV   A,TIMERS
        CLR   C
       SUBB   A,#04
        JNZ   PS_5
        MOV   PS4,BUFF

        JNB   F_6,PS_N_14
        MOV   NEWPRD4,PS4     ;存放修改密码的第一次输入密码的第四位
   PS_N_14:
        JNB   F_4,PS_N_4
        MOV   TWOPRD4,PS4     ;存放修改密码的第二次输入密码的第四位

    PS_N_4:
         JB   F_5,PS_A4
        CLR   PASSBIT3
       SETB   PASSBIT4
        MOV   A,#09DH        ;前4位密码显示INPUT:****_
      LCALL   SEND_I

        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D
        MOV   A,#9EH
      LCALL   SEND_I
       AJMP   NEXT

     PS_A4:
        MOV   A,#08DH        ;前4位密码显示INPUT:****_
      LCALL   SEND_I

        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D
        MOV   A,#8EH
      LCALL   SEND_I
       AJMP   NEXT


      PS_5:
        MOV   A,TIMERS
        CLR   C
       SUBB   A,#05
        JNZ   PS_6
        MOV   PS5,BUFF

        JNB   F_6,PS_N_15
        MOV   NEWPRD5,PS5     ;存放修改密码的第一次输入密码的第五位
   PS_N_15:
        JNB   F_4,PS_N_5
        MOV   TWOPRD5,PS5     ;存放修改密码的第二次输入密码的第五位

    PS_N_5:
         JB   F_5,PS_A5
        CLR   PASSBIT4
       SETB   PASSBIT5
        MOV   A,#09EH        ;前5位密码显示INPUT:*****_
      LCALL   SEND_I

        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D
        MOV   A,#9FH
      LCALL   SEND_I
       AJMP   NEXT

     PS_A5:
        MOV   A,#08EH        ;前5位密码显示INPUT:*****_
      LCALL   SEND_I

        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D
        MOV   A,#8FH
      LCALL   SEND_I
       AJMP   NEXT

      PS_6:
        MOV   A,TIMERS
        CLR   C
       SUBB   A,#06H
        JNZ   NEXT
        MOV   PS6,BUFF

        JNB   F_6,PS_N_16
        MOV   NEWPRD6,PS6     ;存放修改密码的第一次输入密码的第六位
    PS_N_16:
        JNB   F_4,PS_N_6
        MOV   TWOPRD6,PS6     ;存放修改密码的第二次输入密码的第六位
     PS_N_6:
         JB   F_5,PS_A6

        MOV   A,#09FH        ;前3位密码显示INPUT:***_
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D
       AJMP   NEXT

     PS_A6:
        MOV   A,#08FH        ;前3位密码显示INPUT:***_
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0F1H        ;光标闪烁,后移一位
      LCALL   SEND_D

        MOV   A,#08FH
      LCALL   SEND_I
       AJMP   NEXT



      NEXT:

        MOV   R7,TIMERS       ;比较输入的次数
       CJNE   R7,#06H,FULL
      FULL:
         JC   NEXT9
       SETB   BUF_FULL        ;输入密码位数够6位,密码满标志位,置1。
        MOV   TIMERS,#06H     ;密码够6位标志位,置1。
     NEXT9:

       AJMP   CH_KEY


;--------------------退格键处理子程序------------------
     BACKS:

        NOP
        NOP

         JB   F_7,BACKS_OUT
         JB   IRIN_1,BACKS_OUT

        CLR   BUF_FULL               ;密码满标志位清零
        MOV   A,TIMERS

        CLR   C
       SUBB   A,#01H                 ;清除6位密码中的第一位,光标闪烁
        JNZ   BACK1
        DEC   TIMERS
        MOV   PS1,#0
         JB   F_5,BACK_A1

        MOV   A,#9AH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D

        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#09AH
      LCALL   SEND_I

       AJMP   BACK_NEXT
 BACKS_OUT:
       AJMP   BACK_NEXT

   BACK_A1:
        MOV   A,#8AH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D
        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#08AH
      LCALL   SEND_I
       AJMP   BACK_NEXT



     BACK1:
        MOV   A,TIMERS
        CLR   C
       SUBB   A,#02H                 ;清除6位密码中的第二位,
        JNZ   BACK2
        DEC   TIMERS
        MOV   PS2,#0
         JB   F_5,BACK_A2
        CLR   PASSBIT1
        MOV   A,#9BH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D
        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#09BH
      LCALL   SEND_I
       AJMP   BACK_NEXT

   BACK_A2:
        MOV   A,#8BH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D
        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#08BH
      LCALL   SEND_I
       AJMP   BACK_NEXT


     BACK2:
        MOV   A,TIMERS
        CLR   C
       SUBB   A,#03H                ;清除6位密码中的第三位
        JNZ   BACK3
        DEC   TIMERS
        MOV   PS3,#0
         JB   F_5,BACK_A3
        CLR   PASSBIT2
       SETB   PASSBIT1
        MOV   A,#9CH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D
        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#09CH
      LCALL   SEND_I
       AJMP   BACK_NEXT

   BACK_A3:
        MOV   A,#8CH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D
        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#08CH
      LCALL   SEND_I
       AJMP   BACK_NEXT


     BACK3:
        MOV   A,TIMERS
        CLR   C
       SUBB   A,#04H                ;清除6位密码中的第四位
        JNZ   BACK4
        DEC   TIMERS
        MOV   PS4,#0
         JB   F_5,BACK_A4
        CLR   PASSBIT3
       SETB   PASSBIT2
        MOV   A,#9DH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D
        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#09DH
      LCALL   SEND_I

       AJMP   BACK_NEXT

   BACK_A4:
        MOV   A,#8DH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D
        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#08DH
      LCALL   SEND_I

       AJMP   BACK_NEXT

     BACK4:
        MOV   A,TIMERS
        CLR   C
       SUBB   A,#05H                ;清除6位密码中的第五位
        JNZ   BACK5
        DEC   TIMERS
        MOV   PS5,#0
         JB   F_5,BACK_A5
        CLR   PASSBIT4
       SETB   PASSBIT3
        MOV   A,#9EH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D
        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#09EH
      LCALL   SEND_I
       AJMP   BACK_NEXT

   BACK_A5:
        MOV   A,#08EH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D
        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#08EH
      LCALL   SEND_I
       AJMP   BACK_NEXT


     BACK5:
        MOV   A,TIMERS
        CLR   C
       SUBB   A,#06H                ;清除6位密码中的第六位
        JNZ   BACK_NEXT
        DEC   TIMERS
        MOV   PS6,#0
         JB   F_5,BACK_A6
        CLR   PASSBIT5
       SETB   PASSBIT4
        MOV   A,#9FH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D
        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#09FH
      LCALL   SEND_I
       AJMP   BACK_NEXT

   BACK_A6:
        MOV   A,#8FH
      LCALL   SEND_I


        MOV   A,#0A1H
      LCALL   SEND_D
        MOV   A,#0A0H
      LCALL   SEND_D


        MOV   A,#08FH
      LCALL   SEND_I




 BACK_NEXT:

       AJMP   CH_KEY

;*****************功能按键比较并且跳转*************
   KEY_FUN:
        CLR   FLAG1
        CLR   C
        MOV   A,BUFF
       SUBB   A,#11H
        JNZ   MODI_K
       LJMP   BACKS           ;跳转到退格键处理程序

  MODI_K:
        CLR   C
        MOV   A,BUFF
       SUBB   A,#16H
        JNZ   ENTER_K
         JB   ADJ_RL,KK1     ;调整日历的时候,作为逆序调整日历功能键
       LJMP   MODI           ;跳转到修改密码处理程序
       KK1:
       SETB   KO
       AJMP   F4_K1

   ENTER_K:

⌨️ 快捷键说明

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