當(dāng)單片機(jī)偵測(cè)到發(fā)生了你設(shè)定的情況或“事件”,單片機(jī)暫時(shí)停下其他的工作,來執(zhí)行你設(shè)定、相對(duì)應(yīng)的的“任務(wù)”。這就是中斷。
比如你正在寫一篇文章,這是你的手機(jī)響了,你去接收機(jī)。接完手機(jī)后,再回來繼續(xù)寫文章。手機(jī)響了就相當(dāng)于有中斷發(fā)生了,你去接收機(jī)就是響應(yīng)了中斷,執(zhí)行相對(duì)應(yīng)的“任務(wù)”。手機(jī)接完了繼續(xù)剛才停下的工作(寫文章),就是返回。
你可以設(shè)定的“事件”可以是:外部的(引腳)電平發(fā)生了變化,也可以是設(shè)定的時(shí)間到,還可以是收到了其他設(shè)備發(fā)送來的數(shù)據(jù),等等等等。
由于一個(gè)基本(不包括增強(qiáng)型的)的51單片機(jī)的中斷可以同時(shí)設(shè)定5(或6)個(gè),其中外部中斷2個(gè),時(shí)間中斷2個(gè)(8052是3個(gè)),串口1個(gè)。這些也稱作中斷源。你可以設(shè)定他們都有權(quán)申請(qǐng)中斷。
每一個(gè)中斷都有一個(gè)固定的中斷向量(也就是中斷入口),某一中斷發(fā)生了,就會(huì)由硬件直接跳到中斷入口去執(zhí)行程序。同時(shí)在跳轉(zhuǎn)之前,單片機(jī)會(huì)自動(dòng)將之前正在執(zhí)行的程序的地址記下來(也就是“入!保,等單片機(jī)執(zhí)行完中斷所對(duì)應(yīng)的程序以后(最后由“RETI”指令告訴單片機(jī))再回到之前停止的地方繼續(xù)工作。
51單片機(jī)分配給中斷入口的存儲(chǔ)單元很少,所以一般都是在那里設(shè)一個(gè)跳轉(zhuǎn)指令,調(diào)到相應(yīng)的中斷子程序處。
當(dāng)然,這么多的中斷都用起來,肯定會(huì)有發(fā)生沖突的時(shí)候。所以需要要有一個(gè)優(yōu)先權(quán)設(shè)置。比如:你的手機(jī)響了,同時(shí)你的有線電話也響了,你先接哪一個(gè)?如果規(guī)定了必須先接收機(jī),那就是說手機(jī)的優(yōu)先權(quán)高。 |