PIC XC8 EEPROM操作
要做一个报警功能的东东,要求可以通过遥控来改变遥控内容。由于对系统的稳定性要求很高,所以用了看门狗。
可是看门狗复位会引起所有寄存器重置,恢复到默认状态。遥控要改变的内容也被复位了,所以只能借助EEPROM来存储报警标志了。
我用的是MPLAB X IDE +XC8 编译器,XC8在语法上跟PICC有点不一样
EEPROM操作有两种方法,在该存储空间中定义命名变量,或者使用块访问程序来读取或写入EEPROM。
1. EEPROM 对象
__eeprom限定符可用于指示应将变量定位到EEPROM中。
例 __eeprom int serialNos[4]
将int 类型数组serialNos[]放到EEPROM中,注意,在XC8中int长度是16bit,而在其他MCU中,比如PC,int数值大小跟系统有关。
2. EEPROM初始化
对于那些支持对其EEPROM数据区域进行外部编程的器件,可以使用__EEPROM_DATA()宏将初始值放入可用于编程的HEX文件。
例:#include <xc.h>
__EEPROM_DATA(0,1,2,3,4,5,6,7);
该宏有8个参数,代表8个数据值,每个值为1BYTE。未使用的值用指定为零,否则编译器会报错。
每次使用时,__EEPROM_DATA将从EEPROM地址零开始写入,自动递增8。
若想使用更多的数据,可通过多次调用该宏来定义所需数量的EEPROM数据。最好将该宏放在所有函数定义之外。
该宏不能在运行时写入EEPROM里,而是编程烧写的时候装入EEPROM中的。
使用__EEPROMSIZE来表示可用的EEPROM字节数。
3 . 访问函数
可以调用库函数来读取和写入EEPROM。
void eeprom_write(unsigned char addr, unsigned char value);
unsigned char eeprom_read(unsigned char addr);
使用这些函数时,会自动测试,并等待对EEPROM的所有并发写操作完成,再去执行所需的操作。
4. 访问宏
宏版本跟访问函数不同,宏用法如下。
EEPROM_READ(address)
EEPROM_WRITE(address, value)
EEPROM_READ宏会返回读取的字节。
在低档和中档器件中,如PIC8 PIC16 PIC18系列中,宏函数读取不会等EEPROM写操作完成,使用时应查询标志。
再使用宏版本访问时,最好将中断关闭。
例 : xc.h
while (WR)
continue;
value=EEPROM_READ(address);
PIC XC8 EEPROM操作的更多相关文章
- 51 EEPROM操作模板
各个型号容量及扇区请查datasheet #include <reg52.h> #include "intrins.h" typedef unsigned char b ...
- STM8S EEPROM 操作
STM8S 内置EEPROM,对于非常大须要带记忆的产品来说,是个非常好的资源,下面是我个人摸索出来的,而且验证OK,大家如须要可放心使用. #define EEPROMADDR0X000 ((u32 ...
- STM32L系列单片机内部EEPROM的读写
STM32L系列单片机内部提供了EEPROM存储区域,但实质上,其FLASH也是EEPROM类型,只不过有一块区域被开放出来专门用作EEPROM操作而已.STM32L的EEPROM使用寿命设计为100 ...
- 开源word操作组件DocX的记录
开源word操作组件DocX的记录 使用开源word操作组件DocX的记录 1.DocX简介 1.1 简介 DocX是一个在不需要安装word的情况下对word进行操作的开源轻量级.net组件,是由爱 ...
- 使用开源word操作组件DocX的记录
1.DocX简介 1.1 简介 DocX是一个在不需要安装word的情况下对word进行操作的开源轻量级.net组件,是由爱尔兰的一个叫Cathal Coffey的博士生开发出来的.DocX使得操作w ...
- 单片机成长之路(51基础篇) - 021 STC89C51系列单片机 内部EEPROM 驱动
最近又看了一下关于stc单片机的知识,感觉在使用中EEPROM是个经常用到的东西,特地学习了一下,给大家分享一下心得,如有不足,多多包涵,废话不多说,一图解千言,先上图: /*------------ ...
- vue操作的填坑之旅
1.渲染时图片存在,但损坏,会出现破损图,界面很丑呀 解决方案:调用vue显示的图片的时候会有一些图片404的问题,为了界面的美观,这里进行图片错误是显示默认图片的处理,下面贴出代码 data: { ...
- 第十六章 IIC协议详解+UART串口读写EEPROM
十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...
- DocX操作word生成报表
1.DocX简介 1.1 简介 DocX是一个在不需要安装word的情况下对word进行操作的开源轻量级.net组件,是由爱尔兰的一个叫Cathal Coffey的博士生开发出来的.DocX使得操作w ...
随机推荐
- Codility Tree Height
public class HeightOfTreeSolution { static int height=-1; public int solution(Tree T) { // write you ...
- Python’s SQLAlchemy vs Other ORMs[转发 7] 比较结论
Comparison Between Python ORMs For each Python ORM presented in this article, we are going to list t ...
- [MISSAJJ原创] UITableViewCell移动及翻转出现的3D动画效果[58同城cell移动效果]
2015-11-20 很喜欢在安静的状态, 听着音乐,敲着键盘, 和代码们浓情对话, 每一份代码的积累, 都让自己觉得很充实快乐!Y(^_^)Y. 看到58同城app的cell有动画移动出现的特效,很 ...
- composer 一些使用说明
1 使用订制的包 配置 "repositories": [ { "type": "path", "url": " ...
- 在为ListView设置adapter时出错
为listView设置adapter,代码如下: SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems, R.layout.m ...
- axis2开发webservice入门到精通
1,准备工作: 首先我们要下载:axis2-1.4.1-war(发布webservice),axis2-1.4.1-bin.zip(webservice调用使用的各种包). 下载好了,把axis2-1 ...
- ASP.NET MVC4 请不要将你的Control命名为APIController
今天小猪就遇到了这个坑,虽然小猪知道MVC4已经默认提供了APIController类,这样如果某Control继承自这个APIController的话会使用其自带的REST服务等等,但是之前小猪想我 ...
- Spring事务管理器的应对
Spring抽象的DAO体系兼容多种数据访问技术,它们各有特色,各有千秋.像Hibernate是非常优秀的ORM实现方案,但对底层SQL的控制不太方便:而iBatis则通过模板化技术让你方便地控制SQ ...
- iOS开发_内存泄漏、内存溢出和野指针之间的区别
今天,在工作群中,被问到了内存泄漏和野指针指向的区别,自己答的不是很好,特意回来查了资料,在博文中总结一下经验,欢迎指正. 内存泄漏:是指在堆区,alloc 或new 创建了一个对象,但是并没有放到自 ...
- python网络编程【三】(网络服务器)
建立一个服务器需要以下4步: 1.建立socket对象. 2.设置socket选项(可选的) 3.绑定到一个端口(同样,也可以是一个指定的网卡). 4.侦听连接. 下面代码片段可以实现这些功能: ho ...