📄 eeprom.asm
字号:
#INCLUDE <P16F877A.INC>
ROMADD EQU 0X20;
W_DATA EQU 0X21;
R_DATA EQU 0X22;
#DEFINE BVAL 0X41; FIREST,PUT VAL TO W_DATA,WRITE TO EEPROM,THEN READ BACK TO R_DATA;
;B口必须全部接LED
ORG 0X0
NOP
NOP
BCF STATUS,RP0
BCF STATUS,RP1;
CLRF INTCON;
CLRF T1CON;
movlw 0x10
movwf ROMADD;
MOVLW BVAL;
MOVWF W_DATA;
CALL W_EEPROM;
CALL R_EEPROM;
MOVF R_DATA,W;
SUBWF W_DATA,W;
GOTO $;
W_EEPROM;入口参数:ROMADD,W_DATA 出口参数:无;写一个字节
BCF STATUS,RP1;
BCF STATUS,RP0; ;Select bank 0
MOVF ROMADD,W ;
BSF STATUS,RP1; Select bank 2
MOVWF EEADR ; Load EEPROM word address
BCF STATUS,RP1; Select bank 0
MOVF W_DATA,W
BSF STATUS,RP1; Select bank 2
MOVWF EEDATA ; Load data
BSF STATUS,RP0 ; Select bank 3
CLRF EECON1
BSF EECON1,WREN ; Enable write operation
MOVLW 055H
MOVWF EECON2 ; Sent 055h
MOVLW 0AAH
MOVWF EECON2 ; Send 0AAh
BSF EECON1,WR ; Intiates a write cycle
BTFSC EECON1,WR
GOTO $-1
BCF EECON1,EEIF ; Clear EEIF
BCF STATUS,RP1 ; Select bank 0
BCF STATUS,RP0
RETURN
R_EEPROM;入口参数,ROMADD,出口参数R_DATA
BCF STATUS,RP1;
BCF STATUS,RP0 ; Select bank 0
MOVF ROMADD,W;
BSF STATUS,RP1; ; Select bank 2
MOVWF EEADR ; Load EEPROM word address
BSF STATUS,RP0 ; Select bank 3
BCF EECON1,WR ; Clear
BSF EECON1,RD ; Initiates a read cycle
BCF STATUS,RP0 ; Select bank 2
MOVF EEDATA,W ; Get a data to W
BCF STATUS,RP1; Select bank 0
MOVWF R_DATA;
RETURN
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -