找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

51單片機(jī)按鍵程序問(wèn)題求助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:261451 發(fā)表于 2018-7-18 09:53 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. if(key3==0)
  2.       {
  3.           delay_ms(50);        
  4.                   if(key3==0)
  5.                         {
  6.                              if(yi<9)
  7.                                  {
  8.                                    yi++;
  9.                                   }
  10.                         while(!key3);
  11.                        }
  12.         }
  13.   if(key2==0)
  14.        {
  15.            delay_ms(50);        
  16.                  if(key2==0)
  17.                       {
  18.                           if(yi>0)
  19.                                 {
  20.                                  yi--;
  21.                                  }
  22.                        while(!key2);
  23.                       }
  24.        }
復(fù)制代碼

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

使用道具 舉報(bào)

沙發(fā)
ID:261451 發(fā)表于 2018-7-18 10:02 | 只看該作者
本帖最后由 一袋天驕 于 2018-7-19 08:34 編輯
  1. if(key3==0)
  2.     {
  3.     delay_ms(50);        
  4.            if(key3==0)
  5.                {                                 
  6.                   if(er<9)
  7.                        {
  8.                          er++;
  9.                        }
  10.                      while(!key3);
  11.                  }
  12.    }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

板凳
ID:261451 發(fā)表于 2018-7-18 10:06 | 只看該作者
程序里面有多個(gè)地方需要按鍵函數(shù),怎樣做一個(gè)按鍵子函數(shù),可以對(duì)yi,er,san,si……進(jìn)行按鍵加減呢
回復(fù)

使用道具 舉報(bào)

地板
ID:84765 發(fā)表于 2018-7-18 14:51 | 只看該作者
這個(gè)簡(jiǎn)單只要void打包好就行了,看下面程序就知道了

void anjian1()
{
if(key3==0)
    {
    delay_ms(50);        
           if(key3==0)
               {                                 
                  if(yi<9)

                       {

                         yi++;

                       }

                    while(!key3);

                }
   }


if(key2==0)
   {
         delay_ms(50);        
         if(key2==0)
              {
               if(yi>0)
                    {
                      yi--;
                     }
                while(!key2);
              }
   }

}
void anjian2()
{
if(key3==0)
    {
    delay_ms(50);        
           if(key3==0)
               {                                 
                  if(san<9)

                       {

                         san++;

                       }

                    while(!key3);

                }
   }


if(key2==0)
   {
         delay_ms(50);        
         if(key2==0)
              {
               if(san>0)
                    {
                      san--;
                     }
                while(!key2);
              }
   }
}

void main()
{

  while(1)
  {
  anjian1();
  anjian2();
  }
}
回復(fù)

使用道具 舉報(bào)

5#
ID:261451 發(fā)表于 2018-7-18 15:35 | 只看該作者
13976778401 發(fā)表于 2018-7-18 14:51
這個(gè)簡(jiǎn)單只要void打包好就行了,看下面程序就知道了

void anjian1()

謝謝,我在想能不能只寫(xiě)一個(gè)按鍵函數(shù),
void  anjian(x)
{  
(按鍵加減)
},

然后需要寫(xiě)yi時(shí)用anjian(yi),需要寫(xiě)er用anjian(er),不知道我的想法有沒(méi)有錯(cuò)誤
回復(fù)

使用道具 舉報(bào)

6#
ID:261451 發(fā)表于 2018-7-18 16:28 | 只看該作者
還有一個(gè)疑問(wèn)就是如何給yi設(shè)定一個(gè)變量初值,然后在這個(gè)初值上加減
void  anjian()
{
if(key3==0)
      {
          delay_ms(50);        
                  if(key3==0)
                        {
                             if(yi<9)
                                 {
                                   yi++;
                                  }
                        while(!key3);
                       }
        }
  if(key2==0)
       {
           delay_ms(50);        
                 if(key2==0)
                      {
                          if(yi>0)
                                {
                                 yi--;
                                 }
                       while(!key2);
                      }
       }
}
回復(fù)

使用道具 舉報(bào)

7#
ID:84765 發(fā)表于 2018-7-18 17:38 | 只看該作者
一袋天驕 發(fā)表于 2018-7-18 15:35
謝謝,我在想能不能只寫(xiě)一個(gè)按鍵函數(shù),
void  anjian(x)
{  

不明確,要告訴單片機(jī)步驟教他走路!
回復(fù)

使用道具 舉報(bào)

8#
ID:84765 發(fā)表于 2018-7-18 17:41 | 只看該作者
一袋天驕 發(fā)表于 2018-7-18 16:28
還有一個(gè)疑問(wèn)就是如何給yi設(shè)定一個(gè)變量初值,然后在這個(gè)初值上加減
void  anjian()
{

void main()
{
可以在這里設(shè)置變量初級(jí)
yi=0;或等于多少自己定,初始化后就是你自己設(shè)定的變量初級(jí)!
while(1)
{
.....................
}
}

評(píng)分

參與人數(shù) 1黑幣 +70 收起 理由
admin + 70 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

9#
ID:374361 發(fā)表于 2018-7-18 20:47 | 只看該作者
將while(!key2)寫(xiě)到if條件判斷外面就OK了
回復(fù)

使用道具 舉報(bào)

10#
ID:261451 發(fā)表于 2018-7-19 08:13 | 只看該作者
13976778401 發(fā)表于 2018-7-18 17:38
不明確,要告訴單片機(jī)步驟教他走路!

謝謝,因?yàn)槎x的yi,er,san,si....,比較多,所以想需要哪個(gè)時(shí)用哪個(gè)
回復(fù)

使用道具 舉報(bào)

11#
ID:261451 發(fā)表于 2018-7-19 08:33 | 只看該作者
13976778401 發(fā)表于 2018-7-18 17:41
void main()
{
可以在這里設(shè)置變量初級(jí)

謝謝,是我沒(méi)說(shuō)清楚,不能在外面賦值,不過(guò)最后用了一個(gè)標(biāo)志位g實(shí)現(xiàn),用的4樓的子函數(shù)
void main()
{
while(1)
    {
   if(g=0)
        {
        yi=guang%10;
        g=1;
        }
    anjian_yi();
      ......
   if(key1==0)
     {
   g=0;
       }

   if(g=0)
        {
        yi=wen%10;
        g=1;
        }
    anjian_yi();
     ......
     }
}
回復(fù)

使用道具 舉報(bào)

12#
ID:261451 發(fā)表于 2018-7-19 08:35 | 只看該作者
goldfatherzuo 發(fā)表于 2018-7-18 20:47
將while(!key2)寫(xiě)到if條件判斷外面就OK了

不太理解怎么做
回復(fù)

使用道具 舉報(bào)

13#
ID:261451 發(fā)表于 2018-7-19 09:28 | 只看該作者
goldfatherzuo 發(fā)表于 2018-7-18 20:47
將while(!key2)寫(xiě)到if條件判斷外面就OK了

是這樣么,在里面會(huì)有什么影響呢
if(key2==0)
       {
           delay_ms(50);
                 if(key2==0)
                      {
                          if(yi>0)
                                {
                                 yi--;
                                 }
                      }
                       while(!key2);
       }
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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