BCF PORTB,CS ; END COMMAND, DESEL
ECT
; ******** WRITE 16-BIT WORD TO EEPROM *********
WRITE1 MOVFW ADDRESS ; GET EEPROM ADDRESS
MOVWF OUTBYT
BSF OUTBYT,6 ; WRITE COMMAND
CALL SENDC ; SEND COMMAND TO EEPROM
MOVLW 16D ; 16 DATA BITS
MOVWF CNT1
WRITE2
BTFSS TMP1,7 ; TEST MSB OF 16 BIT WORD
BCF PORTB,DIO ; SET DATA BIT
BTFSC TMP1,7 ; ... ELSE
BSF PORTB,DIO ; CLEAR DATA BIT
GOTO $+1 ; WAIT 2 US
RLF TMP2,F ; SHIFT LO BYTE
BSF PORTB,CLK ; CLOCK HIGH
GOTO $+1 ; WAIT 2 US
RLF TMP1,F ; SHIFT HI BYTE
BCF PORTB,CLK ; CLOCK LOW
DECFSZ CNT1,F
GOTO WRITE2 ; LOOP COUNTER
WAITACK
BCF PORTB,CS ; END OF WRITE COMMAND, DESELECT
MOVLW RDCFG
TRIS PORTB &nbs
p; ; DIO = INPUT
BSF PORTB,CS ; CS HIGH TO WAIT FOR ACK
WRITE5
BTFSC PORTB,DIO ; CHECK FOR ACK
GOTO WRITE6 ; WDT RESET ON NO ACK
GOTO WRITE5
WRITE6 BCF PORTB,CS ; END OF ACK
; ******* EEPROM WRITE DISABLE ****************
MOVLW 000H ; WRITE DISABLE COMMAND
MOVWF OUTBYT
CALL SENDC
BCF PORTB,CS ; END OF DISABLE COMMAND, DESELECT
INCF ADDRESS,F ; POINT TO NEXT EEPROM ADDRESS ( BY DEFAULT )
RETLW 0H
;------------------------------------------------------------------------------
;
; FUNCTION : EEREAD ()
;
; DESCRIPTION : READ 16 BIT VALUE FROM EEPROM
;
; NOTE : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------
EEREAD
MOVFW ADDRESS
MOVWF OUTBYT
BSF OUTBYT,7 ; COMMAND = READ
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.

