单片机中断(Interrupt)是指当一个外设需要单片机处理时,通过引脚向单片机发出请求,让单片机暂停目前正在处于的程序,转去执行外设的请求处理程序。处理完后再返回原来的程序执行流程。因此中断是一种异步工作方式。
中断的引入可以大大提高单片机的工作效率及灵活性,解决了单片机单一的处理问题。(当单片机需要响应高频率的事件时,中断请求可以随时插入,单片机的响应不会影响到当前正在执行的程序,处理完中断请求的程序立马返回原始程序,保证了程序的连续性)
单片机中断可以分为外部中断和内部中断两种类型。
外部中断请求是通过外部触发器,例如由红外线传感器、按键、定时器等外部设备法产生的信号而产生的。
内部中断请求是由单片机内部自己产生的请求信号。
中断技术使单片机可以同时进行多项任务,提高了单片机的性能和响应能力,且中断可随时插入,不会对程序的运行错乱有影响。但中断机制的介入使得程序的阅读和理解难度成倍增加,程序调试难度也可以相应加大。
单片机中断的使用需要分为以下几步:
中断向量表是一组中断服务子程序的地址列表。当特定中断信号到来时,单片机将跳转到相应的中断服务子程序执行代码。因此,开发人员需要在程序中首先设置中断向量表。
中断已经有了处理程序,但是当中断条件发生时,它仍然需要一个触发。比如外部中断可能通过定时器或IO引脚检测到触发条件。
中断处理程序是指中断信号被响应时要执行的代码。处理程序必须快速执行,以允许系统尽快返回到主线程上,同时必须确保在处理完中断请求后返回到正确的状态下。
使能相应中断后,单片机内部才会为中断预留处理资源。