#include "NEW_8051.H"
#include "task.h"
bit flag;
uchar id;
/**********************************************************/
void display(void)	
{	
	uchar i; 
/******************显示时分秒数据**************************/	
	for(i=0;i<8;i++) 
	{ 
		P1=tab[Sec%16][i*2];	   //秒的个位
		P0=tab[Sec%16][i*2+1];
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;
		delay(1);
		P2=P4=P5=0XFF;
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;	
		delay(1);
		P2=P4=P5=0XFF;
		if(BIT_timeout)
		{
			     
			return;	
		}	 	 
	}
	P1=0XFF;
	P0=0XFF;
   
	for(i=0;i<8;i++) 
	{ 
		P1=tab[Sec/16][i*2];		 //秒的十位
		P0=tab[Sec/16][i*2+1];
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;
		delay(1);
		P2=P4=P5=0XFF;
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;	
		delay(1);
		P2=P4=P5=0XFF;
		if(BIT_timeout)
		{
			     
			return;	
		}	 	 
	}
	P1=0XFF;
	P0=0XFF;
	
	for(i=0;i<8;i++) 
	{ 
		P1=tab[10][i*2];			//显示两点
		P0=tab[10][i*2+1];	 
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;
		delay(1);
		P2=P4=P5=0XFF;
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;	
		delay(1);
		P2=P4=P5=0XFF;
		if(BIT_timeout)
		{
			     
			return;	
		}	 
	}
	P1=0XFF;
	P0=0XFF;

	
/**************************************************/ 
	if((flag==1)&&(id==2))      
	{
		for(i=0;i<8;i++) 
		{ 
			P1=0XFF;
			P0=0XFF;		 //分的十位不显示	
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				     
				return;	
			}
		}
		P1=0XFF;
		P0=0XFF;
		
		for(i=0;i<8;i++) 
		{ 
			P1=0XFF;
			P0=0XFF;		//分的个位不显示								 	 
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				     
				return;	
			}	 
		}
		P1=0XFF;
		P0=0XFF;
	
	}
	else
	{	
		for(i=0;i<8;i++) 
		{ 
			P1=tab[Cent%16][i*2];		//分的个位
			P0=tab[Cent%16][i*2+1];	
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				     
				return;	
			}	 	
		}
		P0=0XFF;
		P1=0XFF;
		
		for(i=0;i<8;i++) 
		{ 
			P1=tab[Cent/16][i*2];		 //分的十位
			P0=tab[Cent/16][i*2+1];							 	
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				     
				return;	
			}	 
		}
		P1=0XFF;
		P0=0XFF;
	

	}
	for(i=0;i<8;i++) 		 //显示两点 
	{ 
		P1=tab[10][i*2];
		P0=tab[10][i*2+1];	
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;
		delay(1);
		P2=P4=P5=0XFF;
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;	
		delay(1);
		P2=P4=P5=0XFF;
		if(BIT_timeout)
		{
			     
			return;	
		}	 
	}
	P1=0XFF;
	P0=0XFF;

/**************************************************/   	 
	if((flag==1)&&(id==1))    //实现调时 的闪烁位 （以下同） 
	{
		for(i=0;i<8;i++) 	  //这里用16个LED实现时间显示（以下同）
		{	 
			P0=0xFF;	//时的十位不显示（亮灭的结合就实现了闪烁）
			P1=0XFF;	 
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				     
				return;	
			}	 	
		}	 
		P1=0XFF;
		P0=0XFF;
	  
		for(i=0;i<8;i++) 
		{ 
			P1=0XFF;
			P0=0XFF;		//时的个位不显示	 	
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				     
				return;	
			}	 	
		}
		P1=0XFF;
		P0=0XFF;
	
	}
	else
	{
		for(i=0;i<8;i++) 			//这里用8个LED实现时间显示
		{	 
			P1=tab[Hour%16][i*2];		//时的个位
			P0=tab[Hour%16][i*2+1];	
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				     
				return;	
			}	 	
		}	 
		P1=0XFF;
		P0=0XFF;
	   
		for(i=0;i<8;i++) 
		{ 
			P1=tab[Hour/16][i*2];	//时的十位
			P0=tab[Hour/16][i*2+1]; 	 
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				     
				return;	
			}	 	
		}	
		P1=0XFF;
		P0=0XFF;
	
	}	
	/*********************显示月日数据***************************/
	//delay(4);	 //这里延时的作用是 把日期与时间拉开距离
	for(i=11;i>0;i--)
	{
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;
		delay(1);
		P2=P4=P5=0XFF;
	}
	/****************************************************/
    if((flag==1)&&(id==3))      
	{
		for(i=8;i>0;i--) 
		{ 
			P1=0XFF;
			P0=0XFF;		   //月的个位不显示	 
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				
				return;	
			}	 
		}
		P1=0XFF;
		P0=0XFF;
	   
		for(i=8;i>0;i--)
		{ 
			P1=0XFF;
			P0=0XFF;			 //月的十位不显示	
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				
				return;	
			}	 	 
		}
		P1=0XFF;
		P0=0XFF;
	
	}
	else
	{	
		for(i=8;i>0;i--) 
		{ 
			P1=tab1[Month/16][i*2];		   //月的十位
			P0=tab1[Month/16][i*2+1];		
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			 if(BIT_timeout)
			{
				
				return;	
			}	 	 
		}
		P1=0XFF;
		P0=0XFF;
			
		for(i=8;i>0;i--) 
		{ 
			P1=tab1[Month%16][i*2];			 //月的个位
			P0=tab1[Month%16][i*2+1];
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				
				return;	
			}		 
		}
		
	}
		P1=0XFF;
		P0=0XFF;
	   
