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

📄 mian.c

📁 该程序是用C编写的
💻 C
字号:
asm(".include hardware.inc");
  int sheding(int t,int n);
int Tabel[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
int Month[12]={31,28,31,30,31,30,31,31,30,31,30,31};//
int table[14];//={0x0000,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700};
int Sec=0,Hour=0,Min=0,Day=0,Mon=0,Year=0;
//int Worked=1;           //键值处理标志
int State=1;            //显示状态标志
int Funcflag=1;         //进位判断标志
int Keycode=0x0000;     //键值保存变量
int stopflag=0;         //暂听继续标志,1表示已暂停
int Flag=0;               //半秒标志位,1表示已经有一次半秒响应
int Runyear=0;            //闰年标志
int Keydown=1;            //按键标志
int temp2 = -1;
int temp3;
void Keywork (void);
void Leap_year (int);
void  display_1 (void);
void  display_2 (void);

//void delay(void);

void main (void)
{
  SystemInit();
  while(1)
     {
       if (State==1)
         display_1();
       else if (State==2)
         display_2(); 
       if (Keydown==1&&Funcflag==1)
          {
             Key_scan();
             if(Keydown==0)
             Keywork();
           }    
  	 } 
}

void Function (void)
{ 
  if (Sec==60)
     {
       Sec=0;
       Min++;
      }
  if (Min==60)
     {
       Min=0;
       Hour++;
      }
  if (Hour>=24)
     {
       Hour=0;
       Day++;
      }
   if (Day>=Maxday(Mon)+1)
      {
        Day=1;
        Mon++;
       }
   if (Mon>=13)
       {
         Mon=1;
         Year++;
         Leap_year (Year);
        }
    Funcflag=1;    
 }
 
void   Leap_year (int Year)
{   
  if (Year%100==0)
     { 
       if (Year&400==0)
          Runyear=1;
       else 
          Runyear=0;
       }
    else
      { 
         if (Year%4==0)
             Runyear=1;
         else
             Runyear=0;
       }
}

void Delay(void)
{
	int i=0;
 	for(;i<190;i++);
}
 
 
void  display_1 (void)
{  
  int temp,i; 

     asm("[P_Watchdog_Clear]=%0"::"r"(0x0001)); 
     temp=Sec%10;
     temp=Tabel[temp];
     temp|=0x0700;
     table[0]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();
     
     temp=Sec/10;
     temp=Tabel[temp];
     temp|=0x0600;table[1]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();
     
     temp=Min%10;
     temp=Tabel[temp];
     temp|=0x0500;
     temp|=0x0080;table[2]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();

     temp=Min/10;
     temp=Tabel[temp];
     temp|=0x0400;table[3]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();
     
     temp=Hour%10;
     temp=Tabel[temp];
     temp|=0x0300;
     temp|=0x0080;table[4]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();
     
     temp=Hour/10;
     temp=Tabel[temp];
     temp|=0x0200;table[5]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();
     asm("[P_IOB_Data]=%0"::"r"(0x0100));
     Delay();
     asm("[P_IOB_Data]=%0"::"r"(0x0000));
     Delay();
     if(temp2>=0&&temp2<=5)
     {
     	table[temp2]&=0x0f00;
     	for(i=0;i<=5;i++)
     	{
     		asm("[P_IOB_Data]=%0"::"r"(table[i]));
     		Delay();
     	}
     	asm("[P_IOB_Data]=%0"::"r"(0x0100));
    	 Delay();
    	 asm("[P_IOB_Data]=%0"::"r"(0x0000));
     	Delay();
     }
    
  } 
void  display_2 (void)
{
  
  	int temp,i; 
	int a,b,c,d,a1,b1,a2,b2;
    asm("[P_Watchdog_Clear]=%0"::"r"(0x0001)); 
    d = Year;a=0;b=0;c=0;
     while(d>=1000)
     {
     	d-=1000;
     	a+=1;
     }
     while(d>=100)
     {
     	d-=100;
     	b+=1;
     }
     
     while(d>=10)
     {
     	d-=10;
     	c+=1;
     } 
    a1 = Day;b1=0;
    while(a1>=10)
    {
    	a1-=10;
    	b1+=1;
    }
    a2 = Mon;b2=0;
    while(a2>=10)
    {
    	a2-=10;
    	b2+=1;
    }
     temp=a1;
     temp=Tabel[temp];
     temp|=0x0700;table[6]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();
     
     temp=b1;
     temp=Tabel[temp];
     temp|=0x0600;table[7]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();
     
     
     temp=a2;
     temp=Tabel[temp]; 
     temp|=0x0500;
     temp|=0x0080;table[8]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();

     temp=b2;
     temp=Tabel[temp];
     temp|=0x0400;table[9]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();
     
     
     temp=d;
     temp=Tabel[temp];
     temp|=0x0300;
     temp|=0x0080;table[10]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();
     
     temp=c;
     temp=Tabel[temp];
     temp|=0x0200;table[11]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay(); 
     
     temp=b;
     temp=Tabel[temp];
     temp|=0x0100;table[12]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay(); 
     
     temp=a;
     temp=Tabel[temp];
     temp|=0x0000;table[13]=temp;
     asm("[P_IOB_Data]=%0"::"r"(temp));
     Delay();
     if(temp2>=6&&temp2<=13)
     {
     	table[temp2]&=0x0f00;
     	for(i=6;i<=13;i++)
     	{
     		asm("[P_IOB_Data]=%0"::"r"(table[i]));
     		Delay();
     	}
     }

} 

void delay()
{
	int i = 0;
	for(;i<500;i++);
}

    
int Maxday (int Mon)
{
  if (Mon!=2)
      return  Month[Mon-1];
  else
      return  Month[1]+Runyear;
} 

void Keywork (void)
{    
	 switch (Keycode)
    {  
      case 0x00bb:{
      				if(State == 1) 
      					State = 2;
     				else State = 1;
     				break;
     			}
      case 0x00ee:
      			sheding(temp2,1);
      			
      			 break;
      case 0x00de:sheding(temp2,2);
              break;
      case 0x00be:{sheding(temp2,3);
                 break;}
      case 0x007e:{sheding(temp2,4);
             break;}
      case 0x00ed:{sheding(temp2,5);
                 break;}
      case 0x00dd:{sheding(temp2,6);
                break;}
      case 0x00bd:{sheding(temp2,7);
                break;}
      case 0x007d:{sheding(temp2,8);
                break;} 
      case 0x00eb:{sheding(temp2,9);
              break;}          
      case 0x00db:{sheding(temp2,0);      
                break; }                                 
     

     
      case 0x007b:{
      					if(stopflag==0)
      					{
      						asm("[P_INT_Ctrl]=%0"::"r"(0x0080));
                             stopflag=1;Keycode=0;
                             break;
                        }
              			else
              			{
              				asm("[P_INT_Ctrl]=%0"::"r"(0x0088));
                  			stopflag=0;Keycode=0;
                   			break;
                   		}
               		}
      case 0x00e7:
      		if(temp2==13)temp2=-1;
      		else temp2++;
      		break;
      case 0x00d7:
      		if(temp2==-1)temp2=13;
      		else temp2--;
      		break;
      case 0x00b7:
      		temp2 = -1;
      		break;     
      default: break;
    }
      Keycode = 0x0000;
}        //   0x0077
  
int sheding(int t,int n)
{	
	int a;
	if(t < 0)
	    return 0;
	if((t == 1||t == 3)&&n>5)
		return 0;
	if(t == 5&&n>2)
		return 0;
	if(t == 7&&n>3)
		return 0;
	if(t == 9&&n>1)
		return 0;
	
	switch(t)
	{
		case 0:a=Sec/10;
				Sec=a*10+n;
				break;
		case 1:a=Sec%10;
				Sec=a+10*n;
				break;
		case 2:a=Min/10;
				Min=a*10+n;
				break;
		case 3:a=Min%10;
				Min=a+10*n;
				break;
		case 4:a=Hour/10;
				Hour=a*10+n;
				break;
		case 5:a=Hour%10;
				Hour=a+10*n;
				break;
		case 6:a=Day/10;
				Day=a*10+n;
				break;
		case 7:a=Day%10;
				Day=a+10*n;
				break;
		case 8:a=Mon/10;
				Mon=a*10+n;
				break;
		case 9:a=Mon%10;
				Mon=a+10*n;
				break;
	 	case 10:a=Year/10;
				Year=a*10+n;
				break;
		case 11:a=Year/100*100+Year%10;
				Year=a+10*n;
				break;
		case 12:a=Year/10*10+Year%100;
				Year=a+n*100;
				break;
		case 13:a=Year%1000;
				Year=a+1000*n;
				break;
		default: break;
		} 
		return 1;
}
 

⌨️ 快捷键说明

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