单片机的中断:单片机中断系统的硬件结构

来自:王硕峰
3年前
已收藏
收藏
阅读数
146
回复数
0

8051单片机中断系统硬件主要由中断请求标志位(在相关SPR中)、中断允许寄存器IE、中断优级寄存器IP及内部硬件查询电路组成,如图3-35所示。


中断标志寄存器:用于锁存中断请求标志位,其中TCON寄存器由定时器控制,SCON寄存器由串行口控制。 中断允许寄存器:用于控制CPU是否响应中断源的中断请求。 中断优先级寄存器IP:用于设置各中断源的优先级,每个中断源均可编程为高优先级中断或低优先级中断。
1.中断源。 8051单片机中共有5个中断源,其中两个为外部中断源(INT0、INT1),另3个为内部中断源(T0、T1、Tx/Rx)。 (1)外部中断源INT0、INT1。 8051单片机两个外部中断源INm、INT由P3.2、P3.3脚引入,用于接收由外部中断源发出的请求,有电平方式和脉冲触发方式两种,用户可通过定时器控制寄存器(TCON)中的m0和m1位的状态进行设置。 (2)定时器中断源T0、T1。 内部定时器中断源中断源T0、T1由片内定时器/计数器溢出产生,8051内部的两个16位定时/计数器对内部定时脉冲进行计数,或对mm1引脚上的外部脉冲进行计数。当计数器发生溢出时,表明定时时间已到或计数值已满,溢出信号就是向CPU发出的中断请求信(3)串行口中断源Tx/Rx。 串行口中断源TxRx由内部串行口产生,当串行口接收或发送串行数据时,串行口自动向CPU发出一个中断请求,CPU响应中断请求后转入串行中断服务子程序,以实现串行数据的传送。
2.中断优先级。 8051单片机设有两个中断优先级,可实现两级中断嵌套,每个中断源均可通过编程设置为优先级或低优先级中断。两级中断优先级中断响应的基本原则如下: 1)CPU在执行低优先级中断服务程序时,可被高优先级中断请求中断,CPU转向执行高优先级中断服务程序,然后再返回执行低优先级中断服务程序。 2)CPU在执行高优先级中断服务程序时,不会被低优先级中断请求中断。 3)CPU在执行中断服务程序时,无论是高优先级还是低优先级,不会被同优先级的中断请求中断。 4)当CPU接收到两个同一级的中断请求时,CPU通过内部硬件查询电路,按自然优先级确定优先响应的中断请求。自然优先级的顺序见表3-4。
3.中断控制寄存器。 单片机通过对特殊功能寄存器TCON、SCON、I的设置,实现中断控制。 (1)定时/计数器控制寄存器TCON。 定时器/计数器控制寄存器TCON的字节地址为88H,功能见表3-5。
I0(D0位):外部中断INT0的触发方式控制位。m0=1时,P3.2端出现脉冲下降沿时中断请求有效;I0=0时,P3.2端出现低电平时中断请求有效。 IE0(D1位):外部中断INT的请求标志位。当CPU检测到外部中断请求时,IEO位置“1”;当CPU转去执行中断处理子程序时,由硬件自动清零(只适用边沿触发的)。 IT(D2位):外部中断IT的触发方式控制位。mTl=1时,P3.3端出现脉冲下降沿时中断请求有效;mT1=0时,P3.3端出现低电平时中断请求有效。 IE1(D3位):外部中断INT1的请求标志位。当CPU检测到外部中断请求时,1位置“1”;当CPU转去执行中断处理子程序时,由硬件自动清零(只适用边沿触发的)。 TRo(D4位):定时计数器T0的启动/停止标志位。由用户编程确定,TRO=1时定时器开始计数,TRO=0时定时器计数停止。 TFO(D5位):定时计数器T0的中断溢出标志位。定时器作加1计数中最高位产生进位时,定时器计数溢出,由硬件置位TRO=1,CPU响应中断结束后,硬件置位TRO=0。
TR(D6位):定时计数器T1的启动/停止标志位。由用户编程确定,TR1=1时定时器开始计数,TR1=0时定时器计数停止。 TF1(D7位):定时计数器T1的中断溢出标志位。定时器作加1计数中最高位产生进位时,定时器计数溢出,由硬件置位TR1=1,CPU响应中断结束后,硬件置位TR1=0。
(2)串行口控制寄存器SCON。 串行口控制寄存器SCON的字节地址为98H,与中断相关的是其中的两位,见表3-6。
RI(D0位):串行口接收中断标志位。当串行口接收到一帧数据时,硬件自动将RI置,CPU响应中断后,RI标志位并不清零,需由软件清零。 T(D1位):串行口发送中断标志位。当串行口发送一帧数据时,硬件自动将T置1,CPU响应中断后,T标志位并不清零,需由软件清零。
(3)中断允许控制寄存器IE。 中断允许控制寄存器控制各中断源的开放和屏蔽,字节地址为A8H,其功能见表3-7。
EXO(DO位):外部中断ⅠN0的中断允许控制位。EXO=1时,INm0开中断;EXO=0时,INT0关中断。 ET0(D1位):定时计数器T0的中断允许控制位。E0=1时,T0开中断;ET0=0时T0关中断。 EX(D2位):外部中断INm的中断允许控制位。EX1=1时,INT开中断;EX1=0时NT关中断。 ETD3位):定时计数器T1的中断允许控制位。ET1=1时,T1开中断;ET1=0时,T1关中断。 ES(D4位):串行口的中断允许控制位。ES=1时,串行口开中断;ES=0时,串行口关中断。 EA(D7位):CPU的中断允许控制位。EA=1时,CPU全开中断(总开关开);EA=0时,CPU全关中断(总开关关)。
(4)中断优先级控制寄存器IP。 中断优先级控制寄存器IP用来定义各中断源的中断优先级,字节地址为B8H,PP状态由用户编程时设定。IP的功能见表3-8。
PXO(DO位):外部中断INm中断优先级控制位。PX0=1时,INm为高优先级;PX0=0时,INT为低优先级。 PI0(D1位):定时计数器m0的中断优先级控制位。P0=1时,T0为高中断优先级PT0=0时,T为低中断优先级。 PX1(D2位):外部中断INT中断优先级控制位。PX1=1时,INT1为高优先级;PX1=0时,INT1为低优先级。 P(D3位):定时计数器T1的中断优先级控制位。PI=1时,m为高中断优先级PT1=0时,T1为低中断优先级。 PS(D4位):串行口的中断优先级控制位。PS=1时,串行口为中断高优先级;PS=0时,串行口为中断低优先级。

上一篇下一篇
参与回答(0条评论)
用户头像
上传
用户头像
{{item.nickname}}{{item.pubtime}}回复
回复图片
用户头像
上传
用户头像
{{item1.nickname}}回复 {{item1.othername}} {{item1.pubtime}} 回复
回复图片
用户头像
上传
查看全部回复{{item.replylist_count}}条 查看全部
收起回复 收起全部
{{isLoadList==1?'加载中...':(isLoadList==2&&(list.length <=3||(list.length>3&&!is_hidden))?'没有更多内容了':'查看更多回答')}}
返回顶部

返回顶部