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


書き込みと、読み出しをスイッチ操作で行います。0番地にA,1番地にB,2番地にC

読込みの設定にも、書き込みのときに使ったWRと同じ機能を持ったRDがあるので
このRDを使います。(読出す前はRD=1;にしておく、読出しが終わると0になる)

書き込み



読み出し


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


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


//__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
//__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
//__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
//__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);


#define _XTAL_FREQ 31000  //31k
#define JIKAN 200

func_rc4a();
func_rc4b();
func_ra5a();
func_ra5b();
func_rc5a();
func_rc5b();

func_read();
func_write();
func_add_reset();
add_cnt=0;

f_rc4a=0;
f_rc4b=0;
f_ra5a=0;
f_rc5a=0;
f_cnt=0;
char moji;

main()
{

OSCCON=0x00;  //31k
ANSEL=0x00;
CMCON0=0x07;


TRISA=0b11111111;  //RORTAを入力に設定
TRISC=0b00110000;  //RORTCを出力に設定
PORTC=0b00000000;  //RORTCをL(0)にする

EEPGD=0; //EEPROM読み書きするには0
WREN=1;  //EEPROM書き込みを出来るようにするには1

while(1){

	if(f_ra5a==0 && RA5==0) func_ra5a();  //eeprom_write
	if(f_ra5a==1 && RA5==1) func_ra5b();  //eeprom_write

	if(f_rc5a==0 && RC5==0) func_rc5a();  //add_cnt
	if(f_rc5a==1 && RC5==1) func_rc5b();  //add_cnt

	if(f_rc4a==0 && RC4==0) func_rc4a();  //eeprom_read
	if(f_rc4a==1 && RC4==1) func_rc4b();  //eeprom_read

	if(RC5==0 && RC4==0) func_add_reset();  //add_addリセット

	}
}

func_add_reset()
{
__delay_ms(200);
add_cnt=-1;
PORTC=0x00;
}

func_read()
{
RD=1;
PORTC=eeprom_read(add_cnt);
while(RD); //読込み終わって0になると抜ける
}

func_write()
{

	RC0=RA0;
	RC1=RA1;
	RC2=RA2;
	RC3=RA4;

moji=0x0F&PORTC;
moji=0x40|moji;
WR=1;  //書き込む前に1、終わると0になる
eeprom_write(add_cnt,moji);
while(WR); //書き込み終わって0になると抜ける
}

func_ra5a()
{
__delay_ms(200);
f_ra5a=1;
}

func_rc4a()
{
__delay_ms(200);
f_rc4a=1;
}

func_rc4b()
{
__delay_ms(200);
f_rc4a=0;
func_read();
//RC0=1;
}

func_ra5b()
{
__delay_ms(200);
f_ra5a=1;
func_write();
f_ra5a=0;
}

func_rc5a()
{
__delay_ms(200);
f_rc5a=1;
}

func_rc5b()
{
__delay_ms(200);
f_rc5a=0;
add_cnt+=1;
}
-----------------------------------------------------------------------------------------

回路図


基板に組み立てました