#include <REGX51.H>
sbit e = P1^2;
sbit rs = P1^3;
sbit clock=P2^1;
unsigned int value;
unsigned int temp;
code unsigned char   number[]={'0','1','2','3','4','5','6','7','8','9'};
void lcd_command(unsigned char com);
void lcd_text(unsigned char text);
void delay_lcd(unsigned int time);
void lcd_init(void);
void lcd_clr(void);
void clrs(void);
void get_bcd(unsigned int k);
unsigned char x,a,b,c,d;


void main(void)
{
delay_lcd(500);
 lcd_init();
//==========================config counter mode=========

TMOD=0X50;
TR1=1;
TH1=0X00;
TL1=0X00;

       delay_lcd(5000);
       lcd_clr(); 
       lcd_command(0x80);
       delay_lcd(50);
	   value=0;
	   clock=1;
 while(1)
 {
    //TH1=0;
	//TL1=1;
 //============get th1 to value==========
     temp=TH1;
     temp=temp<<8;
     value=value|temp;
	 //value=value<<8;
 //=============get tl1 to value=========
     temp=TL1;
     value=value|temp;
     
 
       get_bcd(value);     
	   lcd_command(0x80);
       delay_lcd(50);
       lcd_text(number[x]);
       lcd_text(number[a]);
	   lcd_text(number[b]);
	   lcd_text(number[c]);
	   lcd_text(number[d]);
   if(!clock)//if  input clock is logic low 
{
   delay_lcd(100);
    if(!clock)
	{
	  while(!clock);
	  value++;
	}
}	 	   
 }


}
void lcd_command(unsigned char com)
{
   unsigned char buff;
   buff = com & 0xf0;
   rs = 0;
   e = 1;
   P1 = (P1 & 0x0f)|buff;
   delay_lcd(1);
   e = 0;
   delay_lcd(1);
   buff = (com & 0xff)<<4;
   rs = 0;
   e = 1;
   P1 = (P1 & 0x0f)|buff;
   delay_lcd(1);
   e = 0;
   delay_lcd(1);
}
void lcd_text(unsigned char text)
{
   unsigned char buff;
   buff = text & 0xf0;
   rs = 1;
   e = 1;
   P1 = (P1 & 0x0f)|buff;
   delay_lcd(1);
   e = 0;
   delay_lcd(1);
   buff = (text & 0x0f)<<4;
   rs = 1;
   e = 1;
   P1 = (P1 & 0x0f)|buff;
   delay_lcd(1);
   e = 0;
   delay_lcd(1);
}void lcd_init()
{
  delay_lcd(50);
  lcd_command(0x33);
 delay_lcd(50);
  lcd_command(0x32);
 delay_lcd(50);
  lcd_command(0x28);
 delay_lcd(50);
  lcd_command(0x0C);
}
void delay_lcd(unsigned int time)
{
  unsigned int x;
  for(x=0;x<time;x++);
}
void lcd_clr(void)
{
 lcd_command(0x01);
 delay_lcd(50);
}
void get_bcd(unsigned int k)
{x=a=b=c=d=0;
x=k/10000;
k%=10000;
a=k/1000;
k%=1000;
b=k/100;
k%=100;
c=k/10;
k%=10;
d=k;

}


