PIC16F1829 DATA EEPROM 读写操作示例

发布者:CyberJolt最新更新时间:2020-02-09 来源: eefocus关键字:PIC16F1829  DATA  EEPROM  读写操作 手机看文章 扫描二维码
随时随地手机看文章

简介:本文给出一个PIC16F1829 DATA EEPROM 读写操作示例,感兴趣的朋友可以看看。

#define ReadRomString_CALL

#define WriteRomString_CALL


//*************************************

// 函数名称:ReadRomByte

// 函数功能:从ROM的某一地址读数据

// 入口参数:所读数据的地址

// 出口参数:所读地址的数据

//***************************************

uint8 ReadRomByte(uint8 addr)

{

    uint8 num;


    while(RD==1);//等待读完成

    EEADR=addr;//写入要读的址址

    EEPGD=0;//操作EEPROM

    RD=1;//执行读操作

    while(RD==1);//等待读完成

    num=EEDATA;

    return num;//返回读取的数据

}

//*************************************

// 函数名称:WriteRomByte

// 函数功能:从RAM的某一地址写数据

// 入口参数:所写数据的地址及数据

// 出口参数:无

//***************************************

void WriteRomByte(uint8 addr,uint8 data)

{

uint8 Tmp ;

uint8 i ;


Tmp = ReadRomByte(addr) ;

if(Tmp == data) return ; //如果读出数据与要写的数一样 直接返回


for(i=3;i>0;i--)//最多写三次

{

    while(WR==1);//等待写完成        

    EEADR=addr;//写入地址信息

    EEDATA=data;//写入数据信息

    EEPGD=0;//操作EEPROM

    WREN=1; //写EEPROM允许

    EECON2=0x55;//写入特定时序

    EECON2=0xaa;

    WR=1; //执行写操作

    while(WR==1);//等待写完成

    WREN=0;//禁止写入EEPROM

Tmp = ReadRomByte(addr) ;

if(Tmp == data)

{

break ;

}

}

}


//*************************************

// 函数名称:ReadRomString

// 函数功能:从RAM读一连串的数据

// 入口参数:所读数据的首地址 读得的数据的存放首地址 读数据 长度

// 出口参数:所读地址的数据

/***************************************/

#ifdef ReadRomString_CALL


void ReadRomString(uint8 InAddr,uint8 *OutAddr,uint8 DataLong)

{

uint8 i ;

for(i=DataLong;i>0;i--)

{

while(RD==1);//等待读完成

EEADR = InAddr;//写入要读的址址

EEPGD = 0;//操作EEPROM

RD = 1;//执行读操作

while(RD==1);//等待读完成

*OutAddr = EEDATA;


InAddr ++ ; //存储地址加1

OutAddr ++ ; //数据地址加1

}

}

#endif //ReadRomString_CALL

//*************************************

// 函数名称:WriteRomString

// 函数功能:从RAM写一连串的数据

// 入口参数:要写进RAM的首地址 要写的数据 写数据的长度

// 出口参数:无

/***************************************/

#ifdef WriteRomString_CALL

void WriteRomString(uint8 InAddr,uint8 *InData,uint8 DataLong)

