欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

51單片機(jī)八路搶答器的程序問題

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

正文摘要:

各位大佬,我是一名單片機(jī)小白,要求一個(gè)選手通過P2按鍵搶答后其他選手按下時(shí)沒反應(yīng),可是我的程序按了其他按鍵數(shù)字也跟著變,換了幾種方式都改變不了,請大家?guī)臀铱纯茨膫(gè)地方出錯(cuò)了 #include<reg51.h> #defi ...

回復(fù)

ID:213173 發(fā)表于 2020-7-30 10:39
不論是正常搶答還是違規(guī)搶答,一旦中斷被觸發(fā)即刻關(guān)閉EX0=0封死所有搶答鍵,只有主持鍵才能解鎖。這只是最基本的搶答器,還需要完善超時(shí)棄答,各路加減計(jì)分等等。
  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[]={//共陽數(shù)碼管段碼"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)                    // 延時(shí)子程序
  18. {  
  19.         uint i,j;
  20.         for(i=c;i>0;i--)
  21.                 for(j=120;j>0;j--);
  22. }

  23. void main()                           //主函數(shù)
  24. {
  25.         EA=1;
  26.         EX0=1;
  27.         IT0=0;
  28.         while(1)
  29.         {
  30.                 if(host==0)          //主持開關(guān)1被按下
  31.                 {
  32.                         count++;                                //消抖計(jì)數(shù)
  33.                         if(count>=10 && sign==0)
  34.                         {
  35.                                 sign=1;                        //鎖定鍵態(tài)
  36.                                 key_value=~key_value;
  37.                                 if(key_value==1)//開始搶答
  38.                                         flag=1;
  39.                                 if(key_value==0)//復(fù)位
  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];//顯示編號(hào)
  61.                 else if(flag!=1 && num!=0)       
  62.                 {//閃爍顯示違規(guī)編號(hào)
  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);//控制主循環(huán)周期約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. }
復(fù)制代碼




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

明白了,蟹蟹大佬
ID:332444 發(fā)表于 2020-7-5 17:34
if(flag==1) {P1=0xfe;deng=1;num=0;}break;        //按鍵1
ID:332444 發(fā)表于 2020-7-5 17:33
if(flag==1){ P1=0xfe;deng=1;num=0;break; }       //按鍵1

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

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

快速回復(fù) 返回頂部 返回列表