Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将值保存到PIC18?_C_Microcontroller - Fatal编程技术网

如何将值保存到PIC18?

如何将值保存到PIC18?,c,microcontroller,C,Microcontroller,我想将一些值存储到我的PIC18中,然后保留这些值,即使断电或装置复位。我想保存的值的一个例子是4位数字0100 任何帮助都将不胜感激 更新:这是一条路吗 unsigned char value; unsigned char DEEdata = 0x25; unsigned int DEEaddr = 0x04; DataEEInit(); dataEEFlags.val = 0; DataEEWrite(DEEdata,DEEaddr);

我想将一些值存储到我的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();

PIC微控制器中的EEPROM可以长时间保存数据。PIC16F84可以存储64个字节。虽然没有那么多,但它可以满足你的目的。本链接详细介绍了如何在PIC16中写入和读取EEPROM


在mikroc for PIC IDE中,您可以简单地使用:

EEPROM写入(地址,字符); char=EEPROM_Read(_Addres)


请注意:在写入后,如果延迟约20毫秒,则最好。

如果使用
HIGH-TECH
作为编译器,您只需从
EEPROM
进行写入和读取(这是断电后保持值的唯一方法,农场IC除外),并具有以下功能:

Write_b_eep
Read_b_eep
如果您安装了高科技,您可以从下面的目录中找到这些功能:

...\HI-TECH Software\PICC-18\9.80\sources\plib\EEP

数据写入EE需要几毫秒的时间。 如果你看它,它解释了 擦除和写入的电气和物理过程,并提供0.1到5毫秒的时间来实现这一点。 写入或查找微秒延迟例程(提示计时器适用于此) 将代码更改为

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的写入功能,有点“点火并忘记”。你命令它写
然后在背景中继续。如果您在写完后阅读速度过快,则无法保证达到预期值。

请检查我的更新。我提供了一个示例代码,但我不确定您是否会这样做。它应该可以工作。无论如何,如果您计划在汇编环境中工作,那么数据表就是一个不错的选择。这很好,不幸的是,我使用的是MPLAB C18编译器。我认为编写EE通常需要<3毫秒,但您对延迟的看法是正确的。我通常要等5分钟才能确定。。。