日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

  • 回復(fù)
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖

按鍵的復(fù)用應(yīng)該怎樣編寫程序?

以下的程序按鍵只能跳一次,如果按照我的流程圖工作應(yīng)該怎樣寫?

#include
void main()
{ unsigned char KeyValue;
for(;;)

{

    P2=0xff;
    
KeyValue=P2;
switch(KeyValue)
{
            if(P2=0xfe)
              else
     P1=0xfe;
case 0xfe:P1=0x00;break;  //P20
case 0xfd:P1=0xdd;break;  //P21
case 0xfb:P1=0xbb;break;  //P22
            case 0xf7:P1=0x77;break;  //P23
            case 0xef:P1=0x55;break;  //P23
}
}
}
全部回復(fù)(6)
正序查看
倒序查看
xing1234
LV.6
2
2009-03-28 09:19
可以用時間來區(qū)分,比如長按多少時間,或連續(xù)按幾次,或按下后等多少時間再按下,具體要與用戶商量,看他們能接受哪種方式.這是我的一點小經(jīng)驗,供參考.
0
回復(fù)
madboy21
LV.8
3
2009-04-02 13:52
很簡單的問題
你可以定義一個靜態(tài)變量或是全局變量KEY1_state;
if(KEY1_UP)KEY1_state++;
而執(zhí)行子程序按KEY1_state的數(shù)據(jù)來選擇就可以了.
0
回復(fù)
金箍棒
LV.3
4
2009-04-03 16:26
@madboy21
很簡單的問題你可以定義一個靜態(tài)變量或是全局變量KEY1_state;if(KEY1_UP)KEY1_state++;而執(zhí)行子程序按KEY1_state的數(shù)據(jù)來選擇就可以了.
madboy21: 你好!我還是不明白,能否詳細(xì)點!因為我是初學(xué)的.謝謝!
0
回復(fù)
madboy21
LV.8
5
2009-04-03 17:11
@金箍棒
madboy21:你好!我還是不明白,能否詳細(xì)點!因為我是初學(xué)的.謝謝!
手上有實驗板不?我看你上面程序也是錯誤的,初學(xué)者最好能配實驗板學(xué)習(xí)會更好.
            if(P2=0xfe)
              else
     P1=0xfe;
上面不要包含在switch里面,if括號里等號應(yīng)是"=="

關(guān)于上面的問題:KEY_state按一次就加一,如果按了三次是不是數(shù)值就是三?也就是說這時應(yīng)去做什么工作(執(zhí)行什么程序)
0
回復(fù)
金箍棒
LV.3
6
2009-04-06 22:56
@madboy21
手上有實驗板不?我看你上面程序也是錯誤的,初學(xué)者最好能配實驗板學(xué)習(xí)會更好.            if(P2=0xfe)              else    P1=0xfe;上面不要包含在switch里面,if括號里等號應(yīng)是"=="關(guān)于上面的問題:KEY_state按一次就加一,如果按了三次是不是數(shù)值就是三?也就是說這時應(yīng)去做什么工作(執(zhí)行什么程序)
我自己用萬用板搭了有一塊試驗板.下面的程序只能檢測到一個按鍵.如果我要檢測到8個按鍵的話應(yīng)該怎樣改一下啊?
#include
#define uint unsigned int
#define uchar unsigned char
sbit key1=P2^0;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
  uchar num;

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
P1=0xfe;
P2=0xff;
while(1)
{
if(key1==0)
{
delay(5);
if(key1==0)
{
num++;
if(num==10)
num=0;
}
while(!key1);
delay(5);
while(!key1);
}
else
P1=table[num];
}
}
0
回復(fù)
madboy21
LV.8
7
2009-04-07 09:51
@金箍棒
我自己用萬用板搭了有一塊試驗板.下面的程序只能檢測到一個按鍵.如果我要檢測到8個按鍵的話應(yīng)該怎樣改一下啊?#include#defineuintunsignedint#defineucharunsignedcharsbitkey1=P2^0;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};  ucharnum;voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidmain(){P1=0xfe;P2=0xff;while(1){if(key1==0){delay(5);if(key1==0){num++;if(num==10)num=0;}while(!key1);delay(5);while(!key1);}elseP1=table[num];}}
單片機編程需要配合實際電路,上面只給你一個提示方法.在你程序中找不到與你所畫流程圖相符的程序.修正下廷時程序:void delay(uint z){uint y;for(;z>0;z--)           {for(y=110;y>0;y--);};}看看我做的C51單片機學(xué)習(xí)板 
0
回復(fù)
發(fā)