在单片机中,中断(Interrupt)是一种使处理器 (CPU)暂时中止正在执行的程序,去处理因某个事件而产生的请求的机制。中断可以提高处理效率,并让单片机有能力同时处理不同优先级的事件。
在单片机中,中断根据其来源不同,可以分为内部中断和外部中断。
内部中断是由CPU内部可编程序定时器(如定时器/计数器)或其他内部模块产生的中断请求。
外部中断则是由外部设备产生的中断请求,例如按键、串口、定时器等。单片机通过设置中断响应方式,使外设发生相应的事件时,CPU能够及时准确地执行相应的程序,从而实现了程序的多任务管理。
对于多个中断同时请求的情况下,单片机通常会按照一定的优先级处理这些中断。在处理中断时,单片机的中断优先级由高到低依次为:复位中断 > 非屏蔽中断 > 可屏蔽中断。
复位中断是最高优先级的中断,当CPU探测到复位信号时,所有中断都会被禁止并执行复位中断程序;非屏蔽中断的优先级次之,例如看门狗中断,它会在单片机出现致命错误时向CPU发出中断请求,以便及时处理异常情况;可屏蔽中断的中断优先级最低,例如定时器、串口等外部中断,它们可以被屏蔽,但一般也要保留一定的优先级。
在单片机中,每个中断都需要对应一个中断服务程序(ISR,Interrupt Service Routine),即在发生中断时要执行的功能代码。当中断请求被接受并被CPU处理时,中断服务程序会被自动调用。中断服务程序与中断优先级、中断源有关。
编写中断服务程序时,需要注意以下问题: