人狗畜禽COMPANY LIMITED|全是肉的高H文〈男男〉|全篇肉高H秘书被C办公室四爱|全黄H全肉共妻|全黄H全肉短篇禁乱NP慕浅浅|全黄H全肉短篇N男男

技術熱線: 4007-888-234
設計開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應用測試 完善的開發(fā)代碼案例庫分享

技術支持

從全面的產(chǎn)品導入到強大技術支援服務 全程貼心伴隨服務,創(chuàng)造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

新聞中心

提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)

PIC16F877單片機內部EEPROM讀寫實例

更新時間: 2019-03-21
閱讀量:514

PIC16F877單片機內部EEPROM讀寫實例****************************************************************************************
; This is a program to test the function of reading&writting for EEPROM.
; You can observe the value of register(30H--?) buy changing "VALU" and "WRC_".
; Notice that:it must be { ADDR+WRC_<=0ffh } !
; PIC單片機
;****************************************************************************************
include "p16f877.inc"
ADDR EQU 20H ;寫入地址寄存器
VALU EQU 21H ;寫入值
REC_ EQU 22H ;讀計數(shù)
WRC_ EQU 24H ;寫計數(shù)
org 0
goto main
main
bcf STATUS,RP1
bcf STATUS,RP0 ;bank0
movlw 10h
movwf ADDR ;寫入EEPROM初始值
movlw 90h
movwf VALU ;初始寫入值
movlw 30h
movwf FSR ;間址,讀出值初始存放地址
movlw 0Fh
movwf WRC_ ;寫入次數(shù)
movwf REC_
;incf REC_ ;讀出次數(shù)
wri_ ;寫子程序
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
bsf INTCON,GIE
bcf EECON1,WREN
bcf STATUS,RP0
bcf STATUS,RP1 ;bank0
incf ADDR,1
decf VALU,1
decfsz WRC_ ;all write,to read_
goto wri_
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 REC_
goto read_
goto main
end

EEw&r.asm程序說明:

1、 本程序是對PIC16F877單片機的EEPROM數(shù)據(jù)區(qū)進行讀寫的演示程序;

2、 wri_為寫入數(shù)據(jù)子程序,該子程序從ADDR寄存器確定的地址開始對EEPROM數(shù)據(jù)區(qū)寫入(范例從10H開始),每進行一次寫操作將使ADDR值加一;寫入數(shù)據(jù)的初始值由VALU寄存器給定(范例值為90H),每進行一次寫操作將使VALU值減一;寫入規(guī)定個數(shù)(由WRC_寄存器給定,范例值為0FH)的數(shù)值后,結束寫入,轉至read_。

3、 read_為讀出數(shù)據(jù)子程序,該子程序從ADDR寄存器當前值確定的地址開始對EEPROM數(shù)據(jù)區(qū)讀出(當前值=ADDR+WRC_<=0FFH),每進行一次讀操作將使ADDR值減一;讀出數(shù)據(jù)后程序將把該數(shù)據(jù)存入通用寄存器中,開始存放的地址由FSR的值指定(范例為30H),每進行一次讀操作將使FSR的值加一;讀出規(guī)定個數(shù)(由寄存器REC_給定,范例值為0FH)的數(shù)值后,結束讀出,回main。


临漳县| 蒲江县| 彩票| 义乌市| 平武县| 策勒县| 丹阳市| 开江县| 丹凤县| 买车| 莱西市| 新巴尔虎左旗| 内江市| 桂阳县| 赞皇县| 阿荣旗| 布拖县| 重庆市| 射洪县| 南昌市| 搜索| 罗甸县| 巴塘县| 张北县| 咸丰县| 榆中县| 三门峡市| 渭南市| 东乌珠穆沁旗| 贵南县| 长宁县| 日照市| 西青区| 蓝山县| 朔州市| 宁乡县| 明光市| 阳东县| 定远县| 枣庄市| 剑阁县|