久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2002|回復(fù): 8
收起左側(cè)

如何用單片機(jī)外部中斷做一個倒計(jì)時啊?

[復(fù)制鏈接]
ID:979617 發(fā)表于 2021-11-21 00:01 | 顯示全部樓層 |閱讀模式
在做一個比賽計(jì)時計(jì)分器,要設(shè)置一個暫停鍵。
按下后有30秒倒計(jì)時,倒計(jì)時結(jié)束繼續(xù)比賽。
覺得可以用外部中斷做一個,但是不知道怎么放進(jìn)去。
有大佬知道怎么辦嗎,或者可以不用外部中斷來完成
回復(fù)

使用道具 舉報(bào)

ID:908826 發(fā)表于 2021-11-21 09:07 | 顯示全部樓層
寫一個子函數(shù),里面寫上開啟定時器那個就行了唄,最多就是再來個按鍵掃描,檢測那個按鍵是否按下,然后如果按下就觸發(fā)這個定時器開關(guān),開啟定時器
回復(fù)

使用道具 舉報(bào)

ID:983020 發(fā)表于 2021-11-21 09:25 | 顯示全部樓層
編程軟件寫一個定時器的函數(shù),然后根據(jù)所需時間寫程序,然后燒進(jìn)單片機(jī)不就ok了
回復(fù)

使用道具 舉報(bào)

ID:979617 發(fā)表于 2021-11-21 10:28 | 顯示全部樓層
13205495918 發(fā)表于 2021-11-21 09:07
寫一個子函數(shù),里面寫上開啟定時器那個就行了唄,最多就是再來個按鍵掃描,檢測那個按鍵是否按下,然后如果 ...

