📄 cs11-1.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 + -