资源简介

自己初学单片机时做的第一个作品。数字钟
keil+proteus

资源截图

代码片段和文件信息

#include  
unsigned int table1[4]={0x0e0x3e0x770x37};
unsigned int table[10] = {0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};

unsigned int cnt=0;  
unsigned int cnt1=0;
unsigned int  cnt2=0;
sfr state = 0xa0;
int flag=0;
int flag1=0;
char flag3=0;
char second_1=0second_2=0minute_1=3minute_2=0hour_1=3hour_2=1;
void watch();
void ok();
void display1();
void delay(unsigned int time);
void chang();
void chang2();
void clear();
void clean();
void main(void) 

  TMOD=0x12;
  TH0=0x38;
  TL0=0x38;
  ET0=1;
  IT0=0;
  EX0=0;
  TH1=0x3c;
  TL1=0xb0;
  ET1=1;
  
  IT1=1;
  EX1=1;
  EA=1;
  TR0=1;
  TR1=1;
  PT0=1;
  PX0=1;
  PX1=0;
  PT1=0;
  P2=0xff;
  while(1) 
    { 
        watch();
  
    } 
}

void does()interrupt 1
{
   cnt1+=1;
   if(cnt1==3500)
    P3_7=0;
   if(cnt1==5000)
    { second_1+=1;
  cnt1=0;
  P3_7=1;
  }
   if(second_1==10)
     {
   second_1=0;
   second_2+=1;
 }
   if(second_2==6)
 {
   second_2=0;
   minute_1+=1;
 }
   if(minute_1==10)
     {
   minute_1=0;
   minute_2+=1;
 }
   if(minute_2==6)
     {
   minute_2=0;
   hour_1+=1;
   
 }
   if(hour_1==10)
     {
   hour_1=0;
   hour_2+=1;
 }
   if(hour_2==2)
     hour_2=0;

}
void hello() interrupt 2
{
 delay(100);
  if(P3_3==0)
  {
     flag3+=1;
     if(flag3==1)
     ok();
     else if(flag3==2)
     chang();
  }
 
 
}

void ok()
{unsigned int i;
  do
  {
  for(i=0;i<200;i++);
  cnt+=1;
 if(cnt==100||cnt==200||cnt==300||cnt==400)
     display1();
 else if (cnt==501)
 {
  flag=4;
  display1();
  }
 else if(cnt>550&&cnt<800)
 
 display1();
 else if(cnt==801)
 {
   flag=0;
   cnt=0;
   P1=0;
 }
   }
  while(P3_3==0);
  
  P2=0xff;
  cnt=0;

}
void display1()


{unsigned  int i;
switch(flag)

  case 0: P2=0;
  
          P1=table1[0];
      
      flag=1;
 
          break;

  case 1:P1=table1[1];
     
     flag=2;

     break;
  case 2:P1=table1[2];
 
  flag=3;
 
  break;
  case 3:P1=table1[3];
  
  flag=0;
 
  break;
  case 4: P1=0;
          P2=0xff;
  for(i=0;i<500;i++) ;
  flag=5;
 
  break;
 
  case 5: P2_5=1;
      P1=table1[0];
  P2_2=0;
  flag=6;
 
  break;
  case 6: P2_2=1;
P1=table1[1];
  P2_3=0;
  flag=7;
 
  break;
  case 7: P2_3=1;
P1=table1[2];
  P2_4=0;
  flag=8;
 
  break;
  case 8: P2_4=1;
P1=table1[3];
  P2_5=0;
  flag=5;
 
  break;


}




}
void watch()
{
switch(flag1)
{
  case 0:P2_0=1;
          P1=table[second_1];
  P2_7=0;
  flag1=1;
  break;
  case 1:P2_7=1;
          P1=table[second_2];
  P2_6=0;
  flag1=2;
  break;
  case 2:P2_6=1;
          P1=table[minute_1];
  P2_4=0;
  flag1=3;
  break;
  case 3:P2_4=1;
          P1=table[minute_2];
  P2_3=0;
  flag1=4;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     170104  2009-02-03 13:29  eee\clock.DSN

     文件       2008  2009-02-03 13:29  eee\clock.PWI

     文件       5021  2009-02-02 18:33  eee\flashled.c

     文件     170104  2009-02-03 12:06  eee\Last Loaded clock.DBK

     目录          0  2009-02-03 13:29  eee

----------- ---------  ---------- -----  ----

               347237                    5


评论

共有 条评论