新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機的EEPROM讀寫實例及說明

        PIC單片機的EEPROM讀寫實例及說明

        作者: 時間:2011-02-24 來源:網絡 收藏
        ; PIC的EEPROM讀寫實例及說明
        ;****************************************************************************
        ; This is a program to test the function of readingwritting 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 ;讀計數
        WRC_ EQU 24H ;寫計數
        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_ ;寫入次數
        movwf REC_
        ;incf REC_ ;讀出次數
        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

        EEwr.asm程序說明:

        1、 本程序是對PIC16F877的EEPROM數據區進行讀寫的演示程序;

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

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

        51單片機相關文章:51單片機教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昭通市| 永宁县| 泾源县| 鹤岗市| 九龙城区| 吴川市| 皮山县| 南汇区| 砀山县| 来宾市| 峨眉山市| 海淀区| 黎城县| 通辽市| 托克逊县| 桐城市| 宝山区| 肥乡县| 镇原县| 云南省| 蓝山县| 太和县| 左权县| 比如县| 建德市| 财经| 镇平县| 定兴县| 白朗县| 盱眙县| 屏山县| 长阳| 磐安县| 内江市| 徐水县| 常州市| 武冈市| 迭部县| 忻州市| 曲周县| 松江区|