这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » PICXC8EEPROM操作

共5条 1/1 1 跳转至

PICXC8EEPROM操作

助工
2021-08-13 00:00:33     打赏

要做一个报警功能的东东,要求可以通过遥控来改变遥控内容。由于对系统的稳定性要求很高,所以用了看门狗。


可是看门狗复位会引起所有寄存器重置,恢复到默认状态。遥控要改变的内容也被复位了,所以只能借助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

__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);




专家
2021-08-13 00:02:42     打赏
2楼

感谢楼主的分享,很实用了。


专家
2021-08-13 11:37:26     打赏
3楼

学习学习


工程师
2021-08-13 23:39:30     打赏
4楼

操作起来还是不错的


高工
2021-08-15 23:58:56     打赏
5楼

操作起来还是比较困难的


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]