找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

大神可否幫忙看一下單片機(jī)按鍵程序哪里出問題了?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:401370 發(fā)表于 2018-12-2 21:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我的這個程序為什么按鍵不起作用?我的數(shù)碼管是分開的,用了兩組 I/O口。 就是仿真的時候它直接就開始倒計時了。按鍵不管用。謝謝大神幫助

單片機(jī)源碼:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint i,j,m,n,flag1,flag2;
  5. sbit key_1 = P1^0;
  6. sbit key_2 = P1^1;
  7. uchar code aa[]={  0x3F,  //"0"
  8.                    0x06,  //"1"
  9.                    0x5B,  //"2"
  10.                    0x4F,  //"3"
  11.                    0x66,  //"4"
  12.                    0x6D,  //"5"
  13.                    0x7D,  //"6"
  14.                    0x07,  //"7"
  15.                    0x7F,  //"8"
  16.                    0x6F   //"9"
  17.                  };

  18. void delay(uint z)
  19. {
  20.         uint x,y;
  21.         for(x = z; x > 0; x--)
  22.                 for(y = 114; y > 0 ; y--);
  23. }

  24. void show()
  25. {
  26.     for(i = 9;i<10;--i)
  27.             {
  28.               for(j = 9;j<10;--j)
  29.                   {
  30.               P3 = aa[j];
  31.                                             P2 = aa[i];
  32.                                             delay(250);
  33.              }
  34.                   }
  35.         
  36. }


  37. void key()
  38. {
  39.   if(!key_1)
  40.         {
  41.     delay(10);
  42.                 if(!key_1)
  43.                 {
  44.        flag1 = 1;
  45.     }
  46.   }
  47.          if(!key_2)
  48.     delay(10);
  49.                 if(!key_2)
  50.                 {
  51.        flag2 = 1;
  52.     }
  53. }

  54. void main()
  55. {
  56.          while(1)
  57.          {
  58.                  P3 = P2 = 0x00;
  59.                  key();
  60.                  if(flag1 = 1)
  61.                  {
  62.         show();
  63.                           key();
  64.         if(flag2 = 1)
  65.                                 {
  66.           flag1 == 0;
  67.                                         break;
  68.         }
  69.                  }
  70.                  if(flag2 = 1)
  71.                  {
  72.                          while(1)
  73.                          {
  74.          i = m;
  75.                                  j = n;
  76.                                  P3 = aa[n];
  77.                                  P2 = aa[m];
  78.                           key();
  79.         if(flag1 = 1)
  80.                                 {
  81.           flag2 == 0;
  82.                                         break;
  83.         }
  84.                          }
  85.                  }
  86.          }
  87. }
復(fù)制代碼

QQ圖片20181202213529.png (69.89 KB, 下載次數(shù): 46)

兩個分開數(shù)碼管的倒計時

兩個分開數(shù)碼管的倒計時
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:434807 發(fā)表于 2018-12-3 09:19 | 只看該作者
  • void main()
    {
             while(1)
             {
                     P3=P2=0x00;
                     key();
                     if(flag1==1)
                     {
                              show();
                              key();
                                   if(flag2 == 1)
                                         {
                                             flag1 = 0;
                                             break;
                                         }
                     }
                      if(flag2==1)
                           {
                              while(1)
                              {
                                     i=m;
                                     j=n;
                                     P3=aa[n];
                                     P2=aa[m];
                                     key();
                                     if(flag1==1)
                                    {
                                            flag2=0;
                                            break;
                                    }
                              }
                           }
             }
    }
兩個問題,1,你這個是怎么過的編譯,編譯肯定有錯誤,括號括不明白,if不會用嗎?里邊寫一個等于是賦值的意思,寫兩個才是判斷是否等于。
2,你這格式書寫以后要吃虧的,自己寫的程序自己都不愿意看,別人哪會有功夫給你看,所以說,把程序?qū)懬宄,括號括清楚!不要亂七八糟的
看這不舒服

評分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:94031 發(fā)表于 2018-12-3 10:56 | 只看該作者
注意在if判斷里要用 ==,賦值時要用 =。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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