<いまさらPIC16F688 EEPROMデータ表示1>

取り敢えず、EEPROMの概要を掴むため次のことを行います。

PIC16F688ををPickit2にセットする


Pickit2ソフトを立ち上げてERASEする、このとき右のVDD電圧を5Vにしておく


次に下のプログラムを実行する

プログラム
-----------------------------------------------------------------------------------------
#include <htc.h>

__CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & INTIO);
__IDLOC(0001);



__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);

main()
{

}
-----------------------------------------------------------------------------------------

Pickit2ソフトでREADする。

EEPROMアドレスの0から7番地までの8bitにASCの0,1,2,3,4,5,6,7がメモリされている。

__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);



今度は、次のプログラムを実行してみます。

プログラム
-----------------------------------------------------------------------------------------
#include <htc.h>

__CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & INTIO);
__IDLOC(0001);

__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);

__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);

__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);

__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);

__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);

__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);

__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);

__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07);
__EEPROM_DATA(0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09);

main()
{

}
-----------------------------------------------------------------------------------------

Pickit2ソフトでREADすると、32行目のデータ9が書き込まれている。

__EEPROM_DATA(0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09);



※__EEPROM_DATAは、初期化で使われますが注意点として、1行8byte(8文字)ずつにすること。

下のようにすると、Buildエラーになります。

------------------------
__EEPROM_DATA(0x09);
------------------------

--------------------------------------------------------
__EEPROM_DATA(0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09);
__EEPROM_DATA(0x09,0x09,0x09);
--------------------------------------------------------