在前面的IO篇中,使用到矩陣鍵盤與LED,主函數(shù)中對(duì)它們的功能函數(shù),從而檢測(cè)矩陣鍵盤是否被按下,LED是否需要被點(diǎn)亮。如下面的代碼所示,在循環(huán)中,不斷執(zhí)行鍵盤掃描與顯示。
/*******************************************************
*
* Function name :main
* Description :掃描鍵盤與顯示
* Parameter :None
* Return :None
**********************************************************/
void main() {
sysinit();
while(1) {
//掃描鍵盤將鍵值碼保存到一維數(shù)組
inputNum();
//顯示數(shù)組
showsmg(0,table2[0]);
delay(5); //添加延時(shí)函數(shù),防止會(huì)有顯示亂碼,必須加
if(table2[1]==1){
showsmg(1,table2[1]);
delay(5); //添加延時(shí)函數(shù),防止會(huì)有顯示亂碼,必須加
}
}
從上面的代碼中,循環(huán)中的inputNum()函數(shù)會(huì)被一直調(diào)用,CPU不斷檢測(cè)檢矩陣鍵盤有沒有被使用,從而進(jìn)行按鍵處理。
實(shí)際應(yīng)用中,可能矩陣鍵盤很久才會(huì)被用到,不斷掃描的方式,會(huì)影響CPU的利用率;為此希望按鍵被按下時(shí), 才會(huì)執(zhí)行按鍵代碼處理代碼,否則執(zhí)行其他的功能代碼。這樣子inputNum()函數(shù),就不應(yīng)該放在主函數(shù)執(zhí)行了,而是需要放在inputNum()函數(shù)放在中斷服務(wù)程序中執(zhí)行。
中斷是個(gè)什么概念?從上面的場(chǎng)景中可以看到
(1)CPU可以循環(huán)執(zhí)行著主程序代碼;
(2)矩陣鍵盤被按下(有中斷源請(qǐng)求),打斷主程序執(zhí)行;
(3)中斷響應(yīng),進(jìn)入中斷服務(wù)程序(執(zhí)行按鍵處理程序);
(4)中斷服務(wù)程序(按鍵處理程序)執(zhí)行完后,中斷返回;
(5)繼續(xù)執(zhí)行主函數(shù)代碼。
中斷的是否發(fā)生,是由外部因素決定(按鍵是否被按下,是人為因素)。程序中無(wú)法事先按安排好(不然鍵盤掃描函數(shù)可以放在主函數(shù)執(zhí)行即可),因此中斷服務(wù)程序的過程是由硬件自動(dòng)完成的。
中斷的特點(diǎn):
1)分時(shí)操作:緩解慢速外設(shè)與快速CPU的矛盾(鍵盤使用與CPU利用率的矛盾)
2)實(shí)時(shí)操作:外界變量可以根據(jù)要向CPU提出處理請(qǐng)求
中斷系統(tǒng)的功能:
1)實(shí)現(xiàn)中斷響應(yīng)與中斷返回
根據(jù)中斷請(qǐng)求優(yōu)先級(jí)是否馬上進(jìn)行中斷響應(yīng);
執(zhí)行中斷響應(yīng)時(shí),需要將當(dāng)前運(yùn)行的狀態(tài)(程序指針PC、寄存器、標(biāo)志位)壓入堆棧保存,保護(hù)現(xiàn)場(chǎng),然后進(jìn)入中斷服務(wù)程序;
中斷服務(wù)程序執(zhí)行完后,恢復(fù)原來的運(yùn)行狀態(tài),恢復(fù)現(xiàn)場(chǎng)。
2)中斷優(yōu)先權(quán)
一般系統(tǒng)有多個(gè)中斷源(可以請(qǐng)求中斷的事件),它們進(jìn)行中斷請(qǐng)求時(shí),需要區(qū)分優(yōu)先級(jí)進(jìn)行響應(yīng)。
3)中斷嵌套
中斷可以實(shí)現(xiàn)嵌套,當(dāng)CPU正在響應(yīng)某個(gè)中斷,這個(gè)時(shí)候有更高優(yōu)先級(jí)的中斷請(qǐng)求,高優(yōu)先級(jí)的中斷可以打斷低優(yōu)先級(jí)的中斷,先高優(yōu)先級(jí)中斷,然后返回執(zhí)行低優(yōu)先級(jí)中斷。
-
led
+關(guān)注
關(guān)注
242文章
23794瀏覽量
672580 -
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44962瀏覽量
648972 -
中斷系統(tǒng)
+關(guān)注
關(guān)注
1文章
96瀏覽量
61361 -
矩陣鍵盤
+關(guān)注
關(guān)注
7文章
207瀏覽量
32044
發(fā)布評(píng)論請(qǐng)先 登錄
51單片機(jī)中斷系統(tǒng)詳解
單片機(jī)教程十七:單片機(jī)的中斷系統(tǒng)

單片機(jī)中斷系統(tǒng)_從零開始學(xué)習(xí)單片機(jī)系列
單片機(jī)中斷系統(tǒng)介紹_51單片機(jī)中斷系統(tǒng)結(jié)構(gòu)

單片機(jī)--中斷系統(tǒng)實(shí)驗(yàn)

C51單片機(jī)學(xué)習(xí)筆記(四)——單片機(jī)的中斷系統(tǒng)及應(yīng)用

單片機(jī)(AT89C51)中斷系統(tǒng)詳解和中斷系統(tǒng)應(yīng)用實(shí)驗(yàn)

51單片機(jī)(十四)—— 中斷功能介紹

51單片機(jī)的中斷系統(tǒng)

單片機(jī)基礎(chǔ):什么是中斷系統(tǒng)、中斷系統(tǒng)如何用(附中斷系統(tǒng)應(yīng)用實(shí)例)

基于單片機(jī)的外部中斷實(shí)驗(yàn) 中斷系統(tǒng)知識(shí)介紹

評(píng)論