0

我想将一些值存储到我的 PIC18 中,然后即使断电或设备重置也保留这些值。我想保存的值的一个例子是这 4 位数字,0100。

任何帮助,将不胜感激!

更新:这是要走的路吗?

    unsigned char value;
    unsigned char DEEdata = 0x25;
    unsigned int  DEEaddr = 0x04;

    DataEEInit();
    dataEEFlags.val = 0;

    DataEEWrite(DEEdata,DEEaddr);
    value = DataEERead(DEEaddr);
    Nop();
4

4 回答 4

2

在 mikroc_for_PIC IDE 中,您可以简单地使用:

EEPROM_write(_Addres,char); char = EEPROM_Read(_Addres);

请注意:写入后最好延迟约 20 毫秒。

于 2014-06-25T07:23:34.983 回答
0

PIC微控制器中的EEPROM可以长时间保存数据。PIC16F84 可以存储 64 个字节。它不是那么多,但它可以达到你的目的。此链接中给出了如何在 PIC16 中写入和读取 EEPROM 的一个很好的描述。

http://www.romux.com/tutorials/pic-tutorial/eeprom-data-memory

于 2013-05-06T01:16:09.247 回答
0

如果您HIGH-TECH用作编译器,您可以使用以下功能简单地写入和读取EEPROM(这是在断电后保持值的唯一方法,FARM IC 除外):

Write_b_eep
Read_b_eep

如果您安装,您可以从以下目录中找到这些功能HIGH-TECH

...\HI-TECH Software\PICC-18\9.80\sources\plib\EEP
于 2016-04-10T04:55:01.000 回答
0

数据写入 EE 需要几毫秒。如果您查看https://en.wikipedia.org/wiki/EEPROM,它解释了擦除和写入的电气和物理过程,并给出了 0.1 到 5mS 之间的时间来实现这一点。编写或找到一个微秒延迟例程(提示计时器对此很有用)将您的代码更改为

unsigned char value;
unsigned char DEEdata = 0x25;
unsigned int  DEEaddr = 0x04;

DataEEInit();
dataEEFlags.val = 0;

DataEEWrite(DEEdata,DEEaddr);
wait_us(5000); // Wait 5mS.... data takes a while to burn into EE
value = DataEERead(DEEaddr); // now its available to read

EEPROM 写功能,有点“一劳永逸”。你命令它写,它在后台继续。如果您在写完后阅读速度过快,则无法保证您可能期望的值。

于 2018-09-20T09:43:18.103 回答