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

📄 cs11-1.c

📁 《手把手教你学单片机的C程序设计》及实验程序
💻 C
字号:
#include <REG51.H>		
#define uchar unsigned char
#define uint unsigned int		
uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar ACT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; 
//========================
uchar status_flag;		
uint year;				
uchar month;				
uchar day;					
uchar temp_year_l,temp_month;	
uchar temp_year_h;			
//---------------------------------------
void key_S1(void);		
void key_S2(void);		
void key_S4(void);			
void delay(uint k);			
uchar conv(uint year,uchar month);			
//----------------------------------------
void main(void)				
{	uchar i;				
	uint temp1,temp2;				
	while(1)			
	{	key_S4();			
		switch(status_flag)	
		{					
		case 0: key_S1();temp1=temp_year_l;
			key_S2();temp2=temp_year_h;break;	
		case 1: key_S1();month=temp_month;break;
		default :break;		
		}				
		year=temp1+(temp2*100);
		//---------------------------
		day=conv(year,month);	
		//------------------------------
		for(i=0;i<40;i++)			
		{					
		switch(status_flag)	
		{					
		case 0:P0=SEG7[year%10];P2=ACT[4];delay(1);
				P0=SEG7[(year%100)/10];P2=ACT[5];delay(1);
				P0=SEG7[(year/100)%10];P2=ACT[6];delay(1);
				P0=SEG7[year/1000];P2=ACT[7];delay(1);break;				
		case 1:P0=SEG7[month%10];P2=ACT[2];delay(2);
				P0=SEG7[month/10];P2=ACT[3];delay(2);break;
		case 2:if(day){	P0=SEG7[day%10];P2=ACT[0];delay(2);
						P0=SEG7[day/10];P2=ACT[1];delay(2);}
			else{	P0=0x00;P2=0xff;delay(2);		
				P0=0x00;P2=0xff;delay(2);}break;	
		default :break;							
		}						
		}						
	}							
}							
//----------------------------------------------
void delay(uint k)				
{								
uint i,j;							
for(i=0;i<k;i++){					
for(j=0;j<121;j++)					
{;}}							
}								
//-----------------------------------------------
void key_S1(void)				
{								
	P3=0xff;					
	  if(P3==0xfb)			
	  {							
	    switch(status_flag)	
	    {						
	    case 0:temp_year_l++;	
		 if(temp_year_l>99)temp_year_l=0;break;	
	    case 1:temp_month++;	
		 if(temp_month>12)temp_month=1;break;	
	    default :break;			
	    }						
	 }							
}								
//---------------------------------------------
void key_S2(void)					
{								
	P3=0xff;					
	  if(P3==0xf7)				
	  {						
	    switch(status_flag)		
	    {					
	    case 0:temp_year_h++;	
	    if(temp_year_h>99)temp_year_h=0;break;	
	    default :break;				
	    }					
	  }							
}								
//---------------------------------------------
void key_S4(void)				
{							
	P3=0xff;					
	if(P3==0xdf)status_flag++;			
	if(status_flag>2)status_flag=0;				
}								

//---------------------------------------------
uchar conv(uint year,uchar month)		
{uchar len;					
		switch(month)			
		{					
		case 1:len=31;break;		
		case 3:len=31;break;		
		case 5:len=31;break;		
		case 7:len=31;break;		
		case 8:len=31;break;		
		case 10:len=31;break;		
		case 12:len=31;break;		
		case 4:len=30;break;		
		case 6:len=30;break;		
		case 9:len=30;break;		
		case 11:len=30;break;		
		case 2:if(year%4==0&&year%100!=0||year%400==0)len=29;
			else len=28;break;
		default:return 0;break;		
		}						
		return len;				
}								

⌨️ 快捷键说明

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