/***********************************/
	P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
	P4=byte_read(0x200+uiicount*2+1);
	P5=byte_read(0x200+uiicount*2+1)>>4;
	uiicount++;
	delay(1);
	P2=P4=P5=0XFF;	
	for(i=8;i>0;i--)  
	{ 
		P1=tab1[10][i*2];				   //月字符
		P0=tab1[10][i*2+1];	
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;
		delay(1);
		P2=P4=P5=0XFF;
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;	
		delay(1);
		P2=P4=P5=0XFF;
		if(BIT_timeout)
		{
			
			return;	
		}	 
	}
	P1=0XFF;
	P0=0XFF;
	
	/****************************************************/
	if((flag==1)&&(id==4)) 
	{
		for(i=8;i>0;i--) 
		{ 
			P1=0XFF;
			P0=0XFF;		//日期个位不显示	 
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			 
		}
		P1=0XFF;
		P0=0XFF;
	
		for(i=8;i>0;i--) 
		{ 
			P1=0XFF;		//日期十位不显示
			P0=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				
				return;	
			}		 
		}
		P1=0XFF;
		P0=0XFF;
	
	}
	else
	{
		for(i=8;i>0;i--) 
		{ 
			P1=tab1[Day/16][i*2];				//日期十位
			P0=tab1[Day/16][i*2+1];				
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;	 
		}
		P1=0XFF;
		P0=0XFF;
		for(i=8;i>0;i--) 
		{ 
			P1=tab1[Day%16][i*2];				 //日期个位
			P0=tab1[Day%16][i*2+1];	
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				     
				return;	
			}	 
		}	
	}
	P1=0XFF;
	P0=0XFF;

/******************************************/

	P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
	P4=byte_read(0x200+uiicount*2+1);
	P5=byte_read(0x200+uiicount*2+1)>>4;
	uiicount++;
	delay(1);
	P2=P4=P5=0XFF;	
	for(i=8;i>0;i--) 
	{ 
		P1=tab1[11][i*2];					//日字符
		P0=tab1[11][i*2+1];		 
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;
		delay(1);
		P2=P4=P5=0XFF;
		P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
		P4=byte_read(0x200+uiicount*2+1);
		P5=byte_read(0x200+uiicount*2+1)>>4;
		uiicount++;	
		delay(1);
		P2=P4=P5=0XFF;
		if(BIT_timeout)
		{
			     
			return;	
		}	 	 
	}
	P1=0XFF;
	P0=0XFF;

/******************不显示星期数据******************************/
		for(i=8;i>0;i--) 
		{ 
			P1=0xFF;	   //星期值不显示
			P0=0XFF;	 
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;
			delay(1);
			P2=P4=P5=0XFF;
			P2=byte_read(0x200+uiicount*2);//读取内部EEPROM字幕数据 数据在0x200地址后 所以要加上0x200
			P4=byte_read(0x200+uiicount*2+1);
			P5=byte_read(0x200+uiicount*2+1)>>4;
			uiicount++;	
			delay(1);
			P2=P4=P5=0XFF;
			if(BIT_timeout)
			{
				     
				return;	
			}	 
		}		
	
	P1=0xFF;
	P0=0XFF;

}