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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>