📄 eeprom.asm
字号:
;***********************************************************************
;FILENAME : EEPROM.ASM
;ROUTINE NAME : EE_IO
;INPUT : EE_IO_BUF
;OUTPUT : EE_IO_BUF
;RAM AFFECTED : EE_IO_BUF
;SFR AFFECTED : STATUS.C
;I/O AFFECTED : EEDI_PIN , EESK_PIN
;SUBROUTINE CALL:
;***********************************************************************
EE_IO:
MOVWF EE_IO_CNT
BCF EEDI_PIN
BCF EESK_PIN
EE_IO_LP:
BTFSS EE_IO_BUF,7 ;--|--EEPROM DI input = 1 or 0 ?
BCF EEDI_PIN ; |
BTFSC EE_IO_BUF,7 ; |
BSF EEDI_PIN ;--|
BSF EESK_PIN ;Set Clock is Rising Edge for EEPROM Data in/out
BCF STATUS,C ;--|--Read EEPROM DO Data
BTFSC EEDO_PIN ; |
BSF STATUS,C ;--|
RLF EE_IO_BUF,F
BCF EESK_PIN ;Set Clock is Low ?
DECFSZ EE_IO_CNT,F ;Transmit/Receive is Complete ?
GOTO EE_IO_LP ;No
BCF EEDI_PIN ;EEPROM DI Pin is Low
RETURN
;***********************************************************************
;FILENAME : EEPROM.ASM
;ROUTINE NAME : EE_READY
;INPUT :
;OUTPUT :
;RAM AFFECTED : TEMP_BUFFER1 , TEMP_BUFFER2
;SFR AFFECTED :
;I/O AFFECTED : EECS_PIN , EEDO_PIN
;SUBROUTINE CALL: EE_FINISH
;***********************************************************************
EE_READY:
BCF EECS_PIN
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BSF EECS_PIN ;>1us from CS low
MOVLW 0xFF
MOVWF TEMP_BUFFER1
MOVWF TEMP_BUFFER2
EE_READY_LP:
CLRWDT
BTFSC EEDO_PIN ;wait self-programming finish ?
GOTO EE_FINISH ;Yes
DECFSZ TEMP_BUFFER1,F
GOTO EE_READY_LP
DECFSZ TEMP_BUFFER2,F
GOTO EE_READY_LP
; BCF EECS_PIN ;Goto EE_FINISH:
;***********************************************************************
;FILENAME : EEPROM.ASM
;ROUTINE NAME : EE_FINISH
;INPUT :
;OUTPUT :
;RAM AFFECTED :
;SFR AFFECTED :
;I/O AFFECTED : EEDI_PIN , EESK_PIN , EECS_PIN
;SUBROUTINE CALL:
;***********************************************************************
EE_FINISH:
BCF EECS_PIN ;Clear changed pins to low
BCF EESK_PIN
BCF EEDI_PIN
RETURN
;***********************************************************************
;FILENAME : EEPROM.ASM
;ROUTINE NAME : EE_READ
;INPUT : EE_ADDR , EE_BUF0
;OUTPUT : EE_BUF0
;RAM AFFECTED : EE_IO_BUF
;SFR AFFECTED :
;I/O AFFECTED :
;SUBROUTINE CALL: EE_ACCESS , EE_IO , EE_FINISH
;***********************************************************************
EE_READ:
CALL EE_ACCESS
MOVLW B'11000000' ;110 : READ Command
MOVWF EE_IO_BUF
MOVLW 3 ;Out 3 bits command
CALL EE_IO
RLF EE_ADDR,W
MOVWF EE_IO_BUF
RLF EE_IO_BUF,F
MOVLW D'6'
CALL EE_IO ;Out 6 bits address
CLRF EE_IO_BUF
MOVLW D'8' ;Read 8 bits data
CALL EE_IO
MOVF EE_IO_BUF,W
MOVWF EE_BUF1
CLRF EE_IO_BUF
MOVLW D'8' ;Read 8 bits data
CALL EE_IO
MOVF EE_IO_BUF,W
MOVWF EE_BUF0
GOTO EE_FINISH
;***********************************************************************
;FILENAME : EEPROM.ASM
;ROUTINE NAME : EE_WRITE
;INPUT : EE_ADDR , EE_BUF0
;OUTPUT : EE_BUF0
;RAM AFFECTED : EE_IO_BUF
;SFR AFFECTED :
;I/O AFFECTED :
;SUBROUTINE CALL: EE_ACCESS , EE_IO , EE_READY
;***********************************************************************
EE_WRITE:
CALL EE_ACCESS
MOVLW B'10100000' ;101 : WRITE Command
MOVWF EE_IO_BUF
MOVLW D'3'
CALL EE_IO ;out 3 bits command
RLF EE_ADDR,W
MOVWF EE_IO_BUF
RLF EE_IO_BUF,F
MOVLW D'6' ;out 6 bits address
CALL EE_IO
MOVF EE_BUF1,W
MOVWF EE_IO_BUF
MOVLW D'8'
CALL EE_IO ;out 8 bits data
MOVF EE_BUF0,W
MOVWF EE_IO_BUF
MOVLW D'8'
CALL EE_IO ;out 8 bits data
GOTO EE_READY
;***********************************************************************
;FILENAME : EEPROM.ASM
;ROUTINE NAME : EE_ERASE
;INPUT : EE_ADDR
;OUTPUT :
;RAM AFFECTED : EE_IO_BUF
;SFR AFFECTED :
;I/O AFFECTED :
;SUBROUTINE CALL: EE_ACCESS , EE_IO , EE_READY
;***********************************************************************
EE_ERASE:
CALL EE_ACCESS
MOVLW B'11100000' ;111 : ERASE Command
MOVWF EE_IO_BUF
MOVLW D'3'
CALL EE_IO ;out 3 bits command
RLF EE_ADDR,W
MOVWF EE_IO_BUF
RLF EE_IO_BUF,F
MOVLW D'6' ;out 6 bits address
CALL EE_IO
GOTO EE_READY
;***********************************************************************
;FILENAME : EEPROM.ASM
;ROUTINE NAME : EE_WPROT
;INPUT : EE_ADDR
;OUTPUT :
;RAM AFFECTED : EE_IO_BUF
;SFR AFFECTED :
;I/O AFFECTED :
;SUBROUTINE CALL: EE_ACCESS , EE_IO , EE_FINISH
;***********************************************************************
EE_WPROT:
CALL EE_ACCESS
MOVLW B'10000000' ;100 : Write Enable/Disable Command
MOVWF EE_IO_BUF
MOVLW D'3'
CALL EE_IO ;out 3 bits command
MOVLW B'11000000' ;Enable
BTFSC STATUS,C
MOVLW B'00000000'
MOVWF EE_IO_BUF
MOVLW D'6' ;out 6 bits address
CALL EE_IO
GOTO EE_FINISH
;***********************************************************************
;FILENAME : EEPROM.ASM
;ROUTINE NAME : EE_ACCESS
;INPUT :
;OUTPUT :
;RAM AFFECTED :
;SFR AFFECTED : INTCON.GIE
;I/O AFFECTED : EECS_PIN
;SUBROUTINE CALL:
;***********************************************************************
EE_ACCESS:
BCF INTCON,GIE ;Disable all interrupt
BCF EESK_PIN
BCF EEDI_PIN
BSF EECS_PIN ;Select EEPROM
RETURN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -