新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 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數據區(qū)進行讀寫的演示程序;

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

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

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




        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 北川| 馆陶县| 汶川县| 龙江县| 新乐市| 皋兰县| 浙江省| 商水县| 随州市| 永胜县| 通道| 图木舒克市| 聂拉木县| 西宁市| 渭南市| 宜良县| 洪雅县| 乐都县| 长宁县| 获嘉县| 宿松县| 家居| 鄯善县| 南木林县| 囊谦县| 琼海市| 宿松县| 汉中市| 白城市| 荃湾区| 咸宁市| 阿克苏市| 金乡县| 阿克| 兴安盟| 平南县| 德格县| 灵台县| 贵州省| 楚雄市| 独山县|