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

📄 text1.asm

📁 基于单片机的电子密码锁程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
     SC1:MOV  A,   R6
         SUBB A,   #02H
         JNC  SC11
         JNZ  SC2
    SC11:MOV  SBUF,#0FEH
         JNB  TI, $
         CLR  TI
     SC2:MOV  A,   R6
         SUBB A,   #03H
         JNC  SC22
         JNZ  SC3
    SC22:MOV  SBUF, #0FEH
         JNB  TI, $
         CLR  TI
     SC3:MOV  A,   R6
         SUBB A,   #04H
         JNC  SC33
         JNZ  SC4
    SC33:MOV  SBUF, #0FEH
         JNB  TI, $
         CLR  TI
     SC4:MOV  A,   R6
         SUBB A,   #05H
         JNC  SC44
         JNZ  SC5
    SC44:MOV  SBUF, #0FEH
         JNB  TI, $
         CLR  TI
     SC5:MOV  A,   R6
         SUBB A,   #06H
         JNC  SC55
         JNZ  SC6
    SC55:MOV  SBUF, #0FEH
         JNB  TI, $
         CLR  TI
     SC6:MOV  A,   R6
         SUBB A,   #07H
         JNC  SC66
         JNZ  EXIT_C
    SC66:MOV  SBUF, #0FEH
         JNB  TI, $
         CLR  TI
         NOP
         NOP
  EXIT_C:NOP
         CLR  RS1
         POP  PSW
         POP  ACC
         NOP
         RET

         ;密码输入错误的提示
     XSD:PUSH ACC
         PUSH PSW
         MOV  SBUF, #98H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #79H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #11H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #79H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #79H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #38H
         JNB  TI, $
         CLR  TI
         POP  PSW
         POP  ACC
         RET
         ;锁定状态显示
     XSE:PUSH ACC
         PUSH PSW
         MOV  SBUF, #0FEH
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #54H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #39H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #11H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #3DH
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #0FEH
         JNB  TI, $
         CLR  TI
         POP  PSW
         POP  ACC
         RET
     XSF:PUSH ACC
         PUSH PSW
         MOV  SBUF, #98H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #38H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #39H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #39H
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #3DH  ;U
         JNB  TI, $
         CLR  TI
         MOV  SBUF, #98H
         JNB  TI, $
         CLR  TI
         POP  PSW
         POP  ACC
         RET
  KILLXS:PUSH ACC
         PUSH PSW
         MOV  R7,   #06H
 LOOP_XS:MOV  SBUF, #0FFH
         JNB  TI, $
         CLR  TI
         DJNZ R7,LOOP_XS
         NOP
         POP  PSW
         POP  ACC
         RET
        TAB: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D1H,10H,90H ,0FFH
;****************************************************************
;*******               24C02读写程序                      ×××××××
;****************************************************************
 AT_RADE:PUSH  PSW
         PUSH  ACC
         MOV   R0,#AT1    ;CPU首地址
         MOV   R6,#06H    ;8字节
         MOV   R5,#08H    ;8位
         MOV   R7,#00H    ;24C02首地址
         LCALL READ       ;读数据
         NOP
         NOP
         POP   ACC
         POP   PSW
         RET

  AT_WR:
       PUSH  PSW
       PUSH  ACC
       MOV R0,#PS1       ;CPU RAM首地址
       MOV R6,#06H       ;8字节
       MOV R5,#08H       ;8 BIT
       MOV R7,#00H       ;24C02 RAM 首地址
       LCALL WRT        ;先写进
       NOP
       NOP
       POP  ACC
       POP  PSW
       RET

;---------------------
;读串行器件 R0:RAM的起始地址,R5:位计数器,
;R6:读的字节数,R7:读的起始地址
READ:  NOP
    NOP
  LCALL   START0
    MOV   A,#0A0H
    LCALL WRB
    LCALL ACK
    JB F0,RD_FAIL
    MOV   A,R7
    LCALL WRB
    LCALL CHK
    JB F0,RD_FAIL
    LCALL START0
    MOV   A,#0A1H
    LCALL WRB
    LCALL CHK
    JB F0,RD_FAIL
