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

標題: 關于單片機按鍵控制小燈,一個按鍵如何控制多個程序? [打印本頁]

作者: 坐在分頭調戲鬼    時間: 2019-1-1 15:11
標題: 關于單片機按鍵控制小燈,一個按鍵如何控制多個程序?
想實現一個按鍵控制多個程序應該怎么辦   每按下一次  更換一個程序   但是用的同一個按鍵

作者: 畫流星    時間: 2019-1-1 16:09
可以定義一個變量,按鍵按下去后變量加一,然后后面寫if語句,當變量為0時執行什么程序,當變量為1時執行什么程序,以此類推,這樣就可以用一個按鍵更換程序了
作者: 微揚    時間: 2019-1-1 16:19
可以使用中斷嵌套

作者: HC6800-ES-V2.0    時間: 2019-1-1 16:25
可以嘛——用switch語句。
按鍵只計數,再通過switch語句選擇不同的函數,就可以了。
例如:
                if(k1==0)//掃描鍵盤k1
                {
                        Delay10ms(1);
                        if(k1==0)
                        {
                            j++;
                            if (j>5)
                            {
                                 j=0;
                            }
                            while((i<50)&&(k1==0))
                            {
                                    Delay10ms(1);
                                    i++;
                            }
                            i=0;
                        }

                switch(j)         //位選,選擇點亮的數碼管,
                {
                        case(0):
                                ONE(); break;
                        case(1):
                                TWO(); break;
                        case(2):
                                ......; break;
                        case(3):
                                ......; break;
                        case(4):
                                ......; break;
                        case(5):
                                ......; break;
                        }
作者: jll586    時間: 2019-1-1 16:40
創建標志位,一個值對應一個程序
作者: sadwdawdasd    時間: 2019-1-1 16:59
#include <reg51.h>
#define uchar unsigned char
sbit key = P1^0;
sbit led0 = P1^1;
sbit led1 = P1^2;
uchar count = 0;
void delayms (uchar time)//延時
{
for(time; time>0; time--)
{
TMOD |= 0x01;
TH0 = 0xfc;
TL0 = 0x18;
TR0 = 1; //啟動計數器0
while(TF0!=1);//計數溢出
TF0 = 0;
TR0 = 0;
}
}
void scan_key (void)
{
if (!key)
{
delayms (5);
if (!key)
{
delayms (1);
while (!key);
count++;
if (count==3)
{
count = 0;
}
}
}
}
void main (void)
{
P1 = 0xff;
while (1)
{
scan_key ();
if (count==0)
{
led0 = 1;
led1 = 1;
}
if (count==1)
{
led0 = 0;
led1 = 1;
}
if (count==2)
{
led0 = 1;
led1 = 0;
}
}
}
作者: h124020135    時間: 2019-1-1 17:05
控制多個程序  首先程序是你自己寫的   執行完一個動作倒是可以進行下一個  但是按鈕就是個開關而已   所以按鍵切換不了程序   程序簡單或復雜自己寫入
作者: xuyaqi    時間: 2019-1-1 17:25
可以設個標記,按一下標記+1,標記數不變后,執行標記數對應的程序。
作者: 25Hzzz    時間: 2019-1-1 17:50
定義一個變量,每按一次按鍵變量自加1,然后判斷變量的值,根據變量的值跳轉程序,當變量自增到一定的值就重新給變量賦值1,希望能幫到你
作者: 坐在分頭調戲鬼    時間: 2019-1-3 14:41
sadwdawdasd 發表于 2019-1-1 16:59
#include
#define uchar unsigned char
sbit key = P1^0;

但是怎樣才可以將程序快速的跳出延時函數呢    我想用break  但是應該怎么加呢
作者: qazwsx12379    時間: 2019-1-3 15:36
#include<reg52.h> #define uint unsigned int #define uchar unsigned char #define LED P0 sbit S1=P1^0; 按鍵1 void delay(uint i) { uchar x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } void main() { if(s1==0) { delay(2); if(s1==0) { LED=0; } } }
作者: Zidone    時間: 2019-1-3 19:10
可以使用狀態機




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1