⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time.c

📁 C51 写的 24H时钟 可用四个键盘进行调时操作
💻 C
字号:
/*#include <SST89E58RD.H>		  */
#include <EXAM.H>

#define UCHAR unsigned char
#define UINT unsigned int

const UCHAR dis[11] ={0xD7,0x81,0x5B,0x9B,0x8D,0x9E,0xDE,0x83,0xDF,0x9F,0xff}; //HF-H1.0

UCHAR uc_parr[6] = { 0, 0, 0, 0, 0, 0 };
unsigned char temp1,temp2,temp3,point,hh,hl,mh,ml,hhc,hlc,mhc,mlc,change	 ;

void delay(UCHAR i)
{									
	UCHAR j;
	for(i; i > 0; i--)
		for(j = 250; j > 0; j--);
}

void Timer0_int (void) interrupt 1 using 3	//Timer0 中断处理,
{						//计数值加一
	TH0 = 0x4c;
	TL0 = 0x00;
	temp2++;
	temp1++;
	temp3++;
	if(temp3==5)
	{
		temp3=0;
		if(hh)
		{
		 hhc=~hhc;
		}
		if(hl)
		{
		 hlc=~hlc;
		}
		if(mh)
		{
		 mhc=~mhc;
		}
		if(ml)
		{
		 mlc=~mlc;
		}
	
	}
	if(temp2==10)
	{
	 temp2=0;
	 //temp1++;
	 point=~point;
	}

	if(temp1==20  )
	{  
	if(!change)
	{
	uc_parr[0]++;	
	if(uc_parr[0] >= 10)
	{
		uc_parr[0] = 0;
		uc_parr[1]++;	
	}
	if(uc_parr[1] >= 6)
	{
		uc_parr[1] = 0;
		uc_parr[2]++;
	}
	if(uc_parr[2] >= 10)
	{
		uc_parr[2] = 0;
		uc_parr[3]++;
	}
	if(uc_parr[3] >= 6)
	{
		uc_parr[3] = 0;
		uc_parr[4]++;
	}
	if(uc_parr[4] >= 4)
	{
		if(uc_parr[5] == 2)
		{
		 	uc_parr[4]=0;
			uc_parr[5]=0;
		}
		else if(uc_parr[4]>=10)
		{
			uc_parr[4] = 0;
			uc_parr[5]++;
		}
	}
//	if(uc_parr[5] >= 2)
//	{
//		uc_parr[3] = 0;
	//	uc_parr[4]++;
//	}
	}
	temp1=0;
	}
}
void inter0(void)  interrupt 0 //using 2
{
	unsigned char k,i,flag;

	P2=0xff;
	for(i=0;i<255;i++)
	{
	  for(flag=0;flag<255;flag++)
	  {
	  }
	}
		for(i=0;i<255;i++)
	{
	  for(flag=0;flag<255;flag++)
	  {
	  }
	}
		for(i=0;i<255;i++)
	{
	  for(flag=0;flag<255;flag++)
	  {
	  }
	}
	k=P2&0x0f;
	switch (k)
   {
   	case 0x07:	
		change=~change;
		if(change)
		{
		 	hh=0xff;
		}
		break;
   	case 0x0b:  
		if(hh)
		{
			hh=~hh;
			hl=~hl;
		}
		if(hl)
		{
			hl=~hl;
			mh=~mh;
		}
		if(mh)
		{
			mh=~mh;
			ml=~ml;
		}
		if(ml)
		{
			ml=~ml;
			hh=~hh;
		}
		break;
   	case 0x0d:  
		if(hh)
		{
			if(uc_parr[5] >=3)
			{
			  	uc_parr[5]=0;
			}
			else
			{
			 	uc_parr[5]++;
			}
		}
		if(hl)
		{	if(uc_parr[5]==2)
			{			
				if(uc_parr[4] >=4)
				{
				  	uc_parr[4]=0;
				}
				else
				{
				 	uc_parr[4]++;
				}
			}
			else
			{
				if(uc_parr[4] >=10)
				{
				  	uc_parr[4]=0;
				}
				else
				{
				 	uc_parr[4]++;
				}
			}
		}
		if(mh)
		{
			if(uc_parr[3] >=6)
			{
			  	uc_parr[3]=0;
			}
			else
			{
			 	uc_parr[3]++;
			}
		}
		if(ml)
		{
			if(uc_parr[2] >=10)
			{
			  	uc_parr[2]=0;
			}
			else
			{
			 	uc_parr[2]++;
			}
		}
		break;
   	case 0x0e:	
		if(hh)
		{
			if(uc_parr[5] < 0)
			{
			  	uc_parr[5]=2;
			}
			else
			{
			 	uc_parr[5]--;
			}
		}
		if(hl)
		{	if(uc_parr[5]==2)
			{			
				if(uc_parr[4] < 0)
				{
				  	uc_parr[4]=3;
				}
				else
				{
				 	uc_parr[4]--;
				}
			}
			else
			{
				if(uc_parr[4] < 0)
				{
				  	uc_parr[4]=9;
				}
				else
				{
				 	uc_parr[4]--;
				}
			}
		}
		if(mh)
		{
			if(uc_parr[3] < 0)
			{
			  	uc_parr[3]=5;
			}
			else
			{
			 	uc_parr[3]--;
			}
		}
		if(ml)
		{
			if(uc_parr[2] <0 )
			{
			  	uc_parr[2]=9;
			}
			else
			{
			 	uc_parr[2]--;
			}
		}
		break;
   //default: 	init_beep();
   }

}
main()
 { 	   unsigned char k;
	TMOD = 0x01;				//初始化寄存器
	TH0 = 0x4c;			//设定累加时间
	TL0 = 0x00;
	EA = 1;
	ET0 = 1;
	TR0 = 1;

	DIGPORT = 0xFF;
	DIGLED = 0xFF;
	/*DIGLED1 = 0;
	DIGLED2 = 0;
	DIGLED3 = 0;
	DIGLED4 = 0;
	DIGLED  = 0x00;		*/
	EX0 = 0;
	change=0x00;


	for(;;)					//循环执行
	{
		DIGPORT = DIGLL;		//显示数据
		if(mlc)
		{
		 DIGLED =0xff;
		}
		else
		{
		DIGLED = ~dis[uc_parr[2]];
		DIGLEDP=point;
		}
		
		delay(10);

		DIGPORT = DIGLH;
		if(mhc)
		{
		 DIGLED =0xff;
		}
		else
		{
		DIGLED = ~dis[uc_parr[3]];
		}
		delay(10);

		DIGPORT = DIGHL;
		if(hlc)
		{
		 DIGLED =0xff;
		}
		else
		{
		DIGLED = ~dis[uc_parr[4]];
		}
		delay(10);

		DIGPORT = DIGHH;
		if(hhc)
		{
		 DIGLED =0xff;
		}
		else
		{
		DIGLED = ~dis[uc_parr[5]];
		}
		delay(10);


		P2=0xff;
	
	   k=P2&0x0f;
	switch (k)
   {
   	case 0x0f:
		break;
	case 0x07:
		delay(200);
		P2=0xff;
		k=P2&0x0f;
		if(k != 0x07)
		{
		 break;
		}	
		change=~change;
		if(change)
		{
		 	hh=0xff;
		}
		else
		{
		 hh=0;
		 hl=0;
		 mh=0;
		 ml=0;
		 hhc=0;
		 hlc=0;
		 mhc=0;
		 mlc=0;
		}
		break;
   	case 0x0b:
		delay(200);
		P2=0xff;
		k=P2&0x0f;
		if(k != 0x0b)
		{
		 break;
		}  
		if(hh)
		{
			hh=0x00;
			hl=0xff;
			mh=0x00;
			ml=0x00;
			hhc=0;
			break;
		}
		if(hl)
		{
			hh=0x00;
			hl=0x00;
			mh=0xff;
			ml=0x00;
			hlc=0;
			break;
		}
		if(mh)
		{
			hh=0x00;
			hl=0x00;
			mh=0x00;
			ml=0xff;
			mhc=0;
			break;
		}
		if(ml)
		{
			hh=0xff;
			hl=0x00;
			mh=0x00;
			ml=0x00;
			mlc=0;
			break;
		}
		break;
   	case 0x0d:
		delay(200);
		P2=0xff;
		k=P2&0x0f;
		if(k != 0x0d)
		{
		 break;
		}  
		if(hh)
		{
			if(uc_parr[4] >=4 && uc_parr[5] ==1)
			{
			  	uc_parr[5]=0;
			}
			else if(uc_parr[5] >=2)
			{
			  	uc_parr[5]=0;
				//uc_parr[
			}
			else
			{
			 	uc_parr[5]++;
			}
			break;
		}
		if(hl)
		{	if(uc_parr[5]==2)
			{			
				if(uc_parr[4] >=3)
				{
				  	uc_parr[4]=0;
				}
				else
				{
				 	uc_parr[4]++;
				}
			}
			else
			{
				if(uc_parr[4] >=9)
				{
				  	uc_parr[4]=0;
				}
				else
				{
				 	uc_parr[4]++;
				}
			}
			break;
		}
		if(mh)
		{
			if(uc_parr[3] >=5)
			{
			  	uc_parr[3]=0;
			}
			else
			{
			 	uc_parr[3]++;
			}
			break;
		}
		if(ml)
		{
			if(uc_parr[2] >=9)
			{
			  	uc_parr[2]=0;
			}
			else
			{
			 	uc_parr[2]++;
			}
			break;
		}
		break;
   	case 0x0e:
		delay(200);
		P2=0xff;
		k=P2&0x0f;
		if(k != 0x0e)
		{
		 break;
		}
			
		if(hh)
		{
			if(uc_parr[5] == 0x00)
			{
			  	uc_parr[5]=2;
			}
			else
			{
			 	uc_parr[5]--;
			}
		}
		if(hl)
		{	if(uc_parr[5]==2)
			{			
				if(uc_parr[4] == 0x00)
				{
				  	uc_parr[4]=3;
				}
				else
				{
				 	uc_parr[4]--;
				}
			}
			else
			{
				if(uc_parr[4] == 0x00)
				{
				  	uc_parr[4]=9;
				}
				else
				{
				 	uc_parr[4]--;
				}
			}
		}
		if(mh)
		{
			if(uc_parr[3] == 0x00)
			{
			  	uc_parr[3]=5;
			}
			else
			{
			 	uc_parr[3]--;
			}
		}
		if(ml)
		{
			if(uc_parr[2] == 0x00 )
			{
			  	uc_parr[2]=9;
			}
			else
			{
			 	uc_parr[2]--;
			}
		}
		break;
   default: 	
   	break;
   }	
	} 
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -