<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)鍵盤輸入編程

          單片機(jī)鍵盤輸入編程

          作者: 時(shí)間:2012-09-29 來源:網(wǎng)絡(luò) 收藏

          序號(hào)7:如變量n大于等于30,則m、n清零。

          序號(hào)8:P3.7置0,準(zhǔn)備讀取按鍵輸入。

          序號(hào)9:P1口置全1,準(zhǔn)備讀取按鍵輸入。

          序號(hào)10:如果P1口不等于全1,說明4個(gè)按鍵中有鍵按下。

          序號(hào)11:進(jìn)入if(P1!=0xff)語句范圍。

          序號(hào)12:如果n等于0,進(jìn)入if(n==0)語句,m置1。

          序號(hào)13:如果n等于1,進(jìn)入if(n==1)語句,同時(shí)進(jìn)行下面的具體判斷按鍵語句。作用效果為:開始時(shí)m、n均賦0,一旦有鍵按下,第一次中斷產(chǎn)生時(shí)m賦1;第二次中斷產(chǎn)生時(shí)n遞增。當(dāng)n等于1時(shí)(第二次中斷產(chǎn)生)進(jìn)入下面的具體判斷按鍵語句。若持續(xù)按下鍵,則第三次中斷產(chǎn)生~第三十一次中斷產(chǎn)生時(shí),程序不進(jìn)入具體的判斷按鍵語句過程(因這時(shí)n不等于1)。由于中斷每10mS產(chǎn)生一次,這樣可實(shí)現(xiàn)每0.31秒(31x10=0.31秒)進(jìn)行一次加法或移位的操作,與人眼的視覺特性相吻合。

          序號(hào)14:進(jìn)入具體判斷按鍵語句范圍。

          序號(hào)15:如果P1.0等于0(即電路中的set鍵按下),變量set遞增,變量left清0。說明:set、left是為了判斷模式設(shè)定及左移而在整個(gè)程序開始時(shí)定義的無符號(hào)字符型全局變量。

          序號(hào)16:如果set大于等于4,則set清0。說明:set值只能在0~3間變化,只有4種工作模式(走時(shí)及輸出控制模式、走時(shí)調(diào)整模式、定時(shí)1調(diào)整模式、定時(shí)2調(diào)整模式)。

          序號(hào)17:在set等于1時(shí),向RAM區(qū)標(biāo)志變量flag寫入55H。說明:flag是在整個(gè)程序開始時(shí)定義的無符號(hào)字符型全局變量,用作判斷RAM區(qū)是否受干擾的依據(jù)。

          序號(hào)18:如果P1.1等于0(即電路中的left鍵按下),變量left遞增。

          序號(hào)19:如果left大于等于4,則left清0。說明:left值只能在0~3間變化,LED數(shù)碼管只有4位顯示。

          序號(hào)20:如果P1.2等于0(即電路中的up鍵按下),進(jìn)入if(P1_2==0)語句,變量up遞增。說明:up是為了判斷數(shù)值增量而在整個(gè)程序開始時(shí)定義的無符號(hào)字符型全局變量。

          序號(hào)21:隨即進(jìn)入switch(left)開關(guān)語句。

          序號(hào)22:switch(left)開關(guān)語句開始。

          序號(hào)23:left值為0時(shí),如果up大于等于10,則up清0。隨即退出。說明:電子鐘的個(gè)位可在0~9之間調(diào)整。

          序號(hào)24:left值為1時(shí),如果up大于等于6,則up清0。隨即退出。說明:電子鐘的十位可在0~5之間調(diào)整。

          序號(hào)25:left值為2時(shí),如果up大于等于10,則up清0。隨即退出。說明:電子鐘的百位可在0~9之間調(diào)整。

          序號(hào)26:left值為3時(shí),如果up大于等于3,則up清0。隨即退出。說明:電子鐘的千位可在0~2之間調(diào)整。

          序號(hào)27:若left為其它值,也退出。

          序號(hào)28:switch(left)開關(guān)語句結(jié)束。

          序號(hào)29:if(P1_2==0)語句結(jié)束。

          序號(hào)30:如果P1.2等于0(即電路中的up鍵按下時(shí)),進(jìn)入if(P1_2==0)語句,同時(shí)進(jìn)入switch(set)開關(guān)語句。

          序號(hào)31:switch(set)開關(guān)語句開始。

          序號(hào)32:set值為0時(shí),退出。

          序號(hào)33:set值為1時(shí),將此時(shí)up值送入X數(shù)組的第left位。隨即退出。說明:X數(shù)組是顯示走時(shí)緩存區(qū)。

          序號(hào)34:set值為2時(shí),將此時(shí)up值送入Y數(shù)組的第left位。若此時(shí)P1.3等于0(即電路中的on/off鍵按下),則定時(shí)1啟停標(biāo)志位o_f1取反(啟動(dòng)/關(guān)閉)。隨即退出。說明:Y數(shù)組是定時(shí)1記憶緩存區(qū)。o_f1是為了判斷定時(shí)1啟動(dòng)/關(guān)閉而在整個(gè)程序開始時(shí)定義的位標(biāo)志。

          序號(hào)35:set值為3時(shí),將此時(shí)up值送入Z數(shù)組的第left位。若此時(shí)P1.3等于0(即電路中的on/off鍵按下),則定時(shí)2啟停標(biāo)志位o_f2取反(啟動(dòng)/關(guān)閉)。隨即退出。說明:Z數(shù)組是定時(shí)2記憶緩存區(qū)。o_f2是為了判斷定時(shí)2啟動(dòng)/關(guān)閉而在整個(gè)程序開始時(shí)定義的位標(biāo)志。

          序號(hào)36:若set為其它值,也退出。

          序號(hào)37:switch(set)開關(guān)語句結(jié)束。if(P1_2==0)語句結(jié)束。

          序號(hào)38:else語句開始。

          序號(hào)39:又進(jìn)入switch(set)開關(guān)語句。說明:上一個(gè)switch(set)開關(guān)語句是將按鍵產(chǎn)生的up值送入X、Y、Z數(shù)組存放,現(xiàn)在這個(gè)switch(set)開關(guān)語句是調(diào)出X、Y、Z數(shù)組內(nèi)容至變量up,以便在原來的基礎(chǔ)上遞增。例如:原來的X[0]值為5,則在調(diào)整時(shí)個(gè)位LED數(shù)碼管顯示就從5開始往上調(diào),而不會(huì)產(chǎn)生從0或其它值開始上調(diào)的情況,適合人的一般直覺。

          序號(hào)40:set值為0時(shí),退出。

          序號(hào)41:set值為1時(shí),將此時(shí)X數(shù)組的第left位值送入變量up。隨即退出。

          序號(hào)42:set值為2時(shí),將此時(shí)Y數(shù)組的第left位值送入變量up。若此時(shí)P1.3等于0(即電路中的on/off鍵按下),則定時(shí)1啟停標(biāo)志位o_f1取反(啟動(dòng)/關(guān)閉)。隨即退出。

          序號(hào)43:set值為3時(shí),將此時(shí)Z數(shù)組的第left位值送入變量up。若此時(shí)P1.3等于0(即電路中的on/off鍵按下),則定時(shí)2啟停標(biāo)志位o_f2取反(啟動(dòng)/關(guān)閉)。隨即退出。

          序號(hào)44:若set為其它值,也退出。

          序號(hào)45:switch(set)開關(guān)語句結(jié)束。else語句結(jié)束。

          序號(hào)46:if(n==0)語句結(jié)束。if(P1!=0xff)語句結(jié)束。

          序號(hào)47:本次定時(shí)中斷快結(jié)束時(shí),將暫存于i,j的當(dāng)時(shí)P1口、P3口狀態(tài)還原。

          序號(hào)48:定時(shí)1中斷函數(shù)結(jié)束。

          上面為按鍵輸入程序設(shè)計(jì)的詳細(xì)解釋,按鍵輸入時(shí)需將當(dāng)時(shí)狀態(tài)實(shí)時(shí)顯示出來,我們將顯示走時(shí)、顯示調(diào)整走時(shí)、顯示調(diào)整定時(shí)1、顯示調(diào)整定時(shí)2做成四個(gè)子程序,分別由set為0、1、2、3時(shí)散轉(zhuǎn)后的“顯示走時(shí)并判斷定時(shí)1、2到否程序”、“顯示調(diào)整走時(shí)程序”、“顯示調(diào)整定時(shí)1程序”、“顯示調(diào)整定時(shí)2程序”進(jìn)行調(diào)用。為達(dá)到需輸入的某位顯示最亮(穩(wěn)定顯示),而其它三位顯示較暗(有閃爍感)的視覺效顯,讓三位需顯示較暗的數(shù)碼管每位點(diǎn)亮3mS,而顯示最亮的那位數(shù)碼管點(diǎn)亮36mS即可。限于篇幅,具體程序就不進(jìn)行詳解了,讀者朋友可自行編寫。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 單片機(jī) 輸入編程

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();