AT89S52单片机的中断系统共有8个中断源,6个中断矢量,两级中断优先级,可实现两级中断服务程序嵌套,通过软件来屏蔽或允许相应的中断请求。每一个中断源可以编程为高优先级中断或低优先级中断,允许或禁止向CPU申请中断。中断系统的特殊功寄存器有中断允许寄存器IE、中断优先级寄存器IP等。 图1为AT89S52单片机的中断系统结构示意图。AT89S52有两个外部中断源INT0、INT1;串口通信有接收和发送两个中断源,经过一个或门,公用同一个中断矢量;定时器/计数器0、定时器/计数器1的溢出中断源对应两个中断矢量;定时/计数器2有计数溢出和捕获两种中断源,经或门共用一个中断矢量。 图1 中断系统结构示意图 (1) 来自P3.2引脚上的外部中断请求(外部中断0),低电平或下降沿(从高到低)有效,通过设置IT0的值可将外部中断0设置为低电平触发或下降沿触发,IT0=0时,为电平触发方式,当引脚上出现低电平时就向CPU申请中断;IT0=1时,为跳变触发方式,当引脚上出现负跳变时,置位TCON.1的IE0中断请求标志位,向CPU申请中断。CPU在每个机器周期的S5P2状态采样IE0标志位,当条件满足,则响应中断请求。 (2) 来自P3.3引脚上的外部中断请求(外部中断1),低电平或下降沿有效。其功能与操作同。 (3) T0 片内定时器/计数器0溢出(TF0)中断请求。定时/计数器0无论内部定时或对外部事件T0计数,当计数器(TH0、TL0)计数溢出,置位TCON.5的TF0中断请求标志位。CPU在每个机器周期的S5P2状态时采样TF0标志位,当条件满足时CPU响应中断请求,转向对应的中断矢量,执行该中断服务程序,并由硬件自动将TF0标志位清0。 (4) T1片内定时器/计数器1溢出(TF1)中断请求。其功能和操作类似定时/计数器0。其中断请求标志位为TCON.7的TF1。 (5) T2片内定时器/计数器2溢出中断请求。定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。定时器2有两种不同的工作方式。 定时/计数器方式。当定时/计数器方式的计数器(TH2、TL2)计数满后溢出,置位中断请求标志位(T2CON.7)TF2,向CPU请求中断处理。 “捕获”方式。当外部输入端口T2EX发生从1→0下降沿时,亦将置位T2CON.6的中断请求标志位EXF2,向CPU请求中断处理。 (6) 串行口中断。片内串行口完成一帧发送或接收,置位中断请求源TI或RI。当完成一串行帧的接收/发送时分别置位串行通信控制寄存器SCON中的RI/TI中断请求标志位,当条件满足时CPU响应中断请求。 每一个中断源都对应有一个中断请求标志位,它们设置在定时/计数器控制寄存器TCON、定时/计数器2控制寄存器T2CON和串行通信控制寄存器SCON的相应位来锁存。另外还有中断控制寄存器IE和中断优先级控制寄存器IP,IE用于确定各中断是允许还是禁止,IP用于定义各中断源的中断优先级,用户通过设置其状态来管理中断系统。 |