外部中断:当CPU正在按主程序运行时,外部发生了紧急事件,向CPU发送中断请求来优先处理紧急事件,当CPU处理完紧急事件后再继续从主程序断开的地方运行程序。发出中断请求的源称为中断源,不同的中断源具有不同的优先级别,当CPU同时接收到多个中断源时,优先处理优先级高的中断请求。中断也可以嵌套,例如CPU正在处理某个低优先级的中断时发生了更高优先级的中断请求,那么CPU会先去处理高优先级的中断请求,处理完毕后再继续处理低优先级中断请求,最后再返回主程序中断点继续执行下面的程序。
中断发生原理图
中断优先级
外部中断配置
IT0和IT1:选择中断触发的方式,当ITX=1时为下降沿触发,即发生电平下降就触发,若发生抖动则会多次触发,当ITX=0时为低电平触发,即当外部输入低电平时触发,若外部输入持续为低电平则会多次触发
EX1和EX0:外部中断允许位,置1才允许触发外部中断
EA:总中断允许位,置1时才允许发生中断
PX0和PX1:选择优先级,例如:当PX1=1时,设定外部中断1为高优先级中断。IP的设置是相对于整个中断系统而言的,若是只有一种中断发生则可以不配置IP,若是发生多种中断,涉及中断嵌套时,用于设定哪一中断先执行。
TCON配置(可位寻址)
高四位用于配置定时器/计数器,低四位用于配置外部中断
IE配置(可位寻址)
中断号
例如外部中断0的配置:
#include <regx52.h>
void exti0_Init()
{
IT0=1; //触发方式为下降沿
EA=1; //打开总中断
EX0=1; //打开INT0的中断允许
}
//void exti0() interrupt 0 //外部中断0的中断函数
//{
// //执行相应操作
//}