-  中断即单片机因为某些原因E暂定现在的工作P0,转去做其他的工作P1,完了之后继续之前的事P0,其他工作P1就是中断程序,原因E就是中断事件,原因由外部发生,程序不能预测到的是硬中断,可以由程度触发的中断是软中断。 
-  51系列单片机一定有五个基本五个中断: 外部中断0,外部中断1,定时器中断0,定时器中断1,串口中断。 
-  实现一个中断监听程序有四个步骤: 
 1. CPU打开中断请求
 2. 对应的中断事件的中断允许位打开
 3. 明确中断事件的触发方式,是边沿触发还是电平触发
 4. 在中断服务地址处写上中断处理程序
-  中断允许控制寄存器 
 在REGX52.H文件中定义的sfr IE = 0xA8;就是中断允许控制寄存器,其中- sbit EA = 0xAF; // IE^7是CPU中断允许位
- sbit EX0 = 0xA8; // IE^0是外部中断0
- sbit ET0 = 0xA9; // IE^1是时钟中断0
 
-  中断请求标志寄存器 
 REGX52.H中sfr TCON = 0x88;是中断请求标志寄存器- sbit IT0 = 0x88;代表外部中断0请求方式设置位,0 为电平触发,1为边沿触发。
- sbit IE0 = 0x89;代表外部中断0请求标志
- sbit TF0 = 0x8D; // time flag代表时钟0溢出标志
 
-  中断号 - int0
- t0
- int1
- t1
- usart
 
-  做一个实验按下一个按键来控制小灯点亮与熄灭 
  
 原理图中GPIO p3.2 与 int0 复用,所以按键可以接在p3.2端口来触发中断。
  
 按键一边接地,一边接GPIO,当按键按下,线路连通,GPIO就接地,相当于低电平。
#include <REGX52.H>sbit key1 = P3^2;
sbit led1 = P0^0;int main()
{led1 = 1;key1 = 1; // 准双向口在输入前先置才能正确的读到外部状态EA = 1;EX0 = 1;IT0 = 1;while(1){}return 0;
}void on_key1_press() interrupt 0
{int debouncing_duration= 0xff;while(debouncing_duration--) {}if (key1 == 0){led1 = !led1;	}
}