找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2302|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)中斷優(yōu)先級(jí)問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
我現(xiàn)在的想法是,    1、同為低優(yōu)先級(jí)或者高優(yōu)先級(jí)時(shí),遵循 外部中斷0->定時(shí)器/計(jì)數(shù)器T0->外部中斷1->定時(shí)器/計(jì)數(shù)器T1->串口中斷(優(yōu)先級(jí)由高到低),的自然優(yōu)先級(jí),那么在同級(jí)優(yōu)先級(jí)(同為高優(yōu)先級(jí)或者同為低優(yōu)先級(jí))時(shí)在自然優(yōu)先級(jí)里的低優(yōu)先級(jí)可以被高優(yōu)先級(jí)打斷;
    2、倘若設(shè)置外部中斷0為高優(yōu)先級(jí),外部中斷1為低優(yōu)先級(jí),那么高優(yōu)先級(jí)可以打斷低優(yōu)先級(jí),即外部中斷0可以打斷外部中斷1;
    3、在51單片機(jī)中設(shè)置優(yōu)先級(jí)的寄存器為IP,IP有5位有效位,PS,PT1,PX1,PT0,PX0;且IP可以進(jìn)行位尋址,現(xiàn)在只是用外部中斷0以及1,就有兩種對其優(yōu)先級(jí)定義的方式,(設(shè)置同為高優(yōu)先級(jí)時(shí),IP=1和PX1=1、PX0=1;意義相同);

基于此我進(jìn)行了驗(yàn)證:
    按鍵K3(連接P3.2引腳,外都中斷0),按鍵K4(連接P3.3引腳,外都中斷1),LED燈連接在P2端口,設(shè)置其觸發(fā)方式均為低電平觸發(fā);
    1、分別設(shè)置外都中斷0和1,為同級(jí)時(shí)查看中斷的相互打斷情況;2、分別設(shè)置外部中斷0和1,為一個(gè)高另一個(gè)低時(shí)中斷打斷情況;
1、實(shí)驗(yàn)現(xiàn)象為:
1)、IP=0時(shí),在運(yùn)行外部中斷0的中斷服務(wù)函數(shù)時(shí),外部中斷1無法打斷其運(yùn)行,同樣外部中斷1的中斷服務(wù)函數(shù)運(yùn)行時(shí),外部中斷0無法打斷;
2)、PX0=0、PX1=0時(shí),在運(yùn)行外部中斷0的中斷服務(wù)函數(shù)時(shí),外部中斷1無法打斷其運(yùn)行,同樣外部中斷1的中斷服務(wù)函數(shù)運(yùn)行時(shí),外部中斷0無法打斷;
3)、IP=1時(shí),在運(yùn)行外部中斷0的中斷服務(wù)函數(shù)時(shí),外部中斷1無法打斷其運(yùn)行,外部中斷1的中斷服務(wù)函數(shù)運(yùn)行時(shí),外部中斷0可以打斷外部中斷1;
4)、PX0=1、PX1=1時(shí),在運(yùn)行外部中斷0的中斷服務(wù)函數(shù)時(shí),外部中斷1無法打斷其運(yùn)行,同樣外部中斷1的中斷服務(wù)函數(shù)運(yùn)行時(shí),外部中斷0無法打斷;

疑惑之處:
    1、IP無論設(shè)置為1(高優(yōu)先級(jí))還是0(低優(yōu)先級(jí)),都應(yīng)遵循  【外部中斷0->定時(shí)器/計(jì)數(shù)器T0->外部中斷1->定時(shí)器/計(jì)數(shù)器T1->串口中斷(優(yōu)先級(jí)由高到低)】這一優(yōu)先級(jí),即在外部中斷0的中斷服務(wù)函數(shù)運(yùn)行時(shí),外部中斷1應(yīng)無法打斷,明顯實(shí)驗(yàn)現(xiàn)象  1)、2)、4),不符合
    2、在對外部中斷0和外部中斷1的中斷優(yōu)先級(jí)設(shè)定時(shí),可以使用IP,也可以PX0,PX1,但是實(shí)驗(yàn)現(xiàn)象中的  1)和2)不相統(tǒng)一,3)和4)不相統(tǒng)一


感謝,感謝,感謝



單片機(jī)開發(fā)板原理圖.pdf

141.71 KB, 下載次數(shù): 5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2023-11-10 15:39 | 只看該作者
無法判斷出你所講的【A打斷B】或【A不能打斷B】的真?zhèn)巍?br /> 比如:你說【A打斷B】了,是憑什么認(rèn)定的?
提供一下你認(rèn)定的【打斷、未打斷】判定方法、思路。比如,在中斷服務(wù)程序中亮不同色的燈……。
亦或給出中斷程序。
所以,無法與你討論。
回復(fù)

使用道具 舉報(bào)

板凳
ID:397054 發(fā)表于 2023-11-10 16:44 | 只看該作者
你【現(xiàn)在的想法】是不對的,你的【實(shí)驗(yàn)現(xiàn)象】是對的,這個(gè)實(shí)驗(yàn)現(xiàn)象就是51系列單片機(jī)的中斷規(guī)則,而不是你【現(xiàn)在的想法】,即:“1、,,,,那么在同級(jí)優(yōu)先級(jí),,,低優(yōu)先級(jí)可以被高優(yōu)先級(jí)打斷;”——是不對的,不能被打斷,這是明確的,沒有異議,你的試驗(yàn)也證明了這點(diǎn)。

