中断的概念,就不再累赘了。反正就是中断来的时候,停下手中的活,先忙中断事情,然后在回来继续干。就好像正在家里洗碗,突然门铃响了,有快递送来(中断发生);这时候停止刷碗,先去开门拿快递(中断响应/中断服务);收了快递,回来继续洗碗(中断返回)。
五个中断源也不再详述,可以参考前面帖子。
这里我们说说外部中断。
一,外部中断
外部中断有外部中断0 和 外部中断1 对应的中断号分别为 0 和 2 ;中断优先级相对比较高。
1,外部中断0
对应的引脚是P3.2;
用IT0(TCON.0)配置低电平有效还是下降沿有效;
外部中断0中断请求标志位IE0;1表示申请中断。
2,外部中断1对应的引脚是P3.3;
对应的引脚是P3.3;
用IT1(TCON.0)配置低电平有效还是下降沿有效;
外部中断0中断请求标志位IE1;1表示申请中断。
二,外部中断响应条件
1,CPU开启中断
在IE寄存器中,EA为总中断开关,必须开启。
2,允许外部中断
在IE寄存器中,EX0为外部中断0控制开关;EX1为外部中断1控制开关;需要选择开启
3,有中断请求发生
首先要设置IT0/IT1配置中断发生的条件;然后对应的P3.2/P3.3有对应的低电平/下降沿发生。
三,代码(以开启外部中断0为例)
//设置开关和触发方式
EA = 1;//开启总中断
EX0 = 1;//允许外部中断0发生
IT0 = 0;//设置出发方式:0,低电平有效;1,下降沿有效
//中断函数
void func() interrupt 0 (using 1){
write your demo here;
}