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

📄 00c.c

📁 需要凌阳的IDE打开
💻 C
字号:
int length=0,TimeCount=0,key_value=100;
unsigned Tran=0x0000,Reset=0x0000;

int sec=0,minu=0,hour=0,day=1,month=1,year=2001;
int sec1=0,sec2=0,minu1=0,minu2=0,hour1=0,hour2=0,day1=0,day2=0,month1=0,month2=0,year1=0,year2=0,year3=0,year4=0;

int num[11]={0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f,0x0000};
int single[8]={0x0000,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700};
int timeout[8]={10,10},dateout[8];


//============================================================
//????
//============================================================

void Timer()                     //计时器计数进位原理
{
  int maxday=0;
  switch(month)
  {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
            maxday=31;
            break;
    case 4:
    case 6:
    case 9:
    case 11:
           maxday=30;
           break;
    case 2:        
           if(year%400==0 || year%4==0 && year%100!=0)  maxday=29;
           else  maxday=28;      
           break;
  }
  if(sec1>=10)  {sec2+=1;sec1=0;}
  if(sec2>=6)   {minu1+=1;sec2=0;}
  if(minu1>=10) {minu2+=1;minu1=0;}
  if(minu2>=6)  {hour+=1;minu2=0;}
  if(hour>=24)  
  {
    hour=0;
    if(day<maxday)  day+=1;
    else {day=1;month+=1;}
    if(month>=13)  {year==1;month=1;}
    if(year>=10000)  year=2001;
   }
}
///////////////////////////////////   
//////?????
void Timer0()      //显示数字转换计算,        根据hour,minu,sec,等计算输出数组
{  int k;

    k=0x0001;
    asm("[0x7012]=%0"                //清看门狗
    
        :

        :"r"(k)
        );  
  hour1=hour%10;  
  hour2=hour/10;
  day1=day%10;
  k=0x0001;
    asm("[0x7012]=%0"                //清看门狗
    
        :

        :"r"(k)
        );    
  day2=day/10;  
  month1=month%10;  
  month2=month/10;
  year1=year%10; 
  k=0x0001;
    asm("[0x7012]=%0"                //清看门狗
    
        :

        :"r"(k)
        );   
  year2=year%100-year1;  
  year4=year/1000;  
  year3=year/100-year4*10;
    k=0x0001;
    asm("[0x7012]=%0"                //清看门狗
    
        :

        :"r"(k)
        );  
  timeout[2]=hour2;  timeout[3]=hour1;  timeout[4]=minu2;      ///送入显示数组
  timeout[5]=minu1;  timeout[6]=sec2;  timeout[7]=sec1;
  
  dateout[0]=year4;  dateout[1]=year3;  dateout[2]=year2;  dateout[3]=year1;
  dateout[4]=month2;  dateout[5]=month1;  dateout[6]=day2;  dateout[7]=day1;
  
}


//==============================================================


//??led??
//==============================================================



void Output()                //根据输出显示数组
{
  int i,j,k;
  int n1=0,n2=0,n3=0,m=0;
  
  
  for(i=0;i<=7;i++)
  {
    if(Tran==0) n1=timeout[i];     //??
    else n1=dateout[i];            //??
    n2=single[i];
    n3=num[n1];
    m=n3 | n2;
    
    asm(".include hardware.inc"); 
    asm("[P_IOB_Data]=%0"                //IOB???????
    
        :

        :"r"(m)
        );
  for(j=0;j<=80;j++)
  {
     k=0x0001;
    asm("[0x7012]=%0"                //清看门狗
    
        :

        :"r"(k)
        );  
    }
   
       
  }
  
}


//==============================================================


//????
//==============================================================

void Reset0()  
{
  
   int i,j,k;
   //OffIRQ5();      //???       ??????????????
   length=0;
   if(Tran==0)        //??
     for(i=0;i<=7;i++)   
       timeout[i]=10;                       //只改变输出显示数组的值
   else               //?? 
     for(i=0;i<=7;i++)
       dateout[i]=10;
   Reset=0xffff;  
   
   //for(j=0;j<=1000;j++);
  // key_value=100; 
     
  
}
void Tran0()
{
   int k;
 
    Tran^=0xffff;
    k=0x0001;
    asm("[0x7012]=%0"                //清看门狗
    
        :

        :"r"(k)
        );
    key_value=100;    


}


void Adjust()
{
  int i;
  
  if(Tran==0)
  {       //??
     switch(length)    
     {
       case 0:
              hour2=key_value;
              break;
       case 1:
              hour1=key_value;
              break;
       case 2:
              minu2=key_value;
              break;
       case 3:
              minu1=key_value;
              break;
       case 4:
              sec2=key_value;
              break;
       case 5:
              sec1=key_value;
              break;
       default:
               
               break; 
      }
      timeout[length+2]=key_value;
      for(i=length+3;i<=7;i++)   {timeout[i]=10;}
      length++;
      if(length>5)
      {  
       length=0;
       Reset=0x0000; 
       key_value=100;  
       sec=sec2*10+sec1;
       minu=minu2*10+minu1;
       hour=hour2*10+hour1;
     }
   }           
       //
      // length++;
       //for(i=0;i<=1000;i++);
       
       //key_value=100;
     //}
  if(Tran!=0)
  {       //??
     switch(length)    
     {
       case 0:
              year4=key_value;
              break;
       case 1:
              year3=key_value;
              break;
       case 2:
              year2=key_value;
              break;
       case 3:
              year1=key_value;
              break;
       case 4:
              month2=key_value;
              break;
       case 5:
              month1=key_value;
              break;
       case 6:
              day2=key_value;
              break;
       case 7:
              day1=key_value;
              break;       
       default:
               
               break; 
      }
     dateout[length]=key_value;
     for(i=length+1;i<=7;i++)   {dateout[i]=10;}
     length++;
     if(length>7)
     {
       length=0;
       Reset=0x0000;
       key_value=100; 
       day=day2*10+day1;
       month=month2*10+month1;
       year=year4*1000+year3*100+year2*10+year1;
     }
    }
       //for(i=0;i<=1000;i++);
       //key_value=100;
     
    ///if(length>=7)   
   // {
     //length=0;
     
     //Initsystem();        //?????
    // return;
    //}


}

int main(void)
{
  // int k;
  //int i,k,p,q;
  InitIO();
  Initsystem();
  
  while(1)
  { 
      
    
    int k;
    
      if(Reset==0x0000)
      {
        Timer();
          
        Timer0();
        // k=0x0001;
   // asm("[0x7012]=%0"                //清看门狗
    
   //     :

   //    :"r"(k)
    //    );
      }
    scankeys();
   // p=key_value0;
    //for(i=0;i<=100;i++)
    //{
   // k=0x0001;
   //asm("[0x7012]=%0"                //清看门狗
    
    //    :

     //  :"r"(k)
    //   );
    // }   
    //scankeys();
    //q=key_value0;
    //if(p==q)  
    //key_value=key_value0;
    //else key_value=100;
    if(key_value==99  && Reset==0x0000)   Tran0();    //Transer
    if(key_value==98 && Reset==0x0000)  Reset0();       //Reset
    
    if((key_value!=98)&&(key_value!=99)&&(key_value!=100)&&( Reset!=0x0000))  Adjust();
    Output();
    
    }
    
   
}

⌨️ 快捷键说明

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