• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    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單片機教程




    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 台山市| 珲春市| 双流县| 吴堡县| 深州市| 鄢陵县| 晋城| 中超| 大兴区| 云阳县| 府谷县| 阳春市| 安达市| 青岛市| 黄大仙区| 射洪县| 南平市| 乌拉特后旗| 亳州市| 郁南县| 河西区| 南漳县| 敦煌市| 汾阳市| 林芝县| 交城县| 阜城县| 合肥市| 吉林市| 乌鲁木齐县| 富蕴县| 彝良县| 日喀则市| 遵义市| 萍乡市| 贵阳市| 伊川县| 达孜县| 尼玛县| 射洪县| 壶关县|