RTC 12C887 Issue with P89V51RD2

Thread Starter

scintrillating

Joined Dec 30, 2011
5
I have Interfaced 12C887 with P89V51RD2 but the time update does not occur. However the same code when burned in AT89C51, works perfectly...But due to memory restrictions of 4Kb in the Later, we have to use the former. Please help me out on this issue, ASAP!

The Code is :

Rich (BB code):
#include <P89V51Rx2.H>
#include<ABSACC.h>

#define port P3
#define lcd_dataport P2  // lcd_dataport for lcd
#define keypad P1  // Port for keypadpad
#define timeport P0 // Port for RTC

sbit rs = port^0;
sbit rw = port^1;
sbit en = port^5;

int hr, min, sec;

void delay(unsigned int msec) //Time delay function
{
int i,j ;
for(i=0;i<msec;i++)
for(j=0;j<1275;j++);
}

void lcdcmd(unsigned char item) //Function to send command to LCD
{
lcd_dataport = item;
rs=0;
rw=0;
en=1;
delay(1);
en=0;
return;
}

void lcddata(unsigned char item) //Funtion to send data on LCD
{
lcd_dataport = item;
rs=1;
rw=0;
en=1;
delay(1);
en=0;
}

void lcddata_string(unsigned char *str) // Function to send string on LCD
{
int i=0;
while(str!='\0')
{
lcddata(str);
i++;
delay(1);
}
}

void lcd(unsigned char str[10])  // Funtion display string on LCD
{
lcdcmd(0x38);
lcdcmd(0x0C);
lcdcmd(0x01);
lcdcmd(0x80);
lcddata_string(str);
}

void rtc_read(unsigned char item)
{
timeport = item;
}

void rtc_write(unsigned char item)
{
timeport = item;
}

void bcdconv(unsigned char mybyte)
{
unsigned char x,y;
x=mybyte&0x0F;
x=x|0x30;
y=mybyte&0xF0;
y=y>>4;
y=y|0x30;
lcddata(y);
lcddata(x);
}

void main()
{
delay(220);
XBYTE[11]=0x82;
XBYTE[4]=0x15;
XBYTE[2]=0x55;
XBYTE[0]=0x00;
XBYTE[11]=0x02;
lcd("TIME:");
while(1)
{
lcdcmd(0x88);
rtc_read(0x00);
}
}
 
Last edited by a moderator:
Top