音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請教用C實現(xiàn)一個按鍵程序

作者:sukejia 欄目:單片機
請教用C實現(xiàn)一個按鍵程序
我想請教高手,我想實現(xiàn)一個按鍵程序是這樣工作。當P1.0-P1.3上分別接4個按鍵,當我按下P1.0按鍵時為底電平時,同時對應(yīng)P0.0也為底電平,當松開P1.0按鍵時P0.0回到高電平,P1.1至P1.3同理。我的要求是不使用單片機的復(fù)位功能,用純程序方式怎么能實現(xiàn)那。那為高手能把程序?qū)懡o我看看呀。

2樓: >>參與討論
sukejia
難道沒有高手也不會嗎?
請高手幫幫忙說下思路也行

3樓: >>參與討論
hotpower
要是回此帖必會被定罪為灌水,自己在壇內(nèi)搜索吧
 
4樓: >>參與討論
sukejia
幫幫我!
我是初學(xué)者!不使用單片機復(fù)位功能,怎么可以實現(xiàn)呀,謝謝了。
把程序發(fā)到我油箱里也行,sukejia41@yahoo.com.cn 謝謝各位了

5樓: >>參與討論
jerry_21cn
這兩個口賦給同一值行不行?
LOW=P1^1;
LOW=P0^0;
這樣行不行?試試?

6樓: >>參與討論
sukejia
這里沒有會的嗎???
這是我寫的程序但是當按鍵按下后就一直保持底電平了。

#include<AT89X51.H>
#define uCHAR unsigned CHAR
#define uint unsigned int


void dlms(void);
uCHAR kbscan(void);

void main (void)
{
uCHAR key;
while(1)
  {
   key=kbscan();
   dlms();
   }
}

void dlms(void)
{
uint i;
for(i=200;i>0;i--){}
}
  uCHAR kbscan(void)
  {
   uCHAR a,b,c,d;
   P1=0xf0;
   if((P1&0xf0)!=0xf0)
   {
    dlms();
    if((P1&0xf0)!=0xf0);
    {
     a=0xfe;
     while((a&0x10)!=0)
     {
     P1=a;
     if((P1&0xf0)!=0xf0)
     {
     b=(P1&0xf0)|0x0f;
     c=((~a)+(~b));
     
     SWITCH(c)///////////關(guān)鍵是這個地方怎么該別??謝謝
     {
     case 0x11:////////
     
     P0_0=0;/////////
     break;

    
           
     default://///////
     //P1_7=0;////////
     break;/////////
     }
    

      }
      else
      a=(a<<1)|0x01;
      }
     }
    }
  return(0);
   }


7樓: >>參與討論
baipengwei
我也是新手、、、
if ( input1==0 ) outputtemp1 = 0x010 ;
if ( input1==0 ) outputtemp2 = 0x020 ;
if ( input1==0 ) outputtemp3 = 0x040 ;
if ( input1==0 ) outputtemp4 = 0x080 ;
temp1 = outputtemp1 + outputtemp2 + outputtemp3 +outputtemp4  ;}
temp2 = temp1 & 0x0f0 ;
P1= temp2    ;
把上面的修改一下。



#define uCHAR unsigned CHAR
#define uint unsigned int

這兩行的干嗎的呢

8樓: >>參與討論
zyncn
1
直接輪詢每一個鍵,(如果鍵按下就調(diào)用延時去抖),
讓P0^0=P1^0;

9樓: >>參與討論
computer00
真暈
#include <AT89X51.H>

void KEYBOARD(void)
{
P0_0=P1_0;
P0_1=P1_1;
P0_2=P1_2;
P0_3=P1_3;
}

void main(void)
{
while(1)
  {
   KEYBOARD();
  }
}

10樓: >>參與討論
hotpower
哈哈,太精練了!!!
可這樣的程序又能用在何處???

我建議computer00讓樓主干脆將鍵和LED連在一起---程序都不用編,按鍵就亮燈...

省得編程序鬧心...

11樓: >>參與討論
computer00
誰說這樣就不能用了呀,
#include <AT89X51.H>

void KEYBOARD(void)
{
P0_0=P1_0;
P0_1=P1_1;
P0_2=P1_2;
P0_3=P1_3;
//可以添加其它鍵盤掃描部分。用全局變量保存按鍵
//每次掃描得到的鍵值跟上一次的比較。可利用顯示
//部分的20mS做鍵盤去抖,長按鍵處理等等了……
}

void DISPLAY(void)
{
//顯示處理,比如動態(tài)掃描數(shù)碼管,處理時間為20mS
}

void deal_key(void)
{
//按鍵處理
}


void main(void)
{
while(1)
  {
   KEYBOARD();
   deal_key();
   DISPLAY();
  }
}

這樣不能用嗎?而且樓主本來的要求就是那樣嘛,我是現(xiàn)實主義派,
所以他要求什么,我就給他寫什么了。

如果主程序不方便循環(huán)處理按鍵的話,我干脆給他開個定時器,
每10mS掃描一次鍵盤。

12樓: >>參與討論
hotpower
沒看我拍案叫絕嗎???
不過
P0_0=P1_0;
P0_1=P1_1;
P0_2=P1_2;
P0_3=P1_3;
就是"短連線",這個該沒錯吧...




13樓: >>參與討論
sukejia
多謝各位的意見
呵呵 我只是一個設(shè)想但一開始沒想出來,用這個程序可以用帶鎖鍵盤控制多個設(shè)備的工作。

14樓: >>參與討論
computer00
果然被hotpower猜中,這次真的要叫他去掉單片機了……
呵呵 我只是一個設(shè)想但一開始沒想出來,用這個程序可以用帶鎖鍵盤控制多個設(shè)備的工作。

用帶鎖鍵盤來控制多個設(shè)備的工作,這都要用單片機來處理?
直接通不是更好?搞個單片機,到后邊還要加繼電器什么的,
麻煩得要死。
看來這個社會,單片機真的是越來越重要了……

15樓: >>參與討論
computer00
哦……原來是個誤會^_^
我還以為你又拍了我一磚……

* - 本貼最后修改時間:2005-6-20 22:05:23 修改者:computer00

16樓: >>參與討論
sukejia
疑問?
P0_0=P1_0;
P0_1=P1_1;
P0_2=P1_2;
P0_3=P1_3;

這種方式是可以實現(xiàn)我實驗了,但是這樣要用浪費兩個按鍵,假設(shè)按下KEY1為P0_0為底電平了,還需要在按KEY2鍵才能使P0_0回到高電平,如果我只用一個不帶鎖的KEY1鍵按一下為底在按一下為高,程序該如何???

17樓: >>參與討論
computer00
怎么會浪費按扭呢?
你按下P10,那P00就輸出低。你放開P10,那么P00輸出就為高了。

如果要使用不帶鎖的,可以用取反的方法。


if(!P1_0)P0_0=!P0_0;  
//P0口要有上拉,且負載不重,要能讀回高電平。否則就能這樣用了,要用臨時變量

其它的以此類推。
消抖處理就你自己做了,不管用硬件或者軟件消抖。

不能再說了,再說就變成灌水王了。。。。。。

18樓: >>參與討論
sukejia
不好意思我菜嗎
不好意思我菜嗎請computer00前輩諒解啊。

19樓: >>參與討論
hotpower
別怕,水王早已易主...
就算灌水,水王的罪名也該輪到我才是...

謝謝computer00繼續(xù)灌...

20樓: >>參與討論
computer00
汗顏……
原來 水王 的位置早被 hotpower 霸了,剛剛有所冒犯,還望您老見諒哈。。。

我?guī)状味荚噲D想把hotpower翻譯成中文名,但是就是想不到一個貼切的中文名,
麻煩您能給個比較貼切的嗎?^_^

熱的功率?

21樓: >>參與討論
hotpower
熱水好聽些...請看本周灌水榜
21IC社區(qū) 本周灌水榜


名次 用戶 積分
1 chunyang 14240
2 hotpower 10922
3 a12345678 9259
4 maychang 8061
5 iC921 7921
6 xingyong 6616
7 zlgARM 6475
8 computer00 5946
9 HIGHWAY 5933
10 XIEYUANBIN 5876



哈哈...頭名才能稱之為"水王",我早成"水怪"了...汗顏呀...郁悶之極...

22樓: >>參與討論
computer00
不知道這個準不準的?而且也沒防偽標志?我也可以來個的
21IC社區(qū) 本周灌水榜


名次 用戶 積分
1 computer00 5946
2 chunyang 14240
3 hotpower 10922
4 a12345678 9259
5 maychang 8061
6 iC921 7921
7 xingyong 6616
8 zlgARM 6475  
9 HIGHWAY 5933
10 XIEYUANBIN 5876


貨真價實,童叟無欺。

23樓: >>參與討論
hotpower
哈哈...21IC這些眼暈的網(wǎng)管賺錢不管事---"本周"何意???
說實話,每帖幾分,一周灌上萬分???

那他必是超級水王!!!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請大蝦幫忙看看我該怎么做,謝謝。。。
小弟初學(xué)MCU,想個買仿真器,請幫忙推薦一下
準備買一個mcu仿真器,哪位高人推薦一下型號、價錢?
有沒有可能? PCB->SCH, ASM->C? 瞎想。。。
問一下關(guān)于8279的問題,調(diào)試了3天了
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號