📄 eeprom.asm
字号:
#INCLUDE p16F877A.inc
ADDR EQU 20H; 写入寄存器地址
VALU EQU 21H;写入值
READCTR EQU 22H;读计数
WRITECTR EQU 24H;写计数
ORG 00H
GOTO Main
Main
BCF STATUS,RP1
BCF STATUS, RP0 ;SELECT BANK0
MOVLW 10H
MOVWF ADDR;
MOVLW 20H
MOVWF VALU
MOVLW 30H
MOVWF FSR
MOVLW 0FH
MOVWF WRITECTR
MOVWF READCTR
INCF READCTR
Write
BSF STATUS,RP1
BSF STATUS,RP0 ;bank3
BTFSC EECON1,WR;写是否完成
GOTO $-1
BCF STATUS,RP0
BCF STATUS,RP1 ;bank0
MOVF ADDR,W
BSF STATUS,RP1 ;bank2
MOVWF EEADR;写入地址
BCF STATUS,RP1 ;bank0
MOVF VALU,W;
BSF STATUS,RP1 ;bank2
MOVWF EEDATA;写入数据
BSF STATUS,RP0 ;bank3
BCF EECON1,EEPGD ;to data memory
BSF EECON1,WREN;开写使能位
BCF INTCON,GIE;关中断位
MOVLW 55h
MOVWF EECON2
MOVLW 0aah
MOVWF EECON2
BSF EECON1,WR
BTFSC EECON1,WR
GOTO $-1;TO COMPLENT
BSF INTCON,GIE
BCF EECON1,WREN
BCF STATUS,RP0
BCF STATUS,RP1 ;bank0
INCF ADDR,1
DECF VALU,1
DECFSZ WRITECTR ;all write,to read
GOTO Write
Read
BCF STATUS,RP1
BCF STATUS,RP0 ;bank0
DECF ADDR ;next value
MOVF ADDR,W
BSF STATUS,RP1 ;bank2
MOVWF EEADR
BSF STATUS,RP0 ;bank3
BCF EECON1,EEPGD
BSF EECON1,RD
BCF STATUS,RP0 ;bank2
MOVF EEDATA,W
BCF STATUS,RP1 ;bnak0
MOVWF INDF ;存读出值
INCF FSR
DECFSZ READCTR
GOTO Read
GOTO Main
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -