《51单片机应用开发从入门到精通》——2.6 中断控制功能的作用
本節(jié)書(shū)摘來(lái)自異步社區(qū)《51單片機(jī)應(yīng)用開(kāi)發(fā)從入門到精通》一書(shū)中的第2章,第2.6節(jié),作者 張華杰,更多章節(jié)內(nèi)容可以訪問(wèn)云棲社區(qū)“異步社區(qū)”公眾號(hào)查看。
2.6 中斷控制功能的作用
2.6.1 什么是中斷
所謂中斷,就是打斷正在進(jìn)行的工作,轉(zhuǎn)而去做另外一件事情。
比如說(shuō),會(huì)計(jì)正在記賬,桌面上擺著攤開(kāi)的賬本和正在使用的計(jì)數(shù)器,這時(shí)候有人敲門叫他去辦另一件事情,他暫時(shí)放下手頭工作,并保存好賬本和計(jì)數(shù)器以免被弄亂或丟失(在中斷中稱“保護(hù)現(xiàn)場(chǎng)”);等處理完事情后返回辦公桌前再拿出帳本和計(jì)數(shù)器(在中斷中稱“恢復(fù)現(xiàn)場(chǎng)”),繼續(xù)記賬。這一過(guò)程就是中斷以及中斷處理的過(guò)程。
單片機(jī)的中斷過(guò)程與上述過(guò)程類似,如圖2-4所示。
2.6.2 實(shí)現(xiàn)中斷的好處
1.提高了CPU的效率
CPU是計(jì)算機(jī)系統(tǒng)的指揮中心,它與外圍設(shè)備(如按鍵、顯示器等)聯(lián)系溝通的方法有輪詢和中斷兩種。
輪詢的方法是指無(wú)論外圍設(shè)備I/O是否需要服務(wù),CPU每隔一段時(shí)間都要依次詢問(wèn)一遍,此種方法CPU需要花費(fèi)一些時(shí)間來(lái)做詢問(wèn)服務(wù)工作。
而中斷方法是指當(dāng)外圍設(shè)備需要服務(wù)時(shí),外設(shè)會(huì)主動(dòng)告訴CPU,CPU得知有外圍設(shè)備需要服務(wù)時(shí),才去執(zhí)行中斷處理子程序,所以省去了依次查詢的時(shí)間,提高了CPU的利用率。
2.可實(shí)現(xiàn)實(shí)時(shí)處理
在實(shí)時(shí)控制中,利用中斷技術(shù),外圍設(shè)備在任何時(shí)刻都可以發(fā)出中斷請(qǐng)求,CPU接到請(qǐng)求后就能及時(shí)處理,以滿足實(shí)時(shí)控制要求。
3.可及時(shí)處理故障
計(jì)算機(jī)系統(tǒng)在運(yùn)行過(guò)程中難免會(huì)出現(xiàn)一些事先無(wú)法預(yù)料的故障,如電源掉電、存儲(chǔ)器出錯(cuò)、外圍設(shè)備工作不正常等,這時(shí)可以通過(guò)中斷系統(tǒng)由故障源向CPU發(fā)送中斷請(qǐng)求,由CPU及時(shí)轉(zhuǎn)到相應(yīng)的故障處理程序進(jìn)行處理,提高了計(jì)算機(jī)的可靠性。
2.6.3 中斷處理過(guò)程
中斷處理過(guò)程如圖2-5所示。
1.中斷當(dāng)前程序并保護(hù)斷點(diǎn)
CPU響應(yīng)中斷后,把被中斷程序的斷點(diǎn)(即PC值)壓入堆棧保存,以備中斷處理完畢后能返回被中斷的程序。
2.轉(zhuǎn)入中斷服務(wù)入口
給出中斷入口地址,轉(zhuǎn)入被響應(yīng)的中斷處理程序。
3.保護(hù)現(xiàn)場(chǎng)
為了使被中斷的程序及其所使用的寄存器內(nèi)容不被破壞,以免在中斷返回后影響被中斷程序的執(zhí)行,要將被中斷程序的有關(guān)信息及其所使用的寄存器內(nèi)容保護(hù)起來(lái),壓入堆棧保存,這就是保護(hù)現(xiàn)場(chǎng)。
4.執(zhí)行中斷服務(wù)程序
中斷服務(wù)程序是中斷處理的具體內(nèi)容。
5.恢復(fù)現(xiàn)場(chǎng)
把保護(hù)現(xiàn)場(chǎng)時(shí)所保存的中斷程序的有關(guān)信息及其所使用的寄存器內(nèi)容恢復(fù)原樣,以便返回被中斷的程序后能夠正常執(zhí)行。
6.中斷返回
中斷返回是把程序運(yùn)行從中斷處理程序轉(zhuǎn)回到被中斷的程序中去。中斷返回是通過(guò)中斷返回指令RETI完成的。
2.6.4 中斷源及入口地址
1.中斷源
80C51是一個(gè)多中斷源的單片機(jī),共有3類5個(gè)中斷源,分別是兩個(gè)外部中斷、兩個(gè)定時(shí)中斷和一個(gè)串行中斷,如表2-8所示。
在3類中斷源中,外部中斷類是指由外部原因引起的中斷,共有兩個(gè)中斷源,即外部中斷0(INT0)和外部中斷1(INT1)。它們的中斷請(qǐng)求信號(hào)分別由引腳INT0(P3.2)和INT1(P3.3)引入。
外部中斷請(qǐng)求有兩種信號(hào)方式:電平方式和脈沖方式。
電平方式是低電平有效。只要單片機(jī)在中斷請(qǐng)求引入端(INT0和INT1)上采樣到有效的低電平時(shí),就激活外部中斷。
脈沖方式是脈沖的下降沿有效。如在中斷請(qǐng)求引入端采樣到前一次為高,后一次為低,即為有效中斷請(qǐng)求。上述兩種信號(hào)方式可通過(guò)有關(guān)控制位進(jìn)行設(shè)置。
定時(shí)中斷類和串行中斷類將在有關(guān)章節(jié)中介紹。
2.中斷源入口地址
每一個(gè)中斷源都有一個(gè)固定的中斷處理程序入口,它們的地址如表2-9所示。
從表2-9可見(jiàn),各中斷源入口地址間只相隔8個(gè)單元。一些簡(jiǎn)單的中斷處理程序可以直接安排在這些單元之內(nèi);復(fù)雜的中斷處理程,則可在各中斷入口地址處設(shè)置一條無(wú)條件轉(zhuǎn)移指令,跳轉(zhuǎn)到其他地址安排中斷處理程序。
總結(jié)
以上是生活随笔為你收集整理的《51单片机应用开发从入门到精通》——2.6 中断控制功能的作用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《乐在C语言》一2.2 数据类型
- 下一篇: nginx+tomcat 反向代理 负载