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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

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

查看數: 3208 | 評論數: 6 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2020-7-5 15:24

正文摘要:

各位大佬,我是一名單片機小白,要求一個選手通過P2按鍵搶答后其他選手按下時沒反應,可是我的程序按了其他按鍵數字也跟著變,換了幾種方式都改變不了,請大家幫我看看哪個地方出錯了 #include<reg51.h> #defi ...

回復

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. }
復制代碼




ID:808700 發表于 2020-7-29 11:22
if后面沒有大括號,,判斷為真也只能執行一條語句
ID:797796 發表于 2020-7-5 19:47
xianfajushi 發表于 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:332444 發表于 2020-7-5 17:33
if(flag==1){ P1=0xfe;deng=1;num=0;break; }       //按鍵1

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品特级毛片一区二区三区 | 欧美毛片免费观看 | 久久午夜精品福利一区二区 | 2018天天干天天操 | 日韩一区二区在线视频 | 欧美视频精品 | 超黄视频网站 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 日韩欧美二区 | 亚洲国产精品一区二区三区 | 国产高清在线 | 免费黄色a级毛片 | 国产99久久久国产精品下药 | 色婷婷亚洲一区二区三区 | 91精品国产自产在线老师啪 | 亚洲福利av | 欧美黑人国产人伦爽爽爽 | 韩日一区| 国产精品一区二区三区在线 | 久久久精 | 国产成人精品久久 | 国产精品一区二区三区在线 | 久久精品国产亚洲 | 91精品国产日韩91久久久久久 | 香蕉视频在线播放 | 亚洲精品国产偷自在线观看 | 亚洲视频免费在线观看 | 永久av | 皇色视频在线 | 国产女人与拘做受视频 | 一区欧美 | 中文天堂在线一区 | 在线黄| 精品婷婷 | 99reav | 成人在线免费网站 | 日本人爽p大片免费看 | 中文字幕国产在线 | 精品欧美一区免费观看α√ | 欧美久久一区二区三区 | 久久精品一区二区 |