如何将值保存到PIC18?

n3h0vuf2  于 2023-08-03  发布在  其他
关注(0)|答案(5)|浏览(87)

我想存储一些值到我的pic 18然后保留这些值,即使电源丢失或单位被重置。我想保存的值的一个例子是像这4个数字0100。
任何帮助将不胜感激!

更新:这是要走的路吗?

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

    DataEEInit();
    dataEEFlags.val = 0;

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

字符串

mtb9vblg

mtb9vblg1#

在mikroc_for_PIC IDE中,您可以简单地用途:
EEPROM_write(_Addres,char); char = EEPROM_Read(_Addres);
注意:在写入后,最好延迟大约20毫秒。

d4so4syb

d4so4syb2#

PIC单片机中的EEPROM可以长时间保存数据。PIC16F84可以存储64字节。虽然不多,但可以达到你的目的。本文详细介绍了PIC16中EEPROM的读写方法。
http://www.romux.com/tutorials/pic-tutorial/eeprom-data-memory

2ul0zpep

2ul0zpep3#

如果你使用HIGH-TECH作为编译器,你可以简单地写和读EEPROM(这是唯一的方法,以保持一个值后,停电,除了农场IC)与以下函数:

Write_b_eep
Read_b_eep

字符串
如果你安装了HIGH-TECH,你可以在下面的目录中找到这些函数:

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

8ulbf1ek

8ulbf1ek4#

数据写入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的写功能,有点‘火了就忘了’。你命令它写,它就在后台继续写。如果你在写完后读得太快,你就不能保证得到你可能期望的价值。

tpgth1q7

tpgth1q75#

使用MPLab IDE v6时,MCC使用存储器外设生成要使用的函数。
读/写可以这样实现:

uint16_t EEPROM_address = 0x00; // address in EEPROM space
// Writting to EEPROM
DATAEE_WriteByte(EEPROM_address, (uint8_t) 42 );
// Reading from EEPROM
uint8_t stored_EEPROM = DATAEE_ReadByte(EEPROM_address_N0);

字符串

相关问题