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

技術(shù)熱線: 4007-888-234
設(shè)計(jì)開發(fā)

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

開發(fā)工具

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

技術(shù)支持

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

新品推廣

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

新聞中心

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

PIC單片機(jī)的EEPROM讀寫實(shí)例及說明

更新時(shí)間: 2019-03-21
閱讀量:382

PIC單片機(jī)的EEPROM讀寫實(shí)例及說明

;****************************************************************************

; 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 } !


;****************************************************************************

include "p16f877.inc"

ADDR EQU 20H ;寫入地址寄存器

VALU EQU 21H ;寫入值

REC_ EQU 22H ;讀計(jì)數(shù)

WRC_ EQU 24H ;寫計(jì)數(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

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

bsf STATUS,RP1 ;bank2

movwf EEADR

bsf STATUS,RP0 ;bank3


EEw&r.asm程序說明:

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

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

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


军事| 延寿县| 昭平县| 崇仁县| 大英县| 新平| 遂昌县| 开封市| 武定县| 精河县| 昌黎县| 常山县| 平南县| 潮州市| 德庆县| 沁阳市| 永川市| 若尔盖县| 志丹县| 宜君县| 巴马| 板桥市| 西盟| 团风县| 墨竹工卡县| 敖汉旗| 清水县| 龙州县| 讷河市| 阆中市| 昌黎县| 昭觉县| 饶河县| 大关县| 长兴县| 阳城县| 昌乐县| 锦屏县| 汉沽区| 罗山县| 庆城县|