??? 02/28/09 17:56 Read: times |
#162953 - with the help of Xbyte or XDATA Responding to: ???'s previous message |
I am accessing the RTC as an external memory. I am sending you a modified program which too worked but with the same problem (able to access RTC even when !cs==1)
//interfacing ds12c887 real time clock using p89c61x2bn /*pin out connections of the rtc with the micro controller. micro controller <--> rtc ------------------------- P0<---->ad0-ad7 !cs<---P2.5 ALE(pin 30)---->AS !RD(pin16)----->Data strobe !WR(pin17)----->R/W -------------------------- other rtc connections; MOT,--->GND; intel bus timimg is selected. RST-->Vcc; rest all i have left as no connection(SQW and IRQ). note: the other micro controller pins such as !PSEN , RST, XLAT0, XLAT1 and the max232 connections are made accordingly. and i am pretty sure about them*/ //program #include<reg51.h> #include<absacc.h> volatile char xdata OSC _at_ 0x800a;//register a volatile char xdata UPDATE _at_ 0x800b;//register b volatile char xdata SEC _at_ 0x8000; volatile char xdata HR _at_ 0x8004; volatile char xdata MIN _at_ 0x8002; volatile char xdata DD _at_ 0x8007; volatile char xdata MM _at_ 0x8008; volatile char xdata YY _at_ 0x8009; sbit rtcce=P2^5; #define output P0 void bcdconvert(unsigned x); void serialsend(unsigned x); void Delay(unsigned int); unsigned char second,hour,minute; void main(void) { TMOD=0x20;//serial communication settings TH1=0xfd; SCON=0x50; TR1=1; Delay(200); rtcce=1; OSC=0X2f;//to turn on the oscillator //RTC is already initialised & time is set. while(1){ rtcce=0;//here comes the problem whether it //is high or low. //the micro controller can read RTC. while( OSC & 0x80 );//to monitor uip second=SEC; hour=HR; minute=MIN; bcdconvert(hour); serialsend(':'); bcdconvert(minute); serialsend(':'); bcdconvert(second); serialsend(0x0d); serialsend(0x0a); } } void bcdconvert(unsigned mybyte){ unsigned char x,y; x=mybyte&0x0f; x=x|0x30; y=mybyte&0xf0; y=y>>4; y=y|0x30; serialsend(y); serialsend(x); } void serialsend(unsigned x){ SBUF=x; while(TI==0); TI=0; } void Delay(unsigned int itime){ unsigned int i,j,k; for(i=0;i<=itime;i++) for(j=0;j<=0xff;j++) for(k=0;k<=0x08;k++); } //end of program if there is no wrong with the connections and if there is another way of reading RTC. Please suggest me. thanks you. |
Topic | Author | Date |
RTC DS12c887 Chip select | 01/01/70 00:00 | |
WHY ON EARTH | 01/01/70 00:00 | |
with the help of Xbyte or XDATA | 01/01/70 00:00 | |
Speaking the Truth....... | 01/01/70 00:00 | |
I don't see | 01/01/70 00:00 | |
what you said is true. but there is another | 01/01/70 00:00 | |
Even with !CS == 1 ?? | 01/01/70 00:00 | |
I have done that before posting this thread! | 01/01/70 00:00 | |
How fast multimeter | 01/01/70 00:00 | |
actually.. | 01/01/70 00:00 | |
I just saw it | 01/01/70 00:00 | |
then I am in real trouble | 01/01/70 00:00 | |
replace the XBYTE with ... | 01/01/70 00:00 | |
sorry but... | 01/01/70 00:00 | |
or | 01/01/70 00:00 | |
Play with the ports | 01/01/70 00:00 | |
thank god | 01/01/70 00:00 | |
sorry I could not reply due to my ill health | 01/01/70 00:00 | |
it is | 01/01/70 00:00 | |
and Erik one last..![]() | 01/01/70 00:00 |