主要是原本就有一個計(jì)時器了,想怎么用第二個做暫停,現(xiàn)在這樣按下也沒反應(yīng)
  1. void main()                 
  2. {   
  3.                  k7=1;                 
  4.     {qudou();  
  5.      if(k7==0)
  6.      {InitTimer1();}
  7.                  else
  8.                  {InitTimer0();}
  9.                  while(k7==0);}
  10.                  while(1)                     
  11.      {xianshi();         
  12.                  if(kaishi==0)
  13.                           dd=0;
  14.                  if(sjd==0)       
  15.               key();       
  16.                  else
  17.                     bisai();  
  18.                  if(kaishi==0)
  19.                     ts=1;
  20.                  else
  21.                     ts=tishi;       
  22.                  if(xx==1)       
  23.                    {
  24.                                  for(xxx=0;xxx<1000;xxx++)          
  25.                    {
  26.                            ts=0;dd=0;xianshi();
  27.                          }   
  28.                      ts=1;xx=0;
  29.                          }       
  30.    }
  31. }
  32. void InitTimer0Interrupt(void) interrupt 1         

  33. {     TH0=0xb1;
  34.       TL0=0xe0;
  35.            if(shezhi==0)                  
  36.           {if(kaishi==1)          
  37.            {if(sjd==0)                  
  38.       {count++;                  
  39.        if(count==50)       //¼Æêy50′Σ¬¾íêÇò»Ãë
  40.        {count=0;                    //¼ÆêycountÇåáã
  41.              miao--;                   //±èèüê±¼äÃëλ¼õò»
  42.                  if(fen>0)                   //μ±±èèüê±¼ä·Öλ′óóú0ê±
  43.                  {if(miao<0){miao=59;fen--;}}
  44.                  else                   //μ±±èèüê±¼ä·Öλμèóú0ê±
  45.                  {if(miao<=0)       
  46.                   {sjd=1;kaishi=0;fen=0;miao=0;dd=1;xx=1;tishi=1;}  ˉxx=1
  47.                  }
  48.        }
  49.                   }
  50.                  }       
  51.                 }
  52.          
  53.           if(shezhi==0)                //Õy3£×′ì¬ê±
  54.           {if(kaishi==1)        //±èèü¿aê¼
  55.            {if(sjd==0)                //sjd=0Îa±èèüê±¼äûμ½
  56.       {count1++;                 //¶¨ê±¼Æêycount1
  57.        if(count1==25)          //¼Æêy25′Σ¬¾íêÇ0.5Ãë
  58.        {count1=0;                //¼Æêycount1Çåáã
  59.               if(fen==0)        //μ±±èèüê±¼ä·Öλμèóú0ê±
  60.          if(miao=0)        //í¬ê±ÃëλD¡óúμèóú10
  61.                      tishi=!tishi;        //êμÏÖéù1a±¨¾ˉòÔ1HzÆμÂêìáê¾
  62.                 dd=!dd;                //ÏÔê¾ê±¼äμÄ¡°£o¡±òÔ1HzÆμÂêéá˸
  63.        }
  64.                   }
  65.                  }       
  66.                 }

  67.            if(shezhi==0)       
  68.            shanshuo=0;               
  69.            else                               
  70.            {count2++;                
  71.        if(count2==10)         
  72.        {
  73.                                  count2=0;               
  74.                shanshuo=!shanshuo;
  75.                    }
  76.                  }       
  77. }
  78. void InitTimer1Interrupt(void) interrupt 3
  79. {
  80.           fen=0;
  81.                 miao=30;
  82.           TH1 = 0x0B1;
  83.     TL1 = 0x0E0;
  84.                 {count++;                   
  85.        if(count==50)      
  86.        {
  87.                                  count=0;         
  88.                                  miao--;
  89.        }
  90.                          if(miao==0)
  91.                          {
  92.                                  tishi=!tishi;       
  93.                dd=!dd;
  94.                          }
  95.           }
  96. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:983065 發(fā)表于 2021-11-21 13:13 | 顯示全部樓層
以AT89S52單片機(jī)為核心元件,利用兩位7段共陽極數(shù)碼管作為顯示器件。在此設(shè)計(jì)中共接入2個兩位一體7段共陽LED數(shù)碼管,來顯示實(shí)時數(shù)字,其中1個用于顯示十位,1個用于顯示個位,通過查表指令分別動態(tài)顯示個位和十位。2個LED數(shù)碼管顯示范圍可達(dá)到0-99 。上電時,顯示59并開始自動每秒自動減1,當(dāng)按鍵1按下時記錄當(dāng)前時間值,當(dāng)按鍵2按下時顯示當(dāng)前記錄值,顯示過之后再次按下按鍵1時秒表復(fù)位為59。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2021-11-23 10:33 | 顯示全部樓層
很簡單:你在定時中斷服務(wù)程序中,做一個計(jì)時器,但計(jì)時再增加一個條件,例:T=1時,它計(jì)時,T=0時它不計(jì)時。這個簡單吧,增加一個IF語句的事!
這個T何時為0,何時為1,你再用外中斷+30秒計(jì)時來控制它。
回復(fù)

使用道具 舉報(bào)

ID:983681 發(fā)表于 2021-11-23 15:16 | 顯示全部樓層
按鍵外部中斷,在外部中斷函數(shù)里啟動定時器,計(jì)時就可以了
回復(fù)

使用道具 舉報(bào)

ID:983681 發(fā)表于 2021-11-23 15:17 | 顯示全部樓層
按鍵觸發(fā)外部中斷函數(shù)啟動定時器,倒計(jì)時就可以了
回復(fù)

使用道具 舉報(bào)

ID:944237 發(fā)表于 2021-11-23 20:50 | 顯示全部樓層
設(shè)置一個1ms進(jìn)入一次的定時器中斷,在中斷里設(shè)置1s秒數(shù)減1,從三十減著下來就可以了
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区中文字幕 | 黄色香蕉视频在线观看 | 亚洲视频免费在线观看 | 亚洲福利一区 | 国产伦精品 | 成人永久免费视频 | 日韩在线观看一区 | 8x国产精品视频一区二区 | 免费观看黄网站 | 狠狠操婷婷 | 先锋av资源网 | 亚洲日本欧美日韩高观看 | 国产精品久久久久久久久图文区 | 国产在线观看一区二区三区 | 亚洲每日更新 | 午夜爽爽男女免费观看hd | 特黄视频 | 日韩电影中文字幕在线观看 | 亚洲狠狠爱一区二区三区 | 自拍视频精品 | 午夜av免费 | 欧美成年网站 | 亚洲伊人久久综合 | 日韩成人在线网站 | 91p在线观看 | 久久精品亚洲精品国产欧美 | 嫩草视频免费 | 日本精品久久久久久久 | 欧美在线a| 美女黄网站 | 成人在线免费 | 欧美一级二级三级视频 | 欧美电影免费网站 | 欧美在线成人影院 | 欧美一区在线视频 | 日日碰狠狠躁久久躁96avv | 国产区在线看 | 成人一级黄色毛片 | 亚洲一区综合 | 欧美成人一级 | 成人免费视频网站在线观看 |