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