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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3790|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

設(shè)計(jì)一個(gè)簡易單片機(jī)秒表,按鍵k1按下后,開始計(jì)時(shí) 如果再次按下開始按鍵,則暫停計(jì)時(shí)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:972882 發(fā)表于 2021-10-17 23:44 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
目前K2沒反應(yīng)(沒報(bào)錯(cuò))

單片機(jī)源程序如下:
  1. #include <REG52.H>

  2. sbit k1 = P3 ^ 2; //開始按鍵k1

  3. sbit k2 = P3 ^ 3; //暫停按鍵k2

  4. /*全局變量及函數(shù)聲明*/
  5. unsigned char flag2=0;
  6. unsigned char flag = 0;     //運(yùn)行標(biāo)記
  7. unsigned char second;
  8. unsigned char second2;
  9. void delay1s();             //定時(shí)器計(jì)時(shí)1s的函數(shù)

  10. void disp(unsigned char i); //數(shù)碼管顯示函數(shù)

  11. void delay(unsigned int i); //粗略延時(shí)函數(shù)

  12. unsigned char isStarted();  //判斷是否開始按鍵按下函數(shù)

  13. unsigned char isPaused();   //判斷是否暫停按鍵按下函數(shù)
  14. unsigned char isclear();
  15. /*------聲明結(jié)束-----------*/

  16. void main()

  17. {
  18. unsigned char second2= 0;
  19.     unsigned char second = 0; //秒計(jì)數(shù)變量

  20.     disp(second);             //一開始顯示"00"

  21.     while (1)

  22.     {

  23.         while (!isStarted())

  24.             ; //檢測開始按鍵是否按下,按下則結(jié)束此處的循環(huán)等待,往下執(zhí)行

  25.         while (flag)

  26.         {

  27.             disp(second); //把秒數(shù)寫入顯示函數(shù)

  28.             delay1s();    //調(diào)用1s函數(shù)

  29.             second++;     //隔1s,秒數(shù)加1

  30.             if (second == 100)

  31.                 second = 0; //當(dāng)定時(shí)到100,則變成0
  32. isclear();
  33.             isPaused();     //調(diào)用暫停按鍵函數(shù),檢測暫停按鍵是否按下

  34.         }

  35.     }
  36. while(flag2)

  37.     disp(second2);            //一開始顯示"00"
  38.                   while (1)

  39.     {

  40.         while (!isStarted())

  41.             ; //檢測開始按鍵是否按下,按下則結(jié)束此處的循環(huán)等待,往下執(zhí)行

  42.         while (flag2)

  43.         {
  44. P1=0XC0;
  45.                                         P2=0XC0;
  46.             disp(second); //把秒數(shù)寫入顯示函數(shù)

  47.             delay1s();    //調(diào)用1s函數(shù)

  48.             second++;     //隔1s,秒數(shù)加1

  49.             if (second == 100)

  50.                 second = 0; //當(dāng)定時(shí)到100,則變成0
  51. isclear();
  52.             isPaused();     //調(diào)用暫停按鍵函數(shù),檢測暫停按鍵是否按下

  53.         }

  54.     }
  55. }



  56. //定時(shí)器計(jì)時(shí)1s的函數(shù)

  57. void delay1s()

  58. {

  59.     unsigned char i;

  60.     for (i = 0; i < 20; i++) //因?yàn)橛?jì)數(shù)器每計(jì)50000次就耗時(shí)50ms,所以20次循環(huán)則為1s

  61.     {

  62.         //isPaused(); //調(diào)用暫停按鍵函數(shù),檢測暫停按鍵是否按下。優(yōu)點(diǎn):不用長按暫停鍵就可以停止計(jì)時(shí);缺點(diǎn):每次計(jì)時(shí)要檢測耗費(fèi)時(shí)間,影響定時(shí)準(zhǔn)確性。

  63.         /*1、設(shè)置定時(shí)器工作方式(只需要設(shè)置1次即可)*/

  64.         TMOD = 0x10; //定時(shí)器T1設(shè)置為工作方式1,16位計(jì)數(shù)器

  65.         /*2、給計(jì)數(shù)器賦初始值*/

  66.         /*只要每次對計(jì)數(shù)器重新賦值,就按照下面設(shè)置的值在TR1啟動后開始計(jì)數(shù)*/

  67.         TH1 = (65536 - 50000) / 256; //把初始值寫入計(jì)數(shù)器的高8位

  68.         TL1 = (65536 - 50000) % 256; //把初始值寫入計(jì)數(shù)器的低8位

  69.         /*3、啟動定時(shí)器*/

  70.         TR1 = 1; //啟動定時(shí)器T ReadyGo

  71.         /*4、檢測計(jì)數(shù)器是否溢出*/

  72.         while (TF1 == 0)

  73.             ; //當(dāng)還沒有溢出就等待,當(dāng)溢出時(shí)TF1自動為1

  74.         /*5、手動清除溢出標(biāo)記*/

  75.         TF1 = 0; //必須手動對溢出標(biāo)記清零,以便開始下一次計(jì)數(shù)定時(shí)

  76.     }

  77. }



  78. //數(shù)碼管顯示函數(shù)

  79. void disp(unsigned char i)

  80. {

  81.     unsigned char code led[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};

  82.     //定義0~9顯示碼,共陽極數(shù)碼管

  83.     P1 = led[i / 10]; //把秒數(shù)的十位寫給P1口

  84.     P2 = led[i % 10]; //把秒數(shù)的個(gè)位寫給P2口

  85. }



  86. //粗略延時(shí)函數(shù)

  87. void delay(unsigned int i)

  88. {

  89.     while (i--)

  90.         ;

  91. }

  92. //判斷是否開始按鍵按下函數(shù)

  93. unsigned char isStarted()

  94. {

  95.     if (k1 == 0)

  96.     {

  97.         delay(1000);

  98.         if (k1 == 0)

  99.         {

  100.             while (!k1)

  101.                 ;

  102.             flag = 1; //把運(yùn)行標(biāo)記設(shè)置為1

  103.         }

  104.     }

  105.     return flag;

  106. }

  107. //判斷是否暫停按鍵按下函數(shù)

  108. unsigned char isPaused()

  109. {

  110.     if (k1 == 0)

  111.     {

  112.         delay(1000);

  113.         if (k1 == 0)

  114.         {

  115.             while (!k1)

  116.                 ;

  117.             flag = 0; //把運(yùn)行標(biāo)記設(shè)置為0

  118.         }

  119.     }

  120.     return flag;

  121. }

  122. unsigned char isclear()

  123. {

  124.     if (k2 == 0)

  125.     {

  126.         delay(1000);

  127.         if (k2 == 0)

  128.         {

  129.             while (!k2)

  130.                 ;

  131.           flag2=1;
  132.         }

  133.     }

  134. return flag2;

  135. }
