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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3206|回復: 5
打印 上一主題 下一主題
收起左側

51單片機八路搶答器的程序問題

[復制鏈接]
跳轉到指定樓層
樓主
各位大佬,我是一名單片機小白,要求一個選手通過P2按鍵搶答后其他選手按下時沒反應,可是我的程序按了其他按鍵數字也跟著變,換了幾種方式都改變不了,請大家幫我看看哪個地方出錯了
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char//宏定義
sbit host=P3^0;
sbit deng=P3^6;
uchar flag=0;
uchar code table[]={0x40,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共陰數碼管"0-9"編碼表
void delay(uint c)                    // 延時子程序
{  
        uint i,j;
        for(;c>0;c--)
                for(i=142;i>0;i--)
                        for(j=2;j>0;j--);
}
void INT_0() interrupt 0
{
EX0=0;
delay(20);
EX0=1;
switch(P2)
{
case 0xfe: if(flag==1) P1=0xfe;deng=1;num=0;break;        //按鍵1
case 0xfd: if(flag==1) P1=0xfd;deng=1;num=1;break;        //按鍵2
case 0xfb: if(flag==1) P1=0xfb;deng=1;num=2;break;        //按鍵3
case 0xf7: if(flag==1) P1=0xf7;deng=1;num=3;break;        //按鍵4
case 0xef: if(flag==1) P1=0xef;deng=1;num=4;break;        //按鍵5
case 0xdf: if(flag==1) P1=0xdf;deng=1;num=5;break;        //按鍵6
case 0xbf: if(flag==1) P1=0xbf;deng=1;num=6;break;        //按鍵7
case 0x7f: if(flag==1) P1=0x7f;deng=1;num=7;break;        //按鍵8
}
if(flag)
{P0=table[num];flag=0;}
}

void main()                           //主函數
{
          while(1)
           {
             if(host==0)          //開關1被按下
                {
                        EA=1;
                        EX0=1;
                          IT0=0;
                        deng=0;
                        flag=1;
                        while(!flag);
                        P0=table[0];

                }
        }
}


捕獲.PNG (91.8 KB, 下載次數: 100)

捕獲.PNG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:332444 發表于 2020-7-5 17:33 | 只看該作者
if(flag==1){ P1=0xfe;deng=1;num=0;break; }       //按鍵1
回復

使用道具 舉報

板凳
ID:332444 發表于 2020-7-5 17:34 | 只看該作者
if(flag==1) {P1=0xfe;deng=1;num=0;}break;        //按鍵1
回復

使用道具 舉報

地板
ID:797796 發表于 2020-7-5 19:47 | 只看該作者
xianfajushi 發表于 2020-7-5 17:33
if(flag==1){ P1=0xfe;deng=1;num=0;break; }       //按鍵1

明白了,蟹蟹大佬
回復

使用道具 舉報

5#
ID:808700 發表于 2020-7-29 11:22 | 只看該作者
if后面沒有大括號,,判斷為真也只能執行一條語句
回復

使用道具 舉報

6#
ID:213173 發表于 2020-7-30 10:39 | 只看該作者
不論是正常搶答還是違規搶答,一旦中斷被觸發即刻關閉EX0=0封死所有搶答鍵,只有主持鍵才能解鎖。這只是最基本的搶答器,還需要完善超時棄答,各路加減計分等等。
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char//宏定義
  4. sbit host=P3^0;
  5. sbit deng=P3^6;
  6. bit   flag=0;
  7. bit   sign;
  8. bit   key_value;
  9. uchar count=0;
  10. uint  count1=0;
  11. uchar num=0;
  12. uchar code table[]={//共陽數碼管段碼"0~f-."
  13.                 0xc0,0xf9,0xa4,0xb0,
  14.                 0x99,0x92,0x82,0xf8,
  15.                 0x80,0x90,0x88,0x83,
  16.                 0xc6,0xa1,0x86,0x8e,0xbf,0x7f};

  17. void delay(uint c)                    // 延時子程序
  18. {  
  19.         uint i,j;
  20.         for(i=c;i>0;i--)
  21.                 for(j=120;j>0;j--);
  22. }

  23. void main()                           //主函數
  24. {
  25.         EA=1;
  26.         EX0=1;
  27.         IT0=0;
  28.         while(1)
  29.         {
  30.                 if(host==0)          //主持開關1被按下
  31.                 {
  32.                         count++;                                //消抖計數
  33.                         if(count>=10 && sign==0)
  34.                         {
  35.                                 sign=1;                        //鎖定鍵態
  36.                                 key_value=~key_value;
  37.                                 if(key_value==1)//開始搶答
  38.                                         flag=1;
  39.                                 if(key_value==0)//復位
  40.                                 {
  41.                                         key_value=0;
  42.                                         EX0=1;
  43.                                         flag=0;
  44.                                         deng=1;
  45.                                         num=0;
  46.                                         P1=0xff;
  47.                                 }
  48.                         }
  49.                 }
  50.                 else //松手清0
  51.                 {
  52.                         count=0;
  53.                         sign=0;
  54.                 }
  55.                 if(flag==0 && num==0)
  56.                         P0=table[0];//顯示0
  57.                 else if(flag==1 && num==0)
  58.                         P0=table[16];//顯示"-"
  59.                 else if(flag==1 && num!=0)
  60.                         P0=table[num];//顯示編號
  61.                 else if(flag!=1 && num!=0)       
  62.                 {//閃爍顯示違規編號
  63.                         count1++;
  64.                         if(count1<500)
  65.                                 P0=table[num];
  66.                         else P0=0xff;
  67.                         if(count1>=1000)
  68.                                 count1=0;
  69.                 }
  70.                 delay(1);//控制主循環周期約1ms
  71.         }
  72. }
  73. void INT_0() interrupt 0
  74. {
  75. //由于中斷自封鎖,無需消抖
  76.         EX0=0;
  77.         switch(P2)
  78.         {
  79.                 case 0xfe: P1=0xfe;num=1;break;        //按鍵1
  80.                 case 0xfd: P1=0xfd;num=2;break;        //按鍵2
  81.                 case 0xfb: P1=0xfb;num=3;break;        //按鍵3
  82.                 case 0xf7: P1=0xf7;num=4;break;        //按鍵4
  83.                 case 0xef: P1=0xef;num=5;break;        //按鍵5
  84.                 case 0xdf: P1=0xdf;num=6;break;        //按鍵6
  85.                 case 0xbf: P1=0xbf;num=7;break;        //按鍵7
  86.                 case 0x7f: P1=0x7f;num=8;break;        //按鍵8
  87.         }
  88.         deng=0;
  89. //        EX0=1;
  90. }
復制代碼




回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91色在线 | 国产日韩欧美激情 | 日韩欧美综合在线视频 | 日韩视频精品在线 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 色欧美综合 | 国产精品亚洲一区二区三区在线 | 特一级黄色毛片 | 久久青| 久久久久国产精品午夜一区 | 91精品国模一区二区三区 | 国产亚洲一区精品 | 久久精品一区 | 丝袜久久 | 国产精品国产三级国产aⅴ浪潮 | 日韩在线不卡视频 | 成人在线播放网址 | 精品乱码一区二区三四区 | 国产乱码精品一区二区三区忘忧草 | 久久另类视频 | 欧美日韩国产精品激情在线播放 | 国产在线观 | 剑来高清在线观看 | 国产精品1区2区 | 亚洲高清视频一区 | 亚洲 中文 欧美 日韩 在线观看 | 久久国产精品视频 | 成人午夜电影在线观看 | 国产视频中文字幕 | 黄色综合 | 中文字幕精品一区 | 91中文字幕在线 | 观看av| 九色av| 黄色一级大片在线免费看产 | 日韩精品在线观看免费 | 亚洲日本乱码在线观看 | 91久久综合亚洲鲁鲁五月天 | 亚洲精品久久国产高清情趣图文 | 综合国产 | 国产高清在线观看 |