我有一本書,這一內(nèi)容說的很明了:51系列單片機(jī)的6個(gè)中斷源(51子系列只有5個(gè),沒有定時(shí)計(jì)數(shù)器2)只分為兩個(gè)優(yōu)先級(jí),由用戶自由分配,低優(yōu)先級(jí)可以被高優(yōu)先級(jí)中斷,反之不能,同級(jí)中斷也不能互相中斷;你所說的“自然優(yōu)先級(jí)”那不是《優(yōu)先級(jí)》,而是指在同時(shí)申請中斷時(shí)被CPU響應(yīng)的次序,當(dāng)CPU正在執(zhí)行中斷程序時(shí)如果有同級(jí)別的中斷申請,CPU不會(huì)立即響應(yīng)要等處理完之后才會(huì),這就是IRET指令的必要性,這個(gè)指令不同于RET。前幾天看到一哥們貼出了他的一個(gè)程序,是個(gè)電子表程序(作者聲稱非常精確)里面就有這類錯(cuò)誤,他的中斷程序中有JMP類指令,目標(biāo)地址下面肯定會(huì)碰到RET指令,這就不對了,之后的同級(jí)中斷肯定永遠(yuǎn)也不會(huì)被執(zhí)行的。所以你的原來的【現(xiàn)在的想法】是不對的,應(yīng)該按照你的【實(shí)驗(yàn)現(xiàn)象】去做,那才是正確的規(guī)則。
回復(fù)

使用道具 舉報(bào)

地板
ID:624769 發(fā)表于 2023-11-11 16:55 | 只看該作者
糾正你一個(gè)理解錯(cuò)誤, 同為低優(yōu)先級(jí),或者同為高優(yōu)先級(jí), 外部中斷0 是不能打斷 外部中斷1的。
所謂的自然優(yōu)先級(jí),是STC的說法,正確的說法應(yīng)當(dāng)是,中斷檢索順序,即:當(dāng)發(fā)生了中斷,單片機(jī)先看外部中斷0是不是有中斷請求,有則執(zhí)行,沒有的話則看看定時(shí)器中斷0有沒有中斷請求,以此類推。只有多個(gè)中斷都排隊(duì)等待執(zhí)行時(shí),這個(gè)“自然優(yōu)先級(jí)”才有意義。并不是說你在執(zhí)行同等級(jí)中斷時(shí)能被“自然優(yōu)先級(jí)”高于你的中斷打斷。
回復(fù)

使用道具 舉報(bào)

5#
ID:647261 發(fā)表于 2023-11-14 16:44 | 只看該作者
所謂的“自然優(yōu)先級(jí)”其實(shí)只是查詢順序,不存在高低之分
優(yōu)先級(jí)只有兩級(jí)——高優(yōu)先級(jí)和低優(yōu)先級(jí)
同級(jí)優(yōu)先級(jí)的中斷,進(jìn)入了一個(gè)中斷,就不能被其他中斷打斷
低優(yōu)先級(jí)的中斷執(zhí)行中,可以被高優(yōu)先級(jí)的中斷打斷
回復(fù)

使用道具 舉報(bào)

6#
ID:1097455 發(fā)表于 2023-11-15 08:41 | 只看該作者
高中斷可以把低中斷打斷,結(jié)束高中斷在執(zhí)行較低中端
回復(fù)

使用道具 舉報(bào)

7#
ID:401564 發(fā)表于 2023-11-15 22:56 | 只看該作者
中斷優(yōu)先級(jí)和查詢順序是兩個(gè)不同的東西,在STC的單片機(jī)數(shù)據(jù)手冊中有描述的,認(rèn)真看一下就能理解了
回復(fù)

使用道具 舉報(bào)

8#
ID:879348 發(fā)表于 2023-11-16 10:50 | 只看該作者
不存在打斷的問題,最多就是競爭,同時(shí)標(biāo)記中斷,誰先誰后的問題
回復(fù)

使用道具 舉報(bào)

9#
ID:1091094 發(fā)表于 2023-11-18 11:35 | 只看該作者
鵜鶘 發(fā)表于 2023-11-10 16:44
你【現(xiàn)在的想法】是不對的,你的【實(shí)驗(yàn)現(xiàn)象】是對的,這個(gè)實(shí)驗(yàn)現(xiàn)象就是51系列單片機(jī)的中斷規(guī)則,而不是你【 ...

你說的這個(gè),我好像也碰到過這種情況:
前幾天看到一哥們貼出了他的一個(gè)程序,是個(gè)電子表程序(作者聲稱非常精確)里面就有這類錯(cuò)誤,他的中斷程序中有JMP類指令,目標(biāo)地址下面肯定會(huì)碰到RET指令,這就不對了,之后的同級(jí)中斷肯定永遠(yuǎn)也不會(huì)被執(zhí)行的。
、、、、、、、、、、、、、、、、
不過你說的JMP類指令  和RET指令是什么。

、、、、、、、、、、、、、、
我碰到的情況是定時(shí)器中斷,而且時(shí)間很快,然后外部中斷就不起作用了,就是無論等多久都不會(huì)執(zhí)行外部中斷的服務(wù)程序。   后來設(shè)置了中斷的優(yōu)先級(jí)后就可以了。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表