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