PIC16:自修改代码

时间:2012-07-12 16:42:25

标签: pic self-modifying

在微芯片PIC16单片机上,我有一个类似的程序:

off    = 2;
period = 10;

while (1) {
  if (counter == 1) {
    switch something on;
  }elseif (counter == off) {
    switch something off;
  }elseif (counter == period) {
    counter = 1;
  }
  counter++;
  pause;
}

在我的代码的通信模块(未显示)中,我想实现修改程序代码的可能性:更改分配给“off”和“period”的值。

注意:我不想进行变量赋值(在复位时丢失)但想要对存储在设备上的程序进行永久性更改。

有人能指出我正确的方向吗?理想情况下,我想在C中实现这一点。最简单的方法是什么? “off”和“period”应该是变量,指针还是常量,以便于实现?

非常感谢!

1 个答案:

答案 0 :(得分:3)

这通常是你在数据EEPROM中所做的事情,如果micro有它(大多数是16F的)。通常,您将在启动时从EEPROM读取并使用读取的值填充RAM变量,并使用代码中的变量。 Microchip提供了用于数据EEPROM读写序列的预编程代码。此外,如果器件没有EEPROM,您可以将特定的程序FLASH页面专用于数据存储,但是您必须一次缓冲和擦除整个页面,编辑链接器脚本等,这是一个完整的主题