復(fù)制代碼


作業(yè)4-制作簡易秒表(外部中斷、定時(shí)器中斷).zip

33.16 KB, 下載次數(shù): 12

C語言程序

作業(yè)3-使用定時(shí)器制作簡易秒表.zip

22.45 KB, 下載次數(shù): 14

prpteus圖

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:972882 發(fā)表于 2021-10-17 23:45 | 只看該作者
各位大神能否幫我看看我這個(gè)程序?yàn)槭裁碖2沒反應(yīng)(沒報(bào)錯(cuò))
回復(fù)

使用道具 舉報(bào)

板凳
ID:972882 發(fā)表于 2021-10-17 23:46 | 只看該作者
能否有條件在該程序原來的基礎(chǔ)上修改一部分讓K2正常運(yùn)行
回復(fù)

使用道具 舉報(bào)

地板
ID:332444 發(fā)表于 2021-10-18 08:13 | 只看該作者
回復(fù)

使用道具 舉報(bào)

5#
ID:839438 發(fā)表于 2021-10-18 10:06 | 只看該作者
if (k2 == 0)

    {

        delay(1000);

        if (k2 == 0)

        {

           

          flag2=1;
        }
while (!k2)

                ;
    }感覺是這樣的
回復(fù)

使用道具 舉報(bào)

6#
ID:161164 發(fā)表于 2021-10-18 17:02 | 只看該作者
好可怕的寫法
while(1)
  while(1)
    while(1)
      while(1)
       while(1)
回復(fù)

使用道具 舉報(bào)

7#
ID:213173 發(fā)表于 2021-10-18 20:32 | 只看該作者
SWATELITE 發(fā)表于 2021-10-17 23:46
能否有條件在該程序原來的基礎(chǔ)上修改一部分讓K2正常運(yùn)行

樓主對while情有獨(dú)鐘。在該程序原來的基礎(chǔ)上修改只能保留#include <REG52.H>,其它幾乎都要改。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一级二级视频 | 欧美一级特黄aaa大片在线观看 | 精品一区二区久久久久久久网站 | 91一区二区三区在线观看 | 国产一级片 | 日本国产高清 | 亚洲第一视频网站 | 久久黄网 | 国产精品96久久久久久 | 欧美日韩在线精品 | 欧美最猛黑人xxxx黑人 | 日韩欧美国产精品 | 新超碰97| 一级毛片播放 | 日韩精品视频在线播放 | 国产精品久久久久久久白浊 | 二区不卡 | 精品在线观看入口 | 色婷婷久久综合 | 一区二区三区视频在线免费观看 | 亚洲成人动漫在线观看 | 欧美日韩国产一区二区三区 | 国产福利视频 | 免费久久网| 播放一级毛片 | 久久精品色视频 | 国产一区二区在线观看视频 | 成人亚洲片 | 亚洲免费观看视频 | 亚洲在线日韩 | 黄网站在线观看 | 嫩草网 | 一区二区三区小视频 | 91就要激情| 欧美一区日韩一区 | 亚洲高清av | 欧美精品久久一区 | 热久久性| 国产在线成人 | 中文字幕亚洲欧美日韩在线不卡 | 久久精品日产第一区二区三区 |