中断是指在单片机运行过程中,如果有某个事件要求单片机暂停当前的任务进行处理,就会产生中断,此时单片机会暂停当前的任务,进入中断处理程序,等中断处理程序执行完毕后再返回之前的任务继续执行。
中断对单片机的作用主要有两个,一是提高单片机的实时性,及时响应外部事件;二是提高单片机的效率,释放CPU资源,避免轮询等浪费性能的操作。
单片机中断的来源和触发方式主要有以下几种:
(1)外部中断:由外部IO引脚的电平变化引起,如按键事件、传感器信号等。
(2)定时器中断:由定时器计时完成对中断标志位的置位引起,在慢速设备中比较普遍。
(3)串口中断:串口接收到数据时引起,方便处理异步通讯事件。
(4)软件中断:由程序中的软中断指令INT引起,C语言中常见的中断处理方法。
在单片机中断处理程序执行时,优先级较高的中断可以打断优先级低的中断,中断的优先级在硬件中已经规定好了,一般来说中断的优先级和中断的触发方式和来源有关。一般来说,定时器中断优先级最高,外部IO中断次之,中断的软件优先级最低。
单片机中需要对中断的开放和关闭进行控制,以确保程序的正确执行。中断的开放一般可以通过在程序的任何位置通过指令EI或者RIM进行开放,在中断程序的开头可以使用指令DI或者SIM将中断关闭。在处理完中断之后,需要使用指令RETI或者IRET跳出中断程序,并返回之前的程序继续执行。