当单片机侦测到发生了你设定的情况或“事件”,单片机暂时停下其他的工作,来执行你设定、相对应的的“任务”。这就是中断。
比如你正在写一篇文章,这是你的手机响了,你去接收机。接完手机后,再回来继续写文章。手机响了就相当于有中断发生了,你去接收机就是响应了中断,执行相对应的“任务”。手机接完了继续刚才停下的工作(写文章),就是返回。
你可以设定的“事件”可以是:外部的(引脚)电平发生了变化,也可以是设定的时间到,还可以是收到了其他设备发送来的数据,等等等等。
由于一个基本(不包括增强型的)的51单片机的中断可以同时设定5(或6)个,其中外部中断2个,时间中断2个(8052是3个),串口1个。这些也称作中断源。你可以设定他们都有权申请中断。
每一个中断都有一个固定的中断向量(也就是中断入口),某一中断发生了,就会由硬件直接跳到中断入口去执行程序。同时在跳转之前,单片机会自动将之前正在执行的程序的地址记下来(也就是“入栈”),等单片机执行完中断所对应的程序以后(最后由“RETI”指令告诉单片机)再回到之前停止的地方继续工作。
51单片机分配给中断入口的存储单元很少,所以一般都是在那里设一个跳转指令,调到相应的中断子程序处。
当然,这么多的中断都用起来,肯定会有发生冲突的时候。所以需要要有一个优先权设置。比如:你的手机响了,同时你的有线电话也响了,你先接哪一个?如果规定了必须先接收机,那就是说手机的优先权高。 |