中断:改变任务等级。
IE:中断使能寄存器
介绍
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
符号 | EA | ET2 | ES | ET1 | EX1 | ET0 | EX0 | |
复位值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
位 | 符 号 | 描述 |
7 | EA | 总中断使能,相当于总开关 |
6 | ||
5 | ET2 |
定时器2中断使能 |
4 | ES | 串口中断使能 |
3 | ET1 | 定时器1中断使能 |
2 | EX1 | 外部中断1使能 |
1 | ET0 | 定时器0中断使能 |
0 | EX0 | 外部中断0使能 |
使用方法
void InterruptTime0 () interrupt 1 { //函数体 }
说明:
- InterrupTime0:函数名,可任意设置
- 函数后边必须加interrupt关键字
- interrupt关键字后边常数需要计算
- 进入定时器中断TFn硬件清零
- 一般需要对定时器重新赋值
中断函数编号
即上边interrupt关键字后边的常数。由中断向量地址根据一定规则计算得出,不需要记忆,需要用时查询下表即可。
中断函数编号 | 中断名称 | 中断标志位 | 中断使能位 | 中断向量地址 | 默认优先级 |
0 | 外部中断0 | IE0 | EX0 | 0x0003 | 1(最高) |
1 | T0中断 | TF0 | ET0 | 0x000B | 2 |
2 | 外部中断1 | IE1 | EX1 | 0x0013 | 3 |
3 | T1中断 | TF1 | ET1 | 0X001B | 4 |
4 | UART中断 | T1/R1 | ES | 0x0023 | 5 |
5 | T2中断 | TF2/EXF2 | ET2 | 0x002B | 6 |
IP:中断的优先级
分为固有优先级和抢占优先级。
固有优先级:根据中断函数编号,中断发生时,优先处理优先级高的,中断之间不打断,即在处理一个中断时,没有处理完不会进入优先级高的中断。
抢占优先级:在处理中断时,发生更高级中断,停止处理当前中断,处理高级中断,高级中断处理完再继续处理当前中断。
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
符号 | PT2 | PS | PT1 | PX1 | PT0 | PX0 | ||
复位值 | 0 | 0 | 0 | 0 | 0 | 0 |
位 | 符号 | 描述 |
7 | 保留 | |
6 | 保留 | |
5 | PT2 | 定时器2中断优先级控制位 |
4 | PS | 串口中断优先级控制位 |
3 | PT1 | 定时器1中断优先级控制位 |
2 | PX1 | 外部中断1中断优先级控制位 |
1 | PT0 | 定时器0中断优先级控制位 |
0 | PX0 | 外部中断0中断优先级控制位 |