{

uint8 i,j;

uint8 Tmp ;

for(i=DataLong;i>0;i--)

{

//读出的和要写的数据一致 直接写下一个数据

Tmp = ReadRomByte(InAddr) ;

if(Tmp != (*InData))  //读数据与要写数据不一至 进行写 操作

{

for(j=3;j>0;j--)//最多写三次

{

    while(WR==1);//等待写完成        

    EEADR = InAddr;//写入地址信息

    EEDATA = *InData;//写入数据信息

    EEPGD = 0;//操作EEPROM

    WREN = 1; //写EEPROM允许

    EECON2 = 0x55;//写入特定时序

    EECON2 = 0xaa;

    WR = 1; //执行写操作

    while(WR==1);//等待写完成

    WREN = 0;//禁止写入EEPROM

Tmp = ReadRomByte(InAddr) ;

if(Tmp == (*InData))

{

break ;

}

}  

}

InAddr ++ ; //存储地址加1

InData ++ ; //数据地址加1

}

#endif //WriteRomString_CALL


关键字:PIC16F1829  DATA  EEPROM  读写操作 引用地址:PIC16F1829 DATA EEPROM 读写操作示例

上一篇:PIC16F1829 TIMER0初始化程序
下一篇:PIC单片机的一些学习心得与总结

推荐阅读最新更新时间:2024-11-13 17:40

Arm收购Treasure Data,迈向物联网转型新阶段
新闻摘要: Arm收购企业数据管理领导厂商Treasure Data,启动设备到数据物联网平台 Treasure Data的技术将与Arm收购的Stream以及Arm Mbed Cloud相结合,打造业界首个端到端物联网连接、设备和数据管理平台 全新的Arm Pelion物联网平台将使企业能够快速、安全、可持续地从物联网、企业和第三方数据中获得具有商业可行性的洞察力 北京 – 2018年8月3日 – Arm今日宣布收购企业数据管理领导厂商Treasure Data,结合日前收购Steam的连接管理能力以及Arm Mbed Cloud平台,打造出全新的Pelion物联网平台(Pelion IoT Platform),让企
[物联网]
单片机小白学习之路(二十六)---EEPROM-IIC总线理解(一)
目标:EEPROM-IIC总线理解(一) 1.IIC总线简介 IIC(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。由于其管脚少,硬件实现简单,可扩展性强等特点,因此被广泛的使用在各大集成芯片内。 I2C是一个通信协议,它拥有严密的通信时序逻辑要求,而EEPROM是一个器件,只是这个器件采样了I2C协议的接口与单片机相连而已,二者并没有必然
[单片机]
单片机小白学习之路(二十六)---<font color='red'>EEPROM</font>-IIC总线理解(一)
基于AVR单片机中的EEPROM和FLASH的区别及使用方法解析
1.EEPROM介绍 Electrically Erasable Programmable Read Only Memory电气可拭除可编程只读存储器 发展过程:ROM – 》 PROM –》 EPROM –》 EEPROM 2.EEPROM和FLASH的区别 2.1 使用上的区别 FLASH用于存放程序,在程序运行过程中不能更改。我们编写的程序是烧录到FLASH中的; RAM用作程序运行时的数据存储器; EEPROM用于存放数据,是用来保存掉电后用户不希望丢的数据,开机时用到的参数。运行过程中可以改变。 FLASH是用于存储程序代码的,有些场合也可能用它来保存数据,当然前提是该单片机的FLASH工艺是可以自写的(运行中可
[单片机]
基于AVR单片机中的<font color='red'>EEPROM</font>和FLASH的区别及使用方法解析
MSP430单片机学习(一)——Flash读写操作
声明:本文以MSP430F2122为例说明Flash读写操作。 一、MSP430F2122的FLASH结构 FLASH模块结构图如图一 图一 MSP430 FLASH型单片机的FLASH存储器分为主存储器和信息存储器。主存储器根据不同的容量分为若干段(segment)每个段为512字节,每一个段又有四个块(block),每个块为64字节;信息存储器分为SegmengA、SegmentB、SegmentC和SegmentD,其中每个段各有64个字节。如图二所示 图二 二、FLASH模块的寄存器 相关的寄存器有:FCTL1、FCTL2、FCTL3和IE1 图三 图四 图五 图六
[单片机]
MSP430单片机学习(一)——Flash<font color='red'>读写</font><font color='red'>操作</font>
STM32入门学习笔记之EEPROM存储实验1
16.1 EEPROM概述 EEPROM(Electrically Erasable Programmable read only memory),称为带电可擦除可编程只读存储器,是一种可以断电保存数据的存储芯片,EEPROM可以在电脑上或专用设备上擦除已有信息,重新编程,一般用在即插即用设备中。 这种存储芯片可以通过高于普通电压的作用来擦除或重写,EEPROM芯片一般用在需要频繁存储数据,但是数据量不大的场合,本实验以Atmel公司设计的AT24C02为例,来详细描述EEPROM的基本操作。 AT24C02是一片存储容量在2Kbit的的存储芯片,即存储容量512Byte,通过IIC总线协议进行数据通信,STM32F1内置的I
[单片机]
STM32入门学习笔记之<font color='red'>EEPROM</font>存储实验1
STM8 EEPROM心得
对于STM8来说,其内部的EEPROM确实是个不错的东西,而且STM8S103/105价格已经非常便宜了,当然也可以用STM8S003/005代替,而且价格更便宜,大概在,1.2/2.0元左右,比103/105的便宜1元左右,而且有网友说,其实这两个系列的晶圆完全是一样的(这个是秘密哦),至于ST为什么要这样做,我们就不去猜了,大家应该都知道。 对于EEPROM的读写时间比较长,特别是写入的时间,都是在ms级的,想必大家都知道。但是对于单片机内置EEPROM来说,由于其内部特性,导致单片 机在操作EEPROM时,不能产生中断,当然这个问题一般来说是没有问题的。但是像有数码管扫描的产品来说,这个就是问题了,一般来说,3位数码管扫
[单片机]
I2C之知(六)--s3c2440用I2C接口访问EEPROM
        在前面阅读理解了I2C的官方协议文档后,就拿s3c2440和EEPROM来验证一下.         本来是想用s3c2440的SDA和SCL管脚复用为GPIO来模拟的,但在没有示波器的情况下搞了一周,怎么都出不来,最后还是放弃了.甚至参考了linux下i2c-algo-bit.c和i2c-gpio.c,依然没调出来.如果有示波器,可能很快就能找到原因,现在完全不知道问题出在哪里.其实想用GPIO模拟I2C的目的很简单,以一种简单而又深刻的方式来理解I2C.         既然这条路暂时没法走,退而求其次,用s3c2440的I2C接口来访问EEPROM,只要按照datasheet的来做,基本上不用考虑时序咯.
[嵌入式]
AVR单片机内部EEPROM方法
/************************************************************** ;eeprom.c 在AVR单片机中可以用在ATMEGA16和ATMEGA8中都可以用,在GCC下 ;编译通过。09年11月1号! 陈永飞已测试过! ;读/写atmega8515内部EEPROM的例子 ;将数据0....9写入eeprom中,再读出用数码管显示出来 ***************************************************************/ #include avr/io.h #include avr/eeprom.h #define uchar u
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved