新聞中心

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

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

作者: 時(shí)間:2012-09-29 來(lái)源:網(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,說(shuō)明4個(gè)按鍵中有鍵按下。

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

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

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

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

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

序號(hào)16:如果set大于等于4,則set清0。說(shuō)明: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寫(xiě)入55H。說(shuō)明:flag是在整個(gè)程序開(kāi)始時(shí)定義的無(wú)符號(hào)字符型全局變量,用作判斷RAM區(qū)是否受干擾的依據(jù)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

序號(hào)33:set值為1時(shí),將此時(shí)up值送入X數(shù)組的第left位。隨即退出。說(shuō)明: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)閉)。隨即退出。說(shuō)明:Y數(shù)組是定時(shí)1記憶緩存區(qū)。o_f1是為了判斷定時(shí)1啟動(dòng)/關(guān)閉而在整個(gè)程序開(kāi)始時(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)閉)。隨即退出。說(shuō)明:Z數(shù)組是定時(shí)2記憶緩存區(qū)。o_f2是為了判斷定時(shí)2啟動(dòng)/關(guān)閉而在整個(gè)程序開(kāi)始時(shí)定義的位標(biāo)志。

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

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

序號(hào)38:else語(yǔ)句開(kāi)始。

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

序號(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)開(kāi)關(guān)語(yǔ)句結(jié)束。else語(yǔ)句結(jié)束。

序號(hào)46:if(n==0)語(yǔ)句結(jié)束。if(P1!=0xff)語(yǔ)句結(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ì)解釋?zhuān)存I輸入時(shí)需將當(dāng)時(shí)狀態(tài)實(shí)時(shí)顯示出來(lái),我們將顯示走時(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)定顯示),而其它三位顯示較暗(有閃爍感)的視覺(jué)效顯,讓三位需顯示較暗的數(shù)碼管每位點(diǎn)亮3mS,而顯示最亮的那位數(shù)碼管點(diǎn)亮36mS即可。限于篇幅,具體程序就不進(jìn)行詳解了,讀者朋友可自行編寫(xiě)。


上一頁(yè) 1 2 3 下一頁(yè)

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

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