![]() |
發(fā)布時(shí)間: 2023-11-9 19:26
正文摘要:我現(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)先 ... |
鵜鶘 發(fā)表于 2023-11-10 16:44 你說(shuō)的這個(gè),我好像也碰到過(guò)這種情況: 前幾天看到一哥們貼出了他的一個(gè)程序,是個(gè)電子表程序(作者聲稱非常精確)里面就有這類錯(cuò)誤,他的中斷程序中有JMP類指令,目標(biāo)地址下面肯定會(huì)碰到RET指令,這就不對(duì)了,之后的同級(jí)中斷肯定永遠(yuǎn)也不會(huì)被執(zhí)行的。 、、、、、、、、、、、、、、、、 不過(guò)你說(shuō)的JMP類指令 和RET指令是什么? 、、、、、、、、、、、、、、 我碰到的情況是定時(shí)器中斷,而且時(shí)間很快,然后外部中斷就不起作用了,就是無(wú)論等多久都不會(huì)執(zhí)行外部中斷的服務(wù)程序。 后來(lái)設(shè)置了中斷的優(yōu)先級(jí)后就可以了。 |
不存在打斷的問(wèn)題,最多就是競(jìng)爭(zhēng),同時(shí)標(biāo)記中斷,誰(shuí)先誰(shuí)后的問(wèn)題 |
中斷優(yōu)先級(jí)和查詢順序是兩個(gè)不同的東西,在STC的單片機(jī)數(shù)據(jù)手冊(cè)中有描述的,認(rèn)真看一下就能理解了 |
高中斷可以把低中斷打斷,結(jié)束高中斷在執(zhí)行較低中端 |
所謂的“自然優(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í)的中斷打斷 |
糾正你一個(gè)理解錯(cuò)誤, 同為低優(yōu)先級(jí),或者同為高優(yōu)先級(jí), 外部中斷0 是不能打斷 外部中斷1的。 所謂的自然優(yōu)先級(jí),是STC的說(shuō)法,正確的說(shuō)法應(yīng)當(dāng)是,中斷檢索順序,即:當(dāng)發(fā)生了中斷,單片機(jī)先看外部中斷0是不是有中斷請(qǐng)求,有則執(zhí)行,沒(méi)有的話則看看定時(shí)器中斷0有沒(méi)有中斷請(qǐng)求,以此類推。只有多個(gè)中斷都排隊(duì)等待執(zhí)行時(shí),這個(gè)“自然優(yōu)先級(jí)”才有意義。并不是說(shuō)你在執(zhí)行同等級(jí)中斷時(shí)能被“自然優(yōu)先級(jí)”高于你的中斷打斷。 |
你【現(xiàn)在的想法】是不對(duì)的,你的【實(shí)驗(yàn)現(xiàn)象】是對(duì)的,這個(gè)實(shí)驗(yàn)現(xiàn)象就是51系列單片機(jī)的中斷規(guī)則,而不是你【現(xiàn)在的想法】,即:“1、,,,,那么在同級(jí)優(yōu)先級(jí),,,低優(yōu)先級(jí)可以被高優(yōu)先級(jí)打斷;”——是不對(duì)的,不能被打斷,這是明確的,沒(méi)有異議,你的試驗(yàn)也證明了這點(diǎn)。 我有一本書,這一內(nèi)容說(shuō)的很明了:51系列單片機(jī)的6個(gè)中斷源(51子系列只有5個(gè),沒(méi)有定時(shí)計(jì)數(shù)器2)只分為兩個(gè)優(yōu)先級(jí),由用戶自由分配,低優(yōu)先級(jí)可以被高優(yōu)先級(jí)中斷,反之不能,同級(jí)中斷也不能互相中斷;你所說(shuō)的“自然優(yōu)先級(jí)”那不是《優(yōu)先級(jí)》,而是指在同時(shí)申請(qǐng)中斷時(shí)被CPU響應(yīng)的次序,當(dāng)CPU正在執(zhí)行中斷程序時(shí)如果有同級(jí)別的中斷申請(qǐng),CPU不會(huì)立即響應(yīng)要等處理完之后才會(huì),這就是IRET指令的必要性,這個(gè)指令不同于RET。前幾天看到一哥們貼出了他的一個(gè)程序,是個(gè)電子表程序(作者聲稱非常精確)里面就有這類錯(cuò)誤,他的中斷程序中有JMP類指令,目標(biāo)地址下面肯定會(huì)碰到RET指令,這就不對(duì)了,之后的同級(jí)中斷肯定永遠(yuǎn)也不會(huì)被執(zhí)行的。所以你的原來(lái)的【現(xiàn)在的想法】是不對(duì)的,應(yīng)該按照你的【實(shí)驗(yàn)現(xiàn)象】去做,那才是正確的規(guī)則。 |
無(wú)法判斷出你所講的【A打斷B】或【A不能打斷B】的真?zhèn)巍?br />
比如:你說(shuō)【A打斷B】了,是憑什么認(rèn)定的? 提供一下你認(rèn)定的【打斷、未打斷】判定方法、思路。比如,在中斷服務(wù)程序中亮不同色的燈……。 亦或給出中斷程序。 所以,無(wú)法與你討論。 |
Powered by 單片機(jī)教程網(wǎng)