高、低优先级中断服务程序嵌套。Proteus仿真电路,在8051单片机外部中断、端分别通过两个按键接地,单片机的P0、P1、P2口分别接3个共阳极LED数码管。将设置为高优先级,设置为低优先级,负边沿触发。
主程序在开中断后进入循环状态,通过P0口循环显示“1”~“8”字符,此时无论按下“低优先级”或“高优先级”按键,主程序都会被中断,进入中断服务程序,通过P2或P1口显示“1”~“8”字符。
如果先按下“低优先级”按键,则P0口的显示将停在某一数字,进入低优先级中断服务程序,通过P2口显示“1”~“8”字符;在P2口显示结束之前按下“高优先级”按键,则P2口的显示将停在某一数字,进入高优先级中断服务程序,通过P1口显示“1”~“8”字符,高优先级中断服务程序结束后,先返回到低优先级中断服务程序继续执行,即P2口从刚才暂停的数字继续显示,P2口显示结束后返回到主程序执行,即P0口从刚才暂停的数字继续循环显示。
#include<reg51.h>
unsigned char code dis_tab[10] ={
0xC0,0xF9