(七)c52学习之旅-中断

中断,顾名思义,在系统执行任务时遇到特定事件会打断当前任务并保留当前任务而去执行其他任务。
中断在单片机开发中是不可或缺的一项,做好准备,搞定它。
(一)、中断结构
中断结构
下面是对这几个中断源的介绍:
1、INT0(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)
置1,向CPU申请中断。

2、INT1(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。

3、片内定时/计数器T0溢出中断请求标志,TF0(TCON.5)。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。

4、片内定时/计数器T1溢出中断请求标志,TF1(TCON.7)。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。

5、RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。

(二)、4个特殊寄存器
分别是SCON,IE,IP,TCON。这4个中断分别控制了不同的开关。
1、SCON的中断标志
这里写图片描述
(1)RI(SCON.0),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。注意,RI必须由软件清除
(2)TI(SCON.1),串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置
位TI。CPU响应中断时,不能自动清除TI,TI必须由软件清除

2、IE中断允许控制
这里写图片描述
EX0(IE.0):外部中断0允许位;
ET0(IE.1):定时/计数器T0中断允许位;
EX1(IE.2):外部中断0允许位;
ET1(IE.3):定时/计数器T1中断允许位;
ES (IE.4):串行口中断允许位;
EA (IE.7): CPU中断允许(总允许)位。

3、IP中断优先级控制
这里写图片描述
80C52单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的 。
PX0(IP.0):外部中断0优先级设定位;
PT0(IP.1):定时/计数器T0优先级设定位;
PX1(IP.2):外部中断0优先级设定位;
PT1(IP.3):定时/计数器T1优先级设定位;
PS (IP.4):串行口优先级设定位;
PT2(IP.5):定时/计数器T2优先级设定位。

4、控制寄存器TCON,后面的定时器再分析。

同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:
优先级

(三)、单片机的中断优先级有三条原则:
1、CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
2、正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
3、正在进行的低优先级中断服务,能被高优先级中断请求所中断。

为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。

(四)、中断响应条件
1、中断源有中断请求;
2、此中断源的中断允许位为1;
3、CPU开中断(即EA=1)。
以上三条同时满足时,CPU才有可能响应中断

(五)、一次中断过程的完整步骤
1、中断请求:中断事件一旦发生,中断源就提交中断请求(将中断
标志位置1),欲请求CPU暂时放下目前的工作转向为该中断作专项
服务。
2、中断使能:虽然中断源提交了中断请求,但是,能否得到CPU的
响应,还要取决于该中断请求能否通过若干关卡送达CPU(中断使能
位等于1,关卡放行),这些关卡有以下两类:
此中断源的中断允许位;
全局中断允许位。
3、中断响应:如果一路放行,则CPU响应该中断请求,记录断点,
跳转到中断服务程序。对于INT和TMR中断,中断响应时中断标志位
会被硬件自动清零。
4、中断处理:对中断源进行有针对性的服务。
5、中断返回:返回到主程序断点处,继续执行主程序。
1、3、5由硬件自动完成。2、4是用户编程完成

(六)、中断请求标记的置位和清除
1、外部中断
下降沿触发方式条件下,在产生中断请求时由硬件置位(置1)中
断请求标记,当CPU响应中断时由硬件清除(清0 )
电平触发方式条件下,中断请求标记由外部中断源控制。具体
是:当CPU检测到INT引脚上出现低电平时,中断标志IE由硬件置
位,INT引脚上出现高电平时,中断标志IE由硬件清除

2、定时器中断
计数溢出时由硬件置位中断请求标记,当CPU响应中断由硬件清

3、串口中断
串行口接收完一帧数据后请求中断,由硬件置位中断请求标记
RI,RI必须由软件清除
串行口发送完一帧数据后请求中断,由硬件置位中断请求标记
TI,TI必须由软件清除

(七)、中断使能位
每个中断源的3个位:
1、PXn:(Priority)外部中断优先级定义位。
• =0:低优先级; =1:高优先级;
• 也可不设置,上电时,默认=0:低优先级。
2、EXn:外部中断使能位。
• =0:使不能; =1:使能;
• 上电时,默认=0:使不能
3、IEn:外部中断请求标记位。
• =0:无中断请求; =1:有中断请求;
• 上电时,默认=0:无中断请求。
所有中断源相关的1个位:
EA (Enable All) :全局中断使能位。
• =0:使不能; =1:使能;
• 上电时,默认=0:使不能
INT中断多了1个需要设置的位:
ITn(INT Trigger)外部中断触发方式控制位。
• =0:电平触发方式; =1:下降沿触发方式
• 也可不设置,上电时,默认=0:电平触发方式

(八)、中断号
1、外部中断0(INT0),中断号0, 中断入口地址0003H
2、定时/计数器0(T1),中断号1 ,中断入口地址000BH
3、外部中断1(INT1),中断号2 入口地址0013H
4、定时/计数器1(T1)中断号3 入口地址001BH
5、串行口中(RI/TI)中断号4 入口地址0023H
上面是C51的5个中断源,下面是C52多出来的一个中断源
6、定时/计数器2(T2)中断号5,入口地址002BH

定义中断函数的一般形式:
viod 函数名() interrupt n //n是中断号

使用中断函数时应遵循以下规则:
1、 中断函数不能进行参数转递;
2、在任何情况下,都不能直接调用中断函数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值