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

📄 show.c

📁 单片机控制钟表显示的c语言代码.
💻 C
字号:
#include "SPCE061V004.H"
unsigned int code[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
unsigned int  second=0;
unsigned int   minitue=0;
unsigned int  hour=0;
unsigned int counter=0;
unsigned int keycode;
unsigned int    flag; 
#define  KEY_UP  0x02;
#define  KEY_DOWN  0x03;
#define   SET_TIME 0x01;
void main()
{
	SP_IOA_INITAL();
	*P_INT_Ctrl=0x0004;
	  *P_IOB_Data=0x0001;
	asm(" int IRQ");
	//*P_TimerA_Data=0xf7ff;
	    while(1)
	{    if(key_scanf()) SET_TIMER(); 
	      show_time();		
		*P_Watchdog_Clear=0x0001;
	}
}


show_time()
{
int i;
int k;
unsigned int display[6];
	*P_IOB_Data=0x0001;
display[5]=second%10;
display[4]=second/10;
display[3]=minitue%10;
display[2]=minitue/10;
display[1]=hour%10;
display[0]=hour/10;
 for(i=0;i<6;i++)
 {
 	 k=display[i];
 *P_IOA_Data=code[k];
  	delay();
*P_IOB_Data=*P_IOB_Data<<1;
if(i==6)
*P_IOB_Data=0x0001;  
   }
 }


SP_IOA_INITAL()
{
*P_IOA_Dir=0xffff;
*P_IOA_Attrib=0xffff;
*P_IOA_Data=0x0000;
*P_IOB_Dir=0xffff;
*P_IOB_Attrib=0xffff;
*P_IOB_Data=0x0000;
}


void delay()  //延时
{ int i;
for(i=0;i<200;i++)
*P_Watchdog_Clear=0x0001;
}


void IRQ5(void) __attribute__ ((ISR));//时间中断
void IRQ5(void)
{	*P_Watchdog_Clear=0x0001;
	counter++;
	
	if(counter==2){  second++; counter=0;}
	
	if(second==60){ second=0;minitue++;}

   if(minitue==60){minitue=0;hour++;}
   *P_INT_Clear=0x0004;
}

/*#include "SPCE061V004.H"
extern  KEY_UP;
extern KEY_DOWN ;
extern  SET_TIME;
extern  hour;
extern  keycode;
extern  flag;
extern second;
extern   minitue;
extern  hour;*/


int  key_scanf()   //返回键值
{ int i;
*P_IOA_Data=0x0000;
delay();
if((*P_IOA_Data&0xffff)!=0)//是否有键按下
{ i=*P_IOA_Data;
return i;}
   else return 0;}


void  SET_TIMER()//设置时间
{
if(key_scanf())
{ 
 switch(keycode)
 {
  case  0x01:  //设置时分秒
           flag++;
         if(flag==3) flag=0; break;
  case 0x02: 
       if(flag==1){
          hour++;
       if(hour==24) hour=0;
          }
       if(flag==2){
            minitue++;
          if(minitue==60) minitue=0;
          }
       if(flag==3){
           second++;
        if(second==60) second=0;}
        break;
  case 0x03:  
       { if(flag==1){
            hour--;   
        if(hour==0) hour=24;}
          }
        if(flag==2){
         minitue--;
         if(minitue==0) minitue=60;
          }
       if(flag==3){
          second--;
          if(second==0) second=60;}break;
  default : break;
  }}
  }

⌨️ 快捷键说明

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