欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

秒表計時功能(模仿)單片機程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年07月20日   【字體:

下面這個仿真效果圖,大家可按上面的電路來制作



 

/**
//模仿秒表計時功能,獨立按鍵可控制計時數字的“暫停/走動”。(程序沒有考慮計時精確度控制)
/*P2.2~P2.4與138譯碼器輸入口連接
/*P1.0連接獨立按鍵
/*P0口輸出數據
***/
#include<AT89X51.H>
code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,
                          0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //共陰數碼管 0-9  '-' '熄滅‘表
unsigned int count,a,b,sec,min,hour; 
bit c_flag; // 暫停/計時 標志          

/*****T1初始化*****/
void timer_1(void)
{
  TH1=0x0ec;
  TL1=0x078;
  TR1=1;
  }
/*****數據計數******/
void time_count(viod)
{
 if(hour==60){sec=0,min=0,hour=0;}
   else if(sec!=59) sec++;
      else if(min!=59) {sec=0,min++;}
     else {min=0,hour++;}
 }
/******數字調整*******/
void get_count(unsigned int x)
{
  a=x/10;
  b=x%10;
  }
/*******按鍵檢測********/
void key_tach(void)
{
   int i,j;
   j=P1&0x01;
   if(j==0){
     for(i=0;i<=200;i++);
  j=P1&0x01;
  if(j==0) 
   {if(c_flag==1) c_flag=0;
         else c_flag=1;}
   }
   }
/*******顯示程序********/
void display(viod)
{   
   int flag;
   P0=0x00;
   flag=count%8;
   switch(flag){
    case 0:P2=flag*4;
        get_count(hour);
     P0=tab[a];
     break;
 case 1:P2=flag*4;
     P0=tab[b];
     break;
 case 2:P2=flag*4;
     P0=tab[10];
     break;
 case 3:P2=flag*4;
        get_count(min);
     P0=tab[a];
     break;
 case 4:P2=flag*4;
     P0=tab[b];
     break;
 case 5:P2=flag*4;
     P0=tab[10];
     break;
 case 6:P2=flag*4;
        get_count(sec);
     P0=tab[a];
     break;
 case 7:P2=flag*4;
     P0=tab[b];
     break;
 default:return;
    }
   }
/*******中斷服務程序********/
void int1() interrupt 3
{
   key_tach();
   if(c_flag==0)
   {
     if(count==7) {count=0;time_count();}
       else count++;}
    else
    {
        if(count==7) {count=0;}
        else count++;} 
   display();
   timer_1();
   }

/******主程序*****/
void main()
{
  c_flag=0;
  count=0;
  sec=0;
  min=0;
  hour=0;
  TMOD=0x10;
  EA=1;
  ET1=1;
  timer_1();
  while(1);
  }
關閉窗口

相關文章