<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開(kāi)發(fā)網(wǎng)

      電子開(kāi)發(fā)網(wǎng)電子設(shè)計(jì) | 電子開(kāi)發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
      搜索: 您現(xiàn)在的位置: 電子開(kāi)發(fā)網(wǎng) >> 電子開(kāi)發(fā) >> 單片機(jī) >> 正文

      89C52來(lái)做定時(shí)記數(shù)器程序,51定時(shí)程序

      作者:佚名    文章來(lái)源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2017-7-11

      89C52來(lái)做定時(shí)記數(shù)器程序,51定時(shí)程序

      關(guān)鍵字:?jiǎn)纹瑱C(jī)c語(yǔ)言定時(shí)程序,89c52,定時(shí)程序

      使用89C52來(lái)做定時(shí)記數(shù)器


      /***************************************************************
      功能:實(shí)現(xiàn)單片機(jī)定時(shí)記數(shù)器
      ***************************************************************/
      #include "reg51.h"
      sbit DsDat=0x94;   /*定義數(shù)據(jù)位輸入給74ALS164數(shù)據(jù)位就是從P14出去的*/
      sbit DsClk=0x95;   /*定義脈沖信號(hào)給164,脈沖信號(hào)是從P15出去的*/
      sbit Gw=0x90;      /*定義個(gè)位定形P10*/
      sbit Sw=0x91;      /*定義十位P11*/
      sbit Bw=0x92;      /*定義百位P12*/
      sbit Qw=0x93;     /*定義千位P13*/
      sbit sw1=P3^2;    //啟動(dòng)計(jì)時(shí)器按鈕
      sbit sw2=P3^3;   //結(jié)束按鈕
      sbit sw3=P3^4;    //查看按鈕總分鐘按鈕

      /*------------------------------------------------
      功能:對(duì)應(yīng)0--9顯示碼.
      -------------------------------------------------*/
      unsigned char code Led_Show[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};//{0x50,0xf5,0x68,0x4a,0x47,0xc2,0xc0,0x5b,0x40,0x42,0x41,0xc4,0xf0,0x4c,0xe0,0xe1,0xff};
      unsigned int ms=0;//1000MS為1S作為中間變量
      unsigned char ss=0;//作為秒的中間變量
      static unsigned int nn=0;//分的中間變量
      static unsigned int all_nn=0;//總的時(shí)間分鐘
      unsigned int ms1=0;//定時(shí)器1 MS的中間變量
      unsigned int ss1=0;//定時(shí)器1 秒的中間變量
      static unsigned char alltime_show=0;//顯示總分鐘的標(biāo)示
      static unsigned char time_shong=0;//
      /*-------------------------------------------------
      功能:1MS延時(shí)子程序
      -------------------------------------------------*/
      void Delay_xMs(unsigned int x)
      {
          unsigned int i,j;
          for( i =0;i < x;i++ )
          {
              for( j =0;j<500;j++ );
          }
      }
      /*-------------------------------------------------
      功能:數(shù)碼管顯示子程序
      -------------------------------------------------*/
      void Hc164(unsigned char temp )
      {//temp是要顯示的定符
          unsigned char i,temp1;
          temp1 = Led_Show[temp];
          for(i = 0;i < 8;i++ )
          {
             // DsClk = 0;/*先不給脈沖給164*/
              if( temp1 & 0x80 )
                 DsDat = 1;/*數(shù)據(jù)不傳輸*/
              else
                  DsDat= 0;/*一個(gè)位的數(shù)據(jù)傳輸*/
             
             DsClk = 1;/*給脈沖給164*/
          DsClk = 0;/*先不給脈沖給164*/
              temp1 <<=1;
          }
      }
      /*to BCD控制    個(gè)十百千    位*/
      void toBCD(unsigned int y1)
      {
      unsigned char x1,x2,x3,x4,y2,y3,y4;
      x1=y1/1000;/*顯示千位*/
      if(y1<1000)
      {}
      else
      {
      Hc164(x1);
      Qw=0;
      Delay_xMs(1);
      Qw=1;
      }

      y2=y1%1000;
      x2=y2/100;

      if (y1<100)
      {}
      else
      {
      Hc164(x2);/*顯示百位*/
      Bw=0;
      Delay_xMs(1);
      Bw=1;
      }
      y3=y2%100;
      x3=y3/10;
      if(y1<10)
      {}
      else
      {
      Hc164(x3);/*顯示十位*/
      Sw=0;
      Delay_xMs(1);
      Sw=1;
      }
      y4=y3%10;
      x4=y4;


      Hc164(x4);/*顯示個(gè)位*/
      Gw=0;
      Delay_xMs(1);
      Gw=1;
      }
      /*------------------------------------------------
      定時(shí)器0的初始化工作設(shè)為1MS中斷一次
      -------------------------------------------------*/
      void T0_first(void)
      {
      TMOD=0x01;//定時(shí)器0工作方式1
      TH0=0xFC;
      TL0=0x66;
      EA=1;//CPU啟動(dòng)
      ET0=1;//T/C0開(kāi)中斷
      TR0=1;//啟動(dòng)記數(shù)
      }
      /*------------------------------------------------
      定時(shí)器T0關(guān)中斷
      --------------------------------------------------*/
      void T0_out(void)
      {
      EA=0;//CPU關(guān)中斷
      ET0=0;//T/C0關(guān)中斷
      TR0=0;//關(guān)記數(shù)器
      }
      /*------------------------------------------------
      中斷函數(shù)1MS中斷一次
      --------------------------------------------------*/
      void timer0(void)interrupt 1 using 1
      {
          TH0=0xFC;
      TL0=0x66;
      ms=ms+1;
      if (ms==1000)//夠了1S
      {
      ms=0;
      ss=ss+1;
      if (ss==60)//夠了1分了,
      {
         ss=0;
         nn=nn+1;//分鐘加1
         all_nn=all_nn+1;//總的時(shí)間分鐘加1
         if(nn==9999)
         nn=0;
         if (all_nn==9999)
         all_nn=0;
      }
      }

      }
      //////////////////////////////////////////////////////
      /*------------------------------------------------
      定時(shí)器1的初始化工作設(shè)為1MS中斷一次
      -------------------------------------------------*/
      void T1_first(void)
      {
      TMOD=0x10;//定時(shí)器1工作方式1
      TH1=0xFC;
      TL1=0x66;
      EA=1;//CPU啟動(dòng)
      ET1=1;//T/C1開(kāi)中斷
      TR1=1;//啟動(dòng)記數(shù)
      }
      /*------------------------------------------------
      定時(shí)器T1關(guān)中斷
      --------------------------------------------------*/
      void T1_out(void)
      {
      EA=0;//CPU關(guān)中斷
      ET1=0;//T/C1關(guān)中斷
      TR1=0;//關(guān)記數(shù)器
      }
      /*------------------------------------------------
      中斷函數(shù)1MS中斷一次
      --------------------------------------------------*/
      void timer1(void)interrupt 3 using 3
      {
      TH1=0xFC;//重裁定時(shí)器1
      TL1=0x66;
      ms1=ms1+1;
      if (ms1==1000)//夠了1S
      {
      ms1=0;
      ss1=ss1+1;
      if(ss1>=4)
      {
         //if (time_shong==1)//這說(shuō)明先前已經(jīng)有啟動(dòng)按鈕按下
         alltime_show=time_shong;
            T1_out();//停此定時(shí)器1
                  //EA=1;//CPU開(kāi)中?
                  if (alltime_show==1)
                  T0_first();//重切縷?
         
         }
      }

      }

      /*-------------------------------------------------
      主程序
      功能:在數(shù)碼管上在數(shù)碼管上顯示出啟動(dòng)的總時(shí)間,以分鐘為單位,如果要查總運(yùn)行時(shí)間請(qǐng)按第三個(gè)按鈕,如果要停止當(dāng)前運(yùn)行狀態(tài),請(qǐng)按第二個(gè)按鈕,如果要啟動(dòng),請(qǐng)按第一個(gè)按鈕
      -------------------------------------------------*/
      void main()
      {
      while(1) 
      {
          if (sw1==0)
          {
          alltime_show=1;
          ms=0;//中間變量MS清零
          ss=0;//中間變量ss清零
          nn=1;//中間變量分清零
          T0_first();//初始化定時(shí)器0
          }
          if(sw2==0)
          {
          alltime_show=2;
          ms=0;//中間變量MS清零
          ss=0;//中間變量ss清零
          nn=0;//中間變量分清零
            
          }
          if(sw3==0)
          {
           if (alltime_show!=3)//如果在查看總分鐘以前開(kāi)始按鈕被按下時(shí),
           time_shong=alltime_show;//先保存下來(lái)以后有用,
              alltime_show=3;
              T1_first();//啟動(dòng)定時(shí)器1
          }
          switch(alltime_show)
          {
          case 1://啟動(dòng)記時(shí)器
          {
           

      toBCD(nn);//在數(shù)碼管上顯示
      break;
          }
          case 2:
          {
          
          T0_out();//關(guān)閉T/C0定時(shí)器中斷 
      toBCD(nn);//在數(shù)碼管上顯示
      break;
          }
          case 3:
          {
           
           toBCD(all_nn);//顯示出總分
           break;
          }     
      }
          if (alltime_show==0)
          
      //if (time_go==0&&time_out==0&&alltime_show==0)
      toBCD(0);//一開(kāi)始就顯示0;

      }
      }

      Tags:單片機(jī),定時(shí)程序,c語(yǔ)言  
      責(zé)任編輯:admin
    4. 上一篇文章:
    5. 下一篇文章: 沒(méi)有了
    6. 請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個(gè)字
      [ 查看全部 ] 網(wǎng)友評(píng)論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁(yè)面
      下到頁(yè)底
      晶體管查詢
      主站蜘蛛池模板: 97色伦图片97综合影院久久| 久久无码无码久久综合综合| 亚洲国产成人久久综合一| 色偷偷91久久综合噜噜噜| 色综合久久中文字幕综合网| 一本一本久久a久久精品综合麻豆| 色欲香天天综合网无码| 亚洲综合另类小说色区| 久久综合AV免费观看| 丁香色欲久久久久久综合网| 久久精品水蜜桃av综合天堂| 国产综合无码一区二区色蜜蜜| 久久婷婷五月综合97色直播| 五月婷婷激情综合| 久久精品亚洲综合专区| 国产综合色产在线精品| 亚洲小说图区综合在线| 激情综合亚洲色婷婷五月APP| 伊人色综合久久天天人守人婷| 亚洲国产综合精品中文第一| 伊人久久青草青青综合| 亚洲精品国产综合久久久久紧| 亚洲精品天天影视综合网| 狠狠人妻久久久久久综合蜜桃| 亚洲欧美综合精品成人导航| 狠狠色噜噜狠狠狠狠狠色综合久久| 香蕉蕉亚亚洲aav综合| 狠狠色狠狠色综合| 一本色道久久综合狠狠躁 | 亚洲五月综合网色九月色| 狠狠88综合久久久久综合网| 六月婷婷国产精品综合| 色综合久久无码中文字幕| 亚洲综合国产精品| 亚洲综合在线成人一区| 亚洲国产综合无码一区| 亚洲综合国产精品| 一本色道久久88亚洲精品综合| 人人狠狠综合88综合久久| 久久亚洲欧洲国产综合| 国产婷婷色综合AV蜜臀AV|