Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
03/04/08 13:30
Read: times


 
#151868 - perfect!!
Responding to: ???'s previous message
i have got it
thanks a lot!!! thanks to Stefan Kanev, Andy Neil and all others who advised me in this thread
i am sending the modified and final program that got executed perfectly.
//interfacing ds12c887 real time clock using p89c61x2bn
/*pin out connections of the rtc with the micro controller.
micro controller <--> rtc
-------------------------
P0<---->ad0-ad7
ALE(pin 30)---->AS
!RD(pin16)----->Data strobe
;no other connections are made to the !RD pins
!WR(pin17)----->R/W
;no other connections are made to the !WR pins
--------------------------
other rtc connections;
MOT,CS,--->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;

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);
	OSC=0X2f;//to turn on the oscillator
	UPDATE=0X8b;//to stop update

	SEC=0X01;	//set time
	MIN=0X01;	
	HR=0X01;
   	DD=0X01;	//21-02-08
	MM=0X01;
	YY=0X08;

	UPDATE=0X0b;//start update
	while(1){
	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

i have even modified the above code to generate square wave output and it worked brilliantly.
thanks to 8052 forum. You can close this thread now.

List of 27 messages in thread
TopicAuthorDate
Real Time Clock and other            01/01/70 00:00      
   How to post source code            01/01/70 00:00      
      post- source code            01/01/70 00:00      
   internal XRAM?            01/01/70 00:00      
   its not logical but            01/01/70 00:00      
      modified code using UIF            01/01/70 00:00      
         re            01/01/70 00:00      
            UIP            01/01/70 00:00      
               Will get stuck            01/01/70 00:00      
                  If you used _at_ instead of XBYTE ....            01/01/70 00:00      
         Comments            01/01/70 00:00      
            reply to coments            01/01/70 00:00      
               _at_ instead of XBYTE            01/01/70 00:00      
                  pin assignments            01/01/70 00:00      
                     You still haven't answered the questions!            01/01/70 00:00      
                        xdata i/o            01/01/70 00:00      
                     just do it            01/01/70 00:00      
                        Default            01/01/70 00:00      
                  sorry i can't reply due to my ill health            01/01/70 00:00      
                     address            01/01/70 00:00      
                        perfect!!            01/01/70 00:00      
                           try to understand            01/01/70 00:00      
                              yes i finally got the point            01/01/70 00:00      
                     Aside: Not a macro            01/01/70 00:00      
                     Delay?            01/01/70 00:00      
         agree            01/01/70 00:00      
            Keil know            01/01/70 00:00      

Back to Subject List