基本概念
单词缩写:P:priority,T:timer,S:seria, X:external
中断:cpu停止当前的操作,去处理一些紧急事件,处理完后回到停止之前的地方继续执行指令。
中断优先级:中断事件可能不止一个,给中断标个数字,用数字大小来表示中断等级,等级越高越先处理。
中断嵌套:在处理一个中断时,又遇到另一个中断优先级更高的中断,cpu暂停当前中断,处理高优先级的中断,处理完后,回到当前中断,最后回到进入进入中断的地方,可以多层嵌套。
中断处理规制:优先处理高优先级的中断,高优先级的中断可以打破低优先级的中断,低不能打破高。而且当中断返回主程序后必须要执行一条指令后才能执行新的中断操作。
可位寻址:即是对每一位都有一个一位寄存器,可以直接对其标号赋值。
不可位寻址:只能对整个八位寄存器赋值,不能单独对一位赋值。
中断处理函数:
里面执行的便是执行中断时的操作,它是中断的入口函数,8个中断函数都已经写死了,不能自行更改
![](https://i-blog.csdnimg.cn/blog_migrate/ddbbc2a1a31d84b5fdaff397212ba2f3.png)
中断源:
引起中断的地方:8个:外部中断0,外部中断1,外部中断2,外部中断3,定时器中断0,定时器中断1,定时器中断2,串口中断。
![](https://i-blog.csdnimg.cn/blog_migrate/8b103937a5bc2b4ba7864abfc815d538.png)
实际在这款单片机中只支持2个外部中断,2个定时器中断,和一个串口中断
触发中断
![](https://i-blog.csdnimg.cn/blog_migrate/e816fe31cc30e58d772603db43ec5f79.png)
下降沿:高电平转变为电平 溢出:超过计数的范围
控制中断寄存器的介绍:
IE寄存器(I:interrupt,E:enable)
![](https://i-blog.csdnimg.cn/blog_migrate/18739260031e6546885095d0b243ec30.png)
EA:置1:开放所有中断,置0:屏蔽所有中断。总开关,对应每个中断源还有自己的开关,两个开关同时打开才能工作
其余每一位均对应一个中断开关,都是单词缩写,很好辨认,使用即置位,不用清0
![](https://i-blog.csdnimg.cn/blog_migrate/cad464ba6fca0ec2b67a205da7392448.png)
这个寄存器里面,很明显EX3和EX2是外部中断3和2的开关。其余与开关无关
中断优先级设置
共有4级中断:0 1 2 3四个等级
![](https://i-blog.csdnimg.cn/blog_migrate/06e6c78a763e9541abb45c58c478c049.png)
8个中断源,每个中断源都用一个高位和一个地位组合表示中断优先级,在辅助寄存器XICON中,只有px3和px2用于设置优先级,其余与优先级无关。
比如我们要将定时器1的优先级设置为2,直接将它对应的寄存PT1H置1,PT1置0即可。其余同理
中断处理流程
![](https://i-blog.csdnimg.cn/blog_migrate/05524036b12e22ac5aa0fea37f3d8e8d.png)