您的位置:首页单片机PIC单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

PIC16F877单片机内部EEPROM读写实例

[日期:2008-01-25 ] [来源:东哥开发网(www.picavr.com) 作者:] [字体: (投递新闻)

;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 } !
; ;****************************************************************************************
include "p16f877.inc"
ADDR EQU 20H        ;写入地址寄存器
VALU EQU 21H        ;写入值
REC_ EQU 22H        ;读计数
WRC_ EQU 24H        ;写计数

    ORG     0000H        ;
    NOP                  ;放置一条ICD必须的空操作指令
    GOTO   main          ;
   ;ORG     0008H        ;

   ;org 0
   ;goto main
main nop
     bcf STATUS,RP1
     bcf STATUS,RP0   ;bank0
     movlw 20h
     movwf ADDR       ;写入EEPROM初始值
;********************************************************************************************  
 
     clrf  8
     bcf   STATUS,2
DS2  nop
     call  DELAY
     incf  8,1
     movf  8,0
     bcf   STATUS,2
     XORLW 0bh
     btfss STATUS,Z
     goto   DS1     
     clrf  8
     bcf   STATUS,2
DS1  movf  8,0
     bcf   STATUS,2
     call  TABLE1
;***********************************************************************************************
     ;movlw 4fh
     movwf VALU       ;初始写入值
     movlw 30h
     movwf FSR        ;间址,读出值初始存放地址
     movlw 0Bh
     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
     btfsc EECON1,WR
     goto $-1
     bsf INTCON,GIE
     bcf EECON1,WREN
     bcf STATUS,RP0
     bcf STATUS,RP1      ;bank0
     incf ADDR,1
     ;incf VALU,1
     ;decf VALU,1
     decfsz WRC_         ;all write,to read_
     ;goto wri_
      goto  DS2
 
read_                    ;读子程序
      call  TABLE1
      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  
;*******************************************************************************
TABLE1                                  ;取第二行的显示码TEL0755 27528531
            ADDWF 2                     ;地址偏移量加当前PC值
            RETLW 30H       ;0
            RETLW 32H                   ;2
            RETLW 30H                   ;0                                                 
     RETLW 33H       ;3
     RETLW 33H       ;3                            
     RETLW 31H       ;1
     RETLW 36H       ;6
     RETLW 30H       ;0
     RETLW 30H       ;0
     RETLW 30H       ;0
     RETLW 33H       ;3
;*******************************************************************************
DELAY
     MOVLW   0FF
     MOVWF   11
DTLAY1 DECFSZ   11
      GOTO   DTLAY1
      RETLW  0
;*******************************************************************************
end


EEw&r.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。

 

阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