PIC 4X4按键做的密码锁

2020-02-08 12:16发布

INCLUDE<P16F877.INC>
#INCLUDE"MAIN.INC"
#INCLUDE"LEDSN.INC"
#INCLUDE"DEL.INC"
#INCLUDE"KEYS.INC"
#INCLUDE"EEPROM.INC"
EADR        EQU                31H
COUNT        EQU                32H

ORG                00H
        NOP       
MAIN:
        CALL        MAINIT
MLP:       
        CALL        DEL
        BTFSS        2FH,0
        GOTO        MLP       
        CALL        KEYS
        CALL        DISP
        BCF                2FH,0
        GOTO MLP
DELA
LEDNS
KEYFS
KEYSA
EPFLASH
KEYS:
        MOVF        KID,0
        ADDWF        PCL,1
KTAB:GOTO        KEYEN
        GOTO        KEYDEL
        GOTO        KEYSCAN
        GOTO        KEYUP
        GOTO        KEYPROC
        CLRF        KID
        RETLW        0
KEYPROC:
        CLRF        KID
        MOVLW        0AH
        SUBWF        VAL,0
        BTFSS        STATUS,C
        GOTO        KEYNUM
        ADDWF        PCL,F
        GOTO        KEYA        ;读数据并比较
        GOTO        KEYB        ;清0
        GOTO        KEYC        ;修改地址
        GOTO        KEYD        ;写入新数据
        GOTO        KEYE        ;--
        GOTO        KEYF        ;--
        CLRF        VAL
        RETLW        0
       
KEYA:        ;AFUN
;        MOVLW        0AH
;        MOVWF        DAT1
        BTFSC        2FH,3
        GOTO        KAEXT
        MOVLW        DAT1
        MOVWF        FSR
        MOVLW        6
        MOVWF        R0
KAL:CALL        EPREAD
        MOVF        DAT,W
        XORWF        INDF,W
        BNZ                KAEXT
        INCF        ADR,F
        DECFSZ        R0,F
        GOTO        KAL
        BSF                2EH,0
KAEXT:
        RETLW        0

KEYB:        ;BFUN
;        MOVLW        0BH
;        MOVWF        DAT1
        MOVLW        6
        MOVWF        R0
        MOVLW        DAT1
        MOVWF        FSR
        CLRW
KBL:CLRF        INDF
        ;MOVWF        INDF,1
        INCF        FSR,F
        DECFSZ        R0,1
        GOTO        KBL
        RETLW        0
               
KEYC:        ;CFUN
;        MOVLW        0CH
;        MOVWF        DAT1
        BSF        2EH,1
        MOVF        EADR,0
        MOVWF        ADR
        CALL        EPREAD
        XORLW        .200
        BNZ                KCEXT
;        CLRF        EADR
        MOVLW        7
        ADDWF        EADR,F
        ADDWF        ADR,F
KCEXT:
        RETLW        0
KEYD:
;        MOVLW        0DH
;        MOVWF        DAT1
        BTFSS        2EH,1
        GOTO        KCEXT
        MOVLW        DAT1
        MOVWF        FSR
        MOVLW        6
        MOVWF        R0
KDL:MOVF        INDF,0
        MOVWF        DAT
        CALL        EPWRITE
        INCF        FSR,F
        INCF        ADR,F
        DECFSZ        R0,F
        GOTO        KDL
        MOVF        EADR,0
        MOVWF        ADR
        MOVF        COUNT,W
        MOVWF        DAT
        CALL        EPWRITE
        INCF        COUNT,F
        BCF                2EH,1               
        RETLW        0
KEYE:

        RETLW        0
KEYF:
        RETLW        0
       
       
KEYNUM:       
        MOVLW        DAT1
        MOVWF        FSR
        MOVLW        2
        MOVWF        R1       
        MOVF        VAL,0
        MOVWF        R0
KPL:       
        MOVF        INDF,0
        MOVWF        KTMP
        MOVF        R0,0
        MOVWF        INDF
        INCF        FSR,1
        MOVF         INDF,0
        MOVWF        R0
        MOVF        KTMP,0
        MOVWF        INDF
        INCF        FSR,1
        DECFSZ        R1,1
        GOTO        KPL       
KNEXT:
        RETLW        0               
MAINIT:
        BANK1
        MOVLW        0FH
        MOVWF        TD
        CLRF        TC
        CLRF        TB
        BANK0
        CLRF        ADR
        CLRF        DAT
        CLRF        COUNT
        MOVLW        7
        MOVWF        EADR       
        MOVLW        04H
        MOVWF        DAT1       
        MOVLW        6H
        MOVWF        DAT2
        CLRF        DAT3
        CLRF        DAT4       
        MOVLW        0FFH
        MOVWF        PB
        MOVLW        0FFH
        MOVWF        PC
        RETLW        0
       
        END
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。