RD_N:  NOP
    NOP
    LCALL RDB
    MOV   @R0,A
    DJNZ  R6,GO_ACK
    LCALL N_ACK
    RD_FAIL:NOP
    LCALL STOP
    MOV   A,#0FFH
    RET              ;*************read
GO_ACK:   NOP
    NOP
    DEC   R0
    LCALL ACK
    JMP   RD_N
;写串行器件 R0:RAM的起始地址,R5:位计数器,
;R6:写的字节数(页),R7:写的起始地址
WRT:   NOP
    NOP
    LCALL START0
    MOV   A,#0A0H
    LCALL WRBYT
    LCALL CHK
    JB F0,WR_FAIL
    MOV   A,R7
    LCALL WRBYT
    LCALL CHK
    JB F0,WR_FAIL
WR_N:  NOP
    NOP
    MOV   A,@R0
    LCALL WRBYT
    LCALL CHK
    JB F0,WR_FAIL
    DEC   R0
    DJNZ  R6,WR_N
WR_FAIL:NOP
    LCALL STOP
    MOV   A,#0FFH
    RET              ;*********wrt
;--------------------
START0:   NOP
    NOP
    SETB  SDA
    SETB  SCL
    NOP
    NOP
    CLR   SDA
    NOP
    NOP
    CLR   SCL
    NOP
    RET
;-------------------
STOP:  NOP
    NOP
    CLR   SDA
    SETB  SCL
    NOP
    NOP
    SETB  SDA
    NOP
    NOP
    CLR   SCL
    NOP
    RET
;--------------------
ACK:   NOP
    NOP
    CLR   SDA
    SETB  SCL
    NOP
    NOP
    CLR   SCL
    SETB  SDA
    NOP
    RET
;--------------------
N_ACK: NOP
    NOP
    SETB  SDA
    SETB  SCL
    NOP
    NOP
    CLR   SCL
    CLR   SDA
    NOP
    RET
;--------------------
CHK:   NOP
    NOP
    SETB  SDA
    NOP
    NOP
    SETB  SCL
    NOP
    NOP
    MOV   C,SDA
    MOV   F0,C
    CLR   SCL
    NOP
    NOP
    RET
;---------------------
RDB:   NOP
    NOP
    SETB  SDA
    MOV   R5,#8
RD_B:  NOP
    NOP
    CLR   SCL
    NOP
    NOP
    SETB  SCL
    NOP
    NOP
    MOV   C,SDA
    RLC   A
    NOP
    NOP
    SETB  SDA
    CLR   SCL
    DJNZ  R5,RD_B
    NOP
    RET
;一字节数据发送子程序
WRBYT:  MOV  R5,#8
WLP:   RLC   A
    JC    WR1
    CLR   SDA
    SETB  SCL
    NOP
    NOP
    CLR   SCL
    DJNZ  R5,WLP
    RET
    WR1:  SETB SDA
    SETB  SCL
        NOP
    NOP
    CLR   SCL
    CLR   SDA
    DJNZ  R5,WLP
    RET
;--------------------
WRB:   NOP
    NOP
    MOV   R5,#8
WR_B:  NOP
    NOP
    SETB  SDA
    RLC   A
    JC WR_1
    CLR   SDA
    NOP
WR_1:  SETB  SCL
    NOP
    NOP
    CLR   SCL
    NOP
    CLR   SDA
    NOP
    DJNZ  R5,WR_B
    NOP
    RET

  T10MSD:SETB   RS0
         MOV    R4, #12
      TM:MOV    R3, #128
     TM6:DJNZ   R3, TM6
         DJNZ   R4, TM
         CLR    RS0
         RET

 T100MSD:MOV     R3,   #200
     D11:MOV     R4,   #125
     D12:DJNZ    R4,   D12
         DJNZ    R3,   D11
         RET
         
 T500MSD:LCALL   T100MSD
         LCALL   T100MSD
         LCALL   T100MSD
         LCALL   T100MSD
         LCALL   T100MSD
         NOP
         RET

     SEC:SETB   RS1
         MOV    R7,    #0AH
  SEC_LP:LCALL  T100MSD
         DJNZ   R7,SEC_LP
         NOP
         CLR    RS1
         RET
         END

⌨️ 快捷键说明

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