中断
中断是为使单片机具有实时处理内部或外部随机发生的事件而设置的,这样可以大幅提高单片机的“办事”能力。中断能使单片暂停“主线任务”而去优先处理“支线任务”,当“支线”完成后回到“主线”中断的地方继续执行“主线任务”。当然在处理“支线”时,也可能再次遇到中断请求,此时将会暂停“支线任务”的执行,直到处理完成新的中断为止。
中断执行的顺序和中断的优先级有关,如果两个中断同时发生,高优先级的先执行,高优先级中断可以中断低优先级中断。引起中断的地方称为中断源,实现中断功能部件称为中断系统,执行中断时再次中断叫中断嵌套。在 AT89S52 单片机内部有共有六个中断源。
中断函数,也称为中断服务程序,即上面提到的“任务”。
中断函数不返回值,也不包含参数,中断号可取 0 ~ 5 之间(包含 0 和 5)的数值。使用哪个中断号,表示的是该中断函数专门为哪个中断源的中断服务,内部 1,3,5,外部 0 和 2 。
中断函数的格式如下:
void func() interrupt 中断号
{
//TODO
}
符号 | 名称 | 优先级别 | 中断号 | |
INT0 | 外部中断 0 | 最高 | 0 | 由 P3.2 口引入,低电平或脉冲下降沿有效 |
INT1 | 外部中断 1 | 第三 | 2 | 由 P3.3 口引入,低电平或脉冲下降沿有效 |
T0 | 定时/计数器 0 中断 | 第二 | 1 | 相应计数器溢出归零时引起 |
T1 | 定时/计数器 1 中断 | 第四 | 3 | |
T2 | 定时/计数器 2 中断 | 最低 | 5 | |
TI/RI | 串行口中断 | 第五 | 4 | 串行口完成一帧字符发送或接收后引起 |
《中断》 由 CRAFTOUR.COM 采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际 许可协议进行许可。