亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機(jī)單中斷多按鍵的應(yīng)用源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:256970 發(fā)表于 2019-7-25 12:31 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
    在單片機(jī)的按鍵編程中,有時(shí)會(huì)遇到一個(gè)問題,用多個(gè)按鍵來控制多個(gè)死循環(huán),而程序一旦進(jìn)入循環(huán)就跳不出來,此時(shí)會(huì)想到用中斷,而普通單片機(jī)一般只有2個(gè)外部中斷,stc系列的查了一下最多也只有5個(gè)外部中斷,那要是超過5個(gè)按鍵怎么辦?能不能只用一個(gè)中斷口來判斷多個(gè)按鍵呢,這樣就不用那么多中斷口了,答案是肯定的。經(jīng)過查閱單片機(jī)按鍵方面的資料,自己自創(chuàng)了如下程序,分享給大家,希望能幫到需要的人。
//51單片機(jī)單中斷多按鍵的應(yīng)用
//應(yīng)用于STC15W204S,其他單片機(jī)修改引腳同樣適用
//下附程序中斷按鍵主要部分
...
sbit key0=P5^5;//定義按鍵引腳
sbit key1=P3^2;
sbit key2=P3^6;
sbit key3=P3^7;
sbit key4=P1^0;
sbit key5=P1^1;
sbit key6=P1^2;
sbit key7=P1^3;
sbit zhd=P3^3;//定義中斷1
...
void main()
{
    key0=key1=key2=key3=key4=key5=key6=key7=0;
    zhd=1;//初始化中斷口需為高電平,將中斷設(shè)置為下降沿即可
...
    while(1)
    {
        while(KT==0){...}//多個(gè)程序自循環(huán)
        while(KT==1){...}
        while(KT==2){...}
        while(KT==3){...}
        while(KT==4){...}
        while(KT==5){...}
        while(KT==6){...}
        while(KT==7){...}
    }
}
void EXINT_1() interrupt 2
{
    delay(10);
    if((P3&0x01)!=0x01)   
    {
    key0=key1=key2=key3=key4=key5=key6=key7=1;zhd=0;
    if((P5&0x20)!=0x20)KT=0;
    if((P3&0x04)!=0x04){KT=1;LED=0;}
    if((P3&0x40)!=0x40)KT=2;
    if((P3&0x80)!=0x80)KT=3;
    if((P1&0x01)!=0x01)KT=4;
    if((P1&0x02)!=0x02)KT=5;
    if((P1&0x04)!=0x04)KT=6;
    if((P1&0x08)!=0x08)KT=7;
    }
    key0=key1=key2=key3=key4=key5=key6=key7=0;zhd=1;
    while((P3&0x01)!=0x01);//等待按鍵松開,松手后執(zhí)行對應(yīng)主程序
}

以上的Word格式文檔51黑下載地址:
51單片機(jī)單中斷多按鍵的應(yīng)用.doc (29 KB, 下載次數(shù): 44)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:383374 發(fā)表于 2019-8-15 01:55 來自觸屏版 | 只看該作者
還要有觸發(fā)信號,不然單代碼沒用
回復(fù)

使用道具 舉報(bào)

板凳
ID:282095 發(fā)表于 2019-8-15 11:10 | 只看該作者
沒有觸發(fā)電源信號的話 程序調(diào)不通啊
回復(fù)

使用道具 舉報(bào)

地板
ID:256970 發(fā)表于 2019-8-15 23:30 | 只看該作者
夢園心田 發(fā)表于 2019-8-15 01:55
還要有觸發(fā)信號,不然單代碼沒用

不明白你說的意思,這個(gè)程序是按鍵觸發(fā)中斷的,不需要其他觸發(fā)信號了,如果還需要其他觸發(fā)信號,這個(gè)程序就沒有什么意義了。估計(jì)你還沒有完全看懂這段代碼,大概說一下,一般按鍵是一端接按鍵引腳,一端接公共地,而使用這段代碼按鍵不用接公共地,直接將接公共地的一端都接到單個(gè)中斷口就行了,初始化中斷口需為高電平,將中斷設(shè)置為下降沿,按鍵引腳均設(shè)置為低電平,如此只要按鍵按下便能進(jìn)入中斷了,在中斷內(nèi)判斷鍵值,主序程中執(zhí)行對應(yīng)循環(huán)程序。此段代碼意在解決讓多個(gè)獨(dú)立按鍵具有中斷功能,親測有效!
回復(fù)

使用道具 舉報(bào)

5#
ID:385637 發(fā)表于 2019-8-16 09:54 | 只看該作者
這是個(gè)好方法,一個(gè)中斷可以同時(shí)用好多按鍵,但就是有時(shí)要用到組合鍵功能怎么處理?
回復(fù)

使用道具 舉報(bào)

6#
ID:256970 發(fā)表于 2019-8-17 00:03 | 只看該作者
本帖最后由 藍(lán)色海陽 于 2019-8-17 23:00 編輯
shenyuqiu 發(fā)表于 2019-8-16 09:54
這是個(gè)好方法,一個(gè)中斷可以同時(shí)用好多按鍵,但就是有時(shí)要用到組合鍵功能怎么處理?

這個(gè)組合按鍵也很容易呀,看下這個(gè)位置的代碼:
if((P1&0x01)!=0x01)KT=4;
if((P1&0x02)!=0x02)KT=5;
if((P1&0x04)!=0x04)KT=6;
if((P1&0x08)!=0x08)KT=7;
這是判斷4、5、6、7鍵的鍵值,同時(shí)4567鍵均在P1端口,以此端口舉例,在上邊代碼后加如下代碼(其他不變):
if((P1&0x03)!=0x03)KT=11;//4、5鍵同時(shí)按下(1+2=3)
if((P1&0x07)!=0x07)KT=111;//4、5、6鍵同時(shí)按下(1+2+4=7)
if((P1&0x0F)!=0x0F)KT=1111;//4、5、6、7鍵同時(shí)按下(1+2+4+8=15即0F)
主程序中判斷KT的值,執(zhí)行程序就好
回復(fù)

使用道具 舉報(bào)

7#
ID:282095 發(fā)表于 2019-8-17 00:36 | 只看該作者
組合按鍵 獨(dú)立按鍵 觸摸按鍵
回復(fù)

使用道具 舉報(bào)

8#
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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