在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用定時(shí)器中斷設(shè)計(jì)秒表 用數(shù)碼管顯示

      用定時(shí)器中斷設(shè)計(jì)秒表 用數(shù)碼管顯示

      作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
      //此秒表有時(shí)分秒和毫秒位,最多可以記小時(shí),有暫停和繼續(xù)計(jì)時(shí)功能,獨(dú)立鍵盤(pán)上key1為暫停和繼續(xù)鍵,key3為復(fù)位和開(kāi)始計(jì)時(shí)鍵

      //由于ms中斷時(shí)間很短,所以如果中斷和顯示延遲關(guān)系處理不好,秒表走時(shí)不準(zhǔn),應(yīng)注意

      本文引用地址:http://www.biyoush.com/article/201611/322834.htm

      #include

      #defineucharunsignedchar

      #defineuintunsignedint

      uchar code table[]={0x 3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

      uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//時(shí)分秒的個(gè)位顯示后帶小數(shù)點(diǎn)

      uchar ms,s,m,h,count,count1;

      sbit k1=P3^0;

      sbit k3=P3^2;

      voiddelay(uint z)

      {

      uint x,y;

      for(x=z;x>0;x--)

      for(y=110;y>0;y--);

      }

      voiddisplays(uchar temp)//數(shù)碼管動(dòng)態(tài)顯示秒位函數(shù)

      {

      uchar shi,ge,i;

      i=0;

      shi=temp/10;

      ge=temp;

      P0=0xef;

      P1=table[shi];

      delay(1);//必須要有延遲,動(dòng)態(tài)掃描,為了不影響整個(gè)秒表八位數(shù)的掃描速率提高顯示效果,延遲又不要太高,ms比較合適

      P0=0xdf;

      P1=table1[ge];

      i=0;

      delay(1);

      }

      voiddisplayms(uchar temp)//數(shù)碼管動(dòng)態(tài)顯示毫秒位函數(shù)

      {

      uchar shi,ge,i;

      i=0;

      shi=temp/10;

      ge=temp;

      P0=0xbf;

      P1=table[shi];

      delay(1);

      P0=0x7f;

      P1=table[ge];

      i=0;

      delay(1);

      }

      voiddisplaym(uchar temp)//數(shù)碼管動(dòng)態(tài)顯示分位函數(shù)

      {

      uchar shi,ge,i;

      i=0;

      shi=temp/10;

      ge=temp;

      P0=0xfb;

      P1=table[shi];

      delay(1);

      P0=0xf7;

      P1=table1[ge];

      i=0;

      delay(1);

      }

      voiddisplayh(uchar temp)//數(shù)碼管動(dòng)態(tài)顯示小時(shí)位函數(shù)

      {

      uchar shi,ge,i;

      i=0;

      shi=temp/10;

      ge=temp;

      P0=0xfe;

      P1=table[shi];

      delay(1);

      P0=0xfd;

      P1=table1[ge];

      i=0;

      delay(1);

      }

      voidkeyscan()//鍵盤(pán)掃描函數(shù)

      {

      if(k1==0)

      {

      delay(5);

      if(k1==0)//檢測(cè)k1確實(shí)被按下防抖動(dòng)

      {

      count++;

      while(!k1);//檢測(cè)松手

      delay(1);//檢測(cè)確實(shí)松手

      while(!k1);

      if(count==1)

      TR0=0;//暫停定時(shí)器

      if(count==2)

      {

      TR0=1;//定時(shí)器繼續(xù)計(jì)時(shí)

      count=0;

      }

      }

      }

      if(k3==0)

      {

      delay(5);

      if(k3==0)

      {

      count1++;

      while(!k3);

      delay(1);

      while(!k3);

      if(count1==1)//復(fù)位秒表

      {

      TR0=0;

      ms=0;

      s=0;

      m=0;

      h=0;

      }

      if(count1==2)//重新開(kāi)始計(jì)時(shí)

      {

      TR0=1;

      count1=0;

      }

      }

      }

      }

      voidmain()

      {

      TMOD=0x01;

      EA=1;

      ET0=1;

      TR0=1;

      TH0=(65536-10000)/256;//設(shè)定定時(shí)器初值

      TL0=(65536-10000)%6;//12M晶振時(shí)ms數(shù)為

      while(1)

      {

      keyscan();

      displays(s);//數(shù)碼管動(dòng)態(tài)掃描秒位顯示

      displayms(ms);//數(shù)碼管動(dòng)態(tài)掃描毫秒位顯示

      displaym(m);//數(shù)碼管動(dòng)態(tài)掃描秒分顯示

      displayh(h);//數(shù)碼管動(dòng)態(tài)掃描秒小時(shí)顯示

      }

      }

      voidtimer0() interrupt 1//中斷服務(wù)程序

      {

      TH0=(65536-10000)/256;

      TL0=(65536-10000)%6;

      ms++;

      if(ms==100)//定時(shí)器中斷次為s

      {//把這部分放在中斷中,能減少程序執(zhí)行時(shí)間對(duì)中斷時(shí)間的影響

      ms=0;

      s++;

      if(s==60)

      {

      s=0;

      m++;

      }

      if(m==60)

      {

      m=0;

      h++;

      }

      if(h==24)

      {

      h=0;

      }

      }

      }



      評(píng)論


      技術(shù)專(zhuān)區(qū)

      關(guān)閉