微控制器 - 8051 中断
中断是暂时中止主程序、将控制权传递给外部源并执行其任务的事件。然后将控制权传递给主程序停止的位置。
8051 有 5 个中断信号,即 INT0、TFO、INT1、TF1、RI/TI。可以通过设置 IE 寄存器的位来启用或禁用每个中断,并且可以通过清除同一寄存器的 EA 位来禁用整个中断系统。
IE(中断启用)寄存器
此寄存器负责启用和禁用中断。将 EA 寄存器设置为 1 以启用中断,设置为 0 以禁用中断。其位序列及其含义如下图所示。
EA | IE.7 | 禁用所有中断。当 EA = 0 时,不会确认任何中断,而 EA = 1 则单独启用中断。 |
- | IE.6 | 保留以供将来使用。 |
- | IE.5 | 保留以供将来使用。 |
ES | IE.4 | 启用/禁用串行端口中断。 |
ET1 | IE.3 | 启用/禁用定时器 1 溢出中断。 |
EX1 | IE.2 | 启用/禁用外部中断 1。 |
ET0 | IE.1 | 启用/禁用定时器0溢出中断。 |
EX0 | IE.0 | 启用/禁用外部中断0。 |
IP(中断优先级)寄存器
我们可以通过改变中断优先级(IP)寄存器中的相应位来更改中断的优先级,如下图所示。
低优先级中断只能被高优先级中断中断,而不能被另一个低优先级中断中断。
如果同时接收到两个优先级不同的中断,则服务于优先级较高的请求。
如果同时接收到相同优先级的请求,则内部中断将等待高优先级中断。
如果同时接收到相同优先级的请求,则内部中断将等待高优先级中断。
轮询序列确定要服务哪个请求。
- | IP.6 | 保留以备将来使用。 |
- | IP.5 | 保留以备将来使用。 |
PS | IP.4 | 定义串口中断优先级。 |
PT1 | IP.3 | 定义1优先级的定时器中断。 |
PX1 | IP.2 | 定义外部中断优先级。 |
PT0 | IP.1 | 定义定时器0中断优先级。 |
PX0 | IP.0 | 定义优先级为 0 的外部中断。 |
TCON 寄存器
TCON 寄存器指定微控制器的外部中断类型。