中断系统
51单片机有5个中断系统
五个中断系统图
(优先级从高到低)
中断号 | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
名称 | INT0 | T0 | INT1 | T1 | Rx/Tx |
中断允许控制器 IE寄存器
字节地址A8H EA ? ? ES ET1 EX1 ET0 EX0
EX0 外部中断0允许位;
ET0 定时/计数器T0中断允许位;
EX1 外部中断0允许位;
ET1 定时/计数器T1中断允许位;
ES 串行口中断允许位;
EA CPU中断允许(总允许)位
中断请求控制控制寄存器 (TCON寄存器)
字节地址88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IT0 外部中断0触发方式控制位 0为电平触发方式 1位边沿触发方式(下降沿)
IE0 外部中断0中断请求标志位
IT1 外部中断1触发请求方式控制位
IE1 外部中断1触发中断请求标志位
TR0 T0运行控制位
TF0 定时/计数器T0溢出中断请求标志位。
TR1 T1运行控制位。
TF1 定时/计数器T1溢出中断请求标志位
CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
正在进行的低优先级中断服务,能被高优先级中断请求所中断。
为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。
中断条件
中断源有中断请求;
此中断源的中断允许位为1;
CPU开中断(即EA=1)。
代码示例:
主程序中需要有以下代码:
EA=1;//打开总中断开关
EX0=1;//开外部中断0
IT0=0/1;//设置外部中断的触发方式
中断服务函数:
void int0 () interrupt 0 using 1
{
do anything that you want
}
网友评论