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

📄 main.c

📁 凌阳61单片机万年历程序
💻 C
字号:
unsigned int year=2006;
unsigned int month=1;
unsigned int day=1;
unsigned int hour=0;
unsigned int min=0;
unsigned int sec=0;
unsigned int flag_runnian=0;
int runnian[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int pingnian[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int output[8]={1,2,3,4,5,6,7,8};
unsigned int light=100;
unsigned int num=0;
int flag;
int max;
int line;
int point=0;
int b[17]={0,1};
int key_scan();
int system();
int output_asm();
/**********判断闰年并产生标志flag_runnian  同时计算当月最大天数***********/
int run_nian()
    {
    if( year%400==0 || (year%4==0&&year%100!=0))
     { flag_runnian=1;max=runnian[month-1];}
    else
     { flag_runnian=0;max=pingnian[month-1];}
      
      }    
/*******走表程序**************/
int time_run()
{
 if(sec>59)
     {sec=0;
     min++;}
  if(min>59)
      {min=0;
       hour++;}
  if(hour>23)
      {hour=0;
      day++;}
      run_nian();
  if(flag_runnian==1)
    { if(day>runnian[month-1])
         { month++;
          day=1;}
    else
        if(day>pingnian[month-1])
          {  month++;day=1;}
    }
    if(month>13)
       {month=1;
        year++;}
    }
/*********键盘调整 产生标志b数组******************/
int key_b()
{ int i=100;
  b[3]=0;b[4]=0;
  key_scan(); 
  if(flag==1){b[2]=0;point=0;}
  if(flag)
  {
  b[flag]+=1;
  flag=0;
  if(b[1]==2)b[1]=0;
  if(b[2]==4)b[2]=0;
 }
}
/********利用b数组调整万年历输出值*******************/
int tiaozheng()
{
  if(b[1])
    {
       switch(b[2])
         {
         case 1: point=384;   hour+=b[3];hour-=b[4];if(hour==-1)hour=23; if(hour==24)hour=0;break;
         case 2: point=0x0480;min+=b[3]; min-=b[4]; if(min==-1) min=59;if(min==60)min=0;;break;
         case 3 :point=0; b[2]=0;
         default :break;
         }
    }
  else
    {
       switch(b[2])
         {
         case 1: point=0x0380;  year+=b[3];year-=b[4];if(year==-1)year=0;break;
         case 2: point=0x0580;  month+=b[3]; month-=b[4];if(month==0)month=12;if(month==13)month=1; break;
         case 3: point=0x0780;  day+=b[3];day-=b[4];run_nian();if(day>max)day=1;if(day==0)day=max;break;
           
         default:point=0;;break;
         }
    }
}
/********输出函数 *******************/
int out_put()
{
   
 if(b[1])
   {  
                output[2]=38;
	            output[1]=hour%10;
	            output[0]=(hour-output[1])/10;
	            output[4]=min%10;
	            output[3]=(min-output[4])/10;
	            output[7]=sec%10;
	            output[6]=(sec-output[7])/10;
	            output[5]=38;
    }    
   else
    {  
    output[3]=year%10;
	output[2]=(year%100-output[3])/10;
	output[1]=(year%1000-10*output[2]-output[3])/100;
	output[0]=(year-100*output[1]-10*output[2]-output[3])/1000;
	output[5]=month%10;
	output[4]=(month-output[5])/10;
	output[7]=day%10;
	output[6]=(day-output[7])/10;
    }
    output_asm();
}
/********主函数 ******************/
int main()
            {
  system();
 while(1)
  {
   key_b();
   tiaozheng();
   time_run();
   out_put();
  }
}

⌨️ 快捷键说明

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