您的位置:控制工程论坛网论坛 » 嵌入式系统 » PIC单片机读写EEPROM实例及说明

flycat2008

flycat2008   |   当前状态:离线

总积分:94  2024年可用积分:0

注册时间: 2008-07-14

最后登录时间: 2008-07-17

空间 发短消息加为好友

PIC单片机读写EEPROM实例及说明

flycat2008  发表于 2008/9/13 22:30:44      1032 查看 1 回复  [上一主题]  [下一主题]

手机阅读

PIC单片机读写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 } !
; Written by Yamato.:)
;****************************************************************************************
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
btfsc EECON1,WR
goto $-1
bsf INTCON,GIE
bcf EECON1,WREN
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
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
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

本文章来自中国IT实验室:http://embed.chinaitlab.com/

 

1楼 0 0 回复
  • true_toyou

    true_toyou   |   当前状态:离线

    总积分:687  2024年可用积分:0

    注册时间: 2007-12-18

    最后登录时间: 2014-07-14

    空间 发短消息加为好友

    true_toyou   发表于 2008/9/13 22:30:44

    用过很多8位单片机,但就是没用过PIC的,虽说PIC的相关人员经常给我电话,经常给我送送资料,但一直没机会用他们的东西,觉得很是对不住,呵呵
    2楼 回复本楼

    引用 true_toyou 2008/9/13 22:30:44 发表于2楼的内容

总共 , 当前 /