當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]   8051的CPU在每個(gè)機(jī)器周期期間,順序采樣每個(gè)中斷源,CPU在下一個(gè)機(jī)器周期按優(yōu)先級順序查詢中斷標(biāo)志,如查詢到某個(gè)中斷標(biāo)志為1,將在下一個(gè)機(jī)器周期期間按優(yōu)先級來進(jìn)行中斷處理。在下列任一種情況存

  8051的CPU在每個(gè)機(jī)器周期期間,順序采樣每個(gè)中斷源,CPU在下一個(gè)機(jī)器周期按優(yōu)先級順序查詢中斷標(biāo)志,如查詢到某個(gè)中斷標(biāo)志為1,將在下一個(gè)機(jī)器周期期間按優(yōu)先級來進(jìn)行中斷處理。在下列任一種情況存在時(shí),中斷申請將被封鎖。

  1、CPU正在執(zhí)一個(gè)同級或高級的中斷服務(wù)程序2、當(dāng)前機(jī)器周期不是當(dāng)前指令周期的最后一個(gè)機(jī)器周期,即要保證把當(dāng)前指令執(zhí)行完。

  CPU響應(yīng)中斷, 由硬件自動將相應(yīng)的中斷矢量地址裝入程序程序計(jì)數(shù)器PC,轉(zhuǎn)入該中斷服務(wù)程序進(jìn)行處理。

  對于有些中斷源,CPU在響應(yīng)中斷后會自動清除中斷標(biāo)志,如定時(shí)器溢出標(biāo)志TF0,TF1,以及部中斷標(biāo)志IE0,IE1。

  而有些中斷標(biāo)志,不會自動清除,只能由用戶用戶軟件清除,如串行口接收發(fā)送中斷標(biāo)志RI,T1。CPU執(zhí)行中斷服務(wù)程序之前,自動將程序計(jì)數(shù)器PC內(nèi)容壓入堆棧保護(hù),然后將對應(yīng)的中斷矢量裝入程序計(jì)數(shù)器PC,使程序轉(zhuǎn)向該中斷矢量地址單元中,以執(zhí)行中斷服務(wù)程序,中斷服務(wù)程序從矢量地址開始執(zhí)行,一直到返回指令“RETI”為止?!癛ETI”指令的操作,一方面告訴中斷系統(tǒng)中斷服務(wù)程序以執(zhí)行完畢,另一方面把原來壓入堆棧保護(hù)的斷電地址從棧頂彈出,裝入程序計(jì)數(shù)器PC,使程序返回被中斷的程序斷點(diǎn)處,以便繼續(xù)執(zhí)行。

  外部中斷響應(yīng)時(shí)間外部中斷INT0和INT1的電平在每個(gè)機(jī)器周期,經(jīng)反向后鎖存到IE0和IE1的標(biāo)志位,CPU在下一個(gè)機(jī)器周期才會查詢到新置入的IE0和IE1,這時(shí)如果滿足響應(yīng)條件,CPU響應(yīng)中斷時(shí),要用二個(gè)機(jī)器周期執(zhí)行一條硬件長調(diào)用指令“LCALL”。所以,從產(chǎn)生外部中斷到開始執(zhí)行中斷程序至少需要三個(gè)完整的機(jī)器周期。如果在中斷申請時(shí),CPU正在長指令,如乘法和除法指令等四周期指令,則額外等待時(shí)間增加三個(gè)周期;若正在執(zhí)行“RETI”指令或訪問IE,IP的指令,則額外等待時(shí)間又增加兩個(gè)周期。綜上估計(jì),在單一中斷系統(tǒng)里,外部中斷響應(yīng)時(shí)間約在3-8個(gè)機(jī)器周期之間。

  下面我們?nèi)砸源蛴C(jī)為例來說明外中斷源的使用方法 。硬件連接和查詢方式基本一致,只是因?yàn)槌绦蛑袑ν庵袛噙M(jìn)行了初始化,所以,8051的端口引腳P3.2在這個(gè)例子中不再是一個(gè)普通的端口而是外中斷的輸入,另一個(gè),打印機(jī)多了一個(gè)選通信號STB。對打印機(jī)來說,這個(gè)信號是個(gè)輸入信號,其意義為:當(dāng)打印機(jī)檢測到該引腳上出現(xiàn)一個(gè)負(fù)跳變,即由高電平時(shí),表示單片機(jī)以把打印數(shù)據(jù)送上數(shù)據(jù)總線,則打印機(jī)將BUSY引腳設(shè)置為1,告訴單片機(jī)打印機(jī)正在打印,然后,開始打印。

  本例中,單片機(jī)并行接口P3的一位T0輸出作為該信號的輸入,打印緩沖區(qū)仍就在內(nèi)部數(shù)據(jù)存儲器的10H-11H單元,共三字節(jié)。下面我們來看看程序:

  第一條指令ORG 0000H是一條偽指令,意義是:告訴編譯系統(tǒng)緊跟其后的那條指令從程序存儲器的0000H單元開始存放。

  第二條指令LJMP MAIN的意義是:跳轉(zhuǎn)到標(biāo)號為MAIN的地址去運(yùn)行。

  第三條指令ORG 0003H是一條偽指令,意義是:告訴編譯系統(tǒng)緊跟其后的那條指令從程序存儲器的0003H單元開始存放。

  指令LJMP SUBO的意義是:跳轉(zhuǎn)到標(biāo)號為SUBO的地址去運(yùn)行。

  指令ORG 0050H的意義是:告訴編譯系統(tǒng)緊跟其后的那條指令從程序存儲器的0050H單元開始存放。

  MAIN是一個(gè)標(biāo)號。

  指令SETB EA意義為:對位地址EA置1,EA是8051單片機(jī)中斷系統(tǒng)是總允許位,所以,該指令的物理意義是開放8051的中斷系統(tǒng)。

  指令CLR EX0意義為:對EX0位置1,其物理意義為允許外中斷0中斷。

  指令CLR IT0意義為:對IT0位清1,其物理意義是設(shè)置外中斷0的觸發(fā)方式為邊沿觸發(fā)。

  指令MOV R0,#11H的意義是:將數(shù)據(jù)11H送入工作寄存器R0中,物理意義為設(shè)定在中斷服務(wù)程序中發(fā)送的一個(gè)數(shù)據(jù)的地址,即打印機(jī)緩沖區(qū)的第二字節(jié) 。因?yàn)楸仨氃谥鞒绦蛏习l(fā)送第一個(gè)字節(jié)之后,打印機(jī)才能發(fā)出第一次中斷請求,如果單片機(jī)將所有數(shù)據(jù)都放在中斷服務(wù)程序中發(fā)送,則會引起單片機(jī)和打印機(jī)相互等待,即打印機(jī)等待單片機(jī)將數(shù)據(jù)送上數(shù)據(jù)總線,并通過T0引腳發(fā)送一個(gè)負(fù)脈沖選通信號到打印機(jī)的STB引腳,打印機(jī)要在檢測到該引腳上的負(fù)脈沖前沿后,才開始打印 。另一方面,單片機(jī)卻在等待打印機(jī)打印完一個(gè)數(shù)據(jù)后,提出中斷申請,才能在中斷服務(wù)程序中發(fā)送第一個(gè)數(shù)據(jù)。

  指令MOV P2,10H的意義是:將內(nèi)部數(shù)據(jù)存儲器10H單元送上并行接口P2,其物理意義是發(fā)送第一打印數(shù)據(jù)。

  指令CLR P3.4的意義為:對端口P3.4,即T0引腳清0,其物理意義向打印機(jī)發(fā)送選通信號的前沿,打印機(jī)檢測到選通信號的前沿后,置引腳BUSY的狀態(tài)為高電平,然后開始打印。

  指令SETB P3.4的意義為:對端口P3.4置1,其其物理意義向打印機(jī)發(fā)送選通信號的后沿。

  指令LJMP §的意義是:跳轉(zhuǎn)到本條指令,即主程序到此就進(jìn)入死循環(huán)。請大家注意只要用戶不關(guān)機(jī)的話,CPU就會不停的運(yùn)行下去,不會因?yàn)橛脩舫绦虻酱私Y(jié)束,如果沒有這條死循環(huán)指令的話,CPU就會從程序存儲器的下一個(gè)單元取出一個(gè)數(shù),把它當(dāng)下一個(gè)指令的操作碼處理,這樣,程序就會出錯(cuò),甚至死機(jī) 。所以,如果一個(gè)系統(tǒng)中本身沒有死循環(huán)的話,一定要在主程序的最后認(rèn)為加上一條死循環(huán)指令。

  SUBO是一個(gè)標(biāo)號,表示外中斷0的真正起始地址。

  指令MOV P2,@R0的意義是,把R0的內(nèi)容作為內(nèi)部數(shù)據(jù)存儲器的地址,再把該地址的數(shù)據(jù)去出來送到端口P2,起物理意義是發(fā)送第二個(gè)打印數(shù)據(jù)。

  指令CLR P3.4的意義是,對端口P3.4清0,物理意義是發(fā)送STB選通信號的前沿,打印機(jī)檢測到該信號,置引腳BUSY為高電平,然后開始打印。

  指令SETB P3.4的意義是 ,對端口P3.4置1,物理意義是發(fā)送STB選通信號的后沿。

  指令I(lǐng)NC R0的意義是:對R0的內(nèi)容加1,物理意義是改變打印緩沖區(qū)中下一個(gè)待打數(shù)據(jù)的指針,這條指令運(yùn)行后,R0中的內(nèi)容為12H,即下一個(gè)待打印數(shù)據(jù)在12H單元中。

  指令CJNE RO,#13H LAB1的意義是:判斷R0的內(nèi)容是否為13H,如是則繼續(xù)往下運(yùn)行,否則跳轉(zhuǎn)到標(biāo)號為LAB1的地方,物理意義為如果待打印數(shù)據(jù)的指針向13H,即表示所有的數(shù)據(jù)都打印完畢,則運(yùn)行關(guān)中斷指令,否則表示數(shù)據(jù)末打印完,則跳過關(guān)中斷指令。

  LAB1是一個(gè)標(biāo)號。

  指令RETI的意義是:中斷返回,物理意義是清除外中斷0的中斷請求標(biāo)志,并返回主程剛才被中斷的地方,這是本程序經(jīng)編譯后的機(jī)器碼指令,用仿真器把它固化到程序存儲器后,就可以運(yùn)行了。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