svinoth86
Newbie level 6
how to write in eeprom and read in pic16f877a......?
---------- Post added at 15:06 ---------- Previous post was at 15:05 ----------
#include<htc.h>
/////////////////////////////////////////lcd.c//////////////////////////////////////////////
#define rs RB1
#define rw RB2
#define en RB3
delay(unsigned char d)
{
while(d--);
}
lcd_data(unsigned char c)
{
PORTD=c;
rs=1;
rw=0;
en=1;
delay(50);
en=0;
}
lcd_cmd(unsigned char c)
{
PORTD=c;
rs=0;
rw=0;
en=1;
delay(50);
en=0;
}
lcd_str(unsigned char *s)
{
while(*s)
{
lcd_data(*s);
s++;
}
}
lcd_init()
{
lcd_cmd(0x38);
lcd_cmd(0x0c);
lcd_cmd(0x80);
}
////////////////////////////////////////////////////////////////////////////////////////////
rom_read()
{
unsigned char a;
EEADR=0x0f;//adddress location
EEPGD=0;//point eeprom
RD=1;//to start rread operation
while(RD==1);//wait to complete read operation
a=EEDATA;//data is in EEDATA
return a;
}
void rom_write()
{
//////EECON1reg=EEPGD — — — WRERR WREN WR RD/////
EEADR=0x0f;//adddress location
EEDATA=0x42;//data
EEPGD=0;//point eeprom
WREN=1;//enable program operation
//EEIF=0;
EECON2=0x55;
EECON2=0xAA;
WR=1;
WREN=0;//disable program operation
while(EEIF==0);//wait to complete write
EEIF=0;
}
//////////////////////////////serial communication//////////////////////////////////////////
sr_tx(unsigned char t)
{
TXREG=t;
while(!TXIF);
TXIF=0;
}
sr_init()
{
TXSTA=0x24; //CSRC TX9 TXEN SYNC — BRGH TRMT TX9D
RCSTA=0x90;//SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
SPBRG=0x19;//BR =9600b/s, Baud Rate = {FOSC(4MHZ)/(16 (X + 1))}
}
////////////////////////////////////////////////////////////////////////////////////////////
/*void convert(unsigned char e) // to get hex value
{
if(e<10)
lcd_data(e+0x30);
else
lcd_data(e+0x31);
}*/
void main()
{
// unsigned char a,b=16,c,y;
unsigned char a;
sr_init();
TRISB=0x00;
PORTB=0x00;
TRISD=0x00;
PORTD=0x00;
lcd_init();
// lcd_data('a');
while(1)
{
rom_write();//to write data to eeprom
a=rom_read();
lcd_data(a);
sr_tx(a);
/*c=a/b;
y=a%b;
convert(c);
convert;*/
//// strore the readed value to other location/////
/*EEADR=0x12;
EEDATA=a;
EEPGD=0;
WREN=1;
//EEIF=0;
EECON2=0x55;
EECON2=0xAA;
WR=1;
WREN=0;
while(EEIF==0);
EEIF=0; */
//lcd_data('b');
while(1);
}
}
---------- Post added at 15:06 ---------- Previous post was at 15:05 ----------
#include<htc.h>
/////////////////////////////////////////lcd.c//////////////////////////////////////////////
#define rs RB1
#define rw RB2
#define en RB3
delay(unsigned char d)
{
while(d--);
}
lcd_data(unsigned char c)
{
PORTD=c;
rs=1;
rw=0;
en=1;
delay(50);
en=0;
}
lcd_cmd(unsigned char c)
{
PORTD=c;
rs=0;
rw=0;
en=1;
delay(50);
en=0;
}
lcd_str(unsigned char *s)
{
while(*s)
{
lcd_data(*s);
s++;
}
}
lcd_init()
{
lcd_cmd(0x38);
lcd_cmd(0x0c);
lcd_cmd(0x80);
}
////////////////////////////////////////////////////////////////////////////////////////////
rom_read()
{
unsigned char a;
EEADR=0x0f;//adddress location
EEPGD=0;//point eeprom
RD=1;//to start rread operation
while(RD==1);//wait to complete read operation
a=EEDATA;//data is in EEDATA
return a;
}
void rom_write()
{
//////EECON1reg=EEPGD — — — WRERR WREN WR RD/////
EEADR=0x0f;//adddress location
EEDATA=0x42;//data
EEPGD=0;//point eeprom
WREN=1;//enable program operation
//EEIF=0;
EECON2=0x55;
EECON2=0xAA;
WR=1;
WREN=0;//disable program operation
while(EEIF==0);//wait to complete write
EEIF=0;
}
//////////////////////////////serial communication//////////////////////////////////////////
sr_tx(unsigned char t)
{
TXREG=t;
while(!TXIF);
TXIF=0;
}
sr_init()
{
TXSTA=0x24; //CSRC TX9 TXEN SYNC — BRGH TRMT TX9D
RCSTA=0x90;//SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
SPBRG=0x19;//BR =9600b/s, Baud Rate = {FOSC(4MHZ)/(16 (X + 1))}
}
////////////////////////////////////////////////////////////////////////////////////////////
/*void convert(unsigned char e) // to get hex value
{
if(e<10)
lcd_data(e+0x30);
else
lcd_data(e+0x31);
}*/
void main()
{
// unsigned char a,b=16,c,y;
unsigned char a;
sr_init();
TRISB=0x00;
PORTB=0x00;
TRISD=0x00;
PORTD=0x00;
lcd_init();
// lcd_data('a');
while(1)
{
rom_write();//to write data to eeprom
a=rom_read();
lcd_data(a);
sr_tx(a);
/*c=a/b;
y=a%b;
convert(c);
convert;*/
//// strore the readed value to other location/////
/*EEADR=0x12;
EEDATA=a;
EEPGD=0;
WREN=1;
//EEIF=0;
EECON2=0x55;
EECON2=0xAA;
WR=1;
WREN=0;
while(EEIF==0);
EEIF=0; */
//lcd_data('b');
while(1);
}
}