×

一起学习中断处理程序资料下载

消耗积分:3 | 格式:pdf | 大小:663.97KB | 2021-04-04

马占云

分享资料个

今天开始我们正式进入中级阶段的学习:中断系统。 什么是中断 首先来讲一下什么是中断:当程序执行到某个地方时,发生了特殊的事件或请求,CPU暂停执行当前程序,转而去处理上述事件或请求,处理完毕后在返回断点继续执行当前程序。 用我们生活中的事情来举个例子。假如你正在吃饭(当前程序),突然接到了快递员的电话让你现在下去拿快递(中断请求),你回答:“好的”(中断响应),然后暂停吃饭下去拿快递(中断处理),拿完快递上来继续吃饭(执行完中断返回执行当前程序)。 图1 在我们上课老师讲的时候,很多老师都会说51单片机共有5个中断源分别是:外部中断0、定时器溢出中断0、外部中断1、定时器溢出中断1、串口中断。 图2 仔细观察单片机芯片的IO口时就会发现,P3端口是有第二功能的。 我们来看一下与中断有关的P3端口各引脚第二功能的定义: P3^0:RXD串行口输入 P3^1:TXD串行口输出 P3^2:INT0外部中断0输入 P3^3:INT1外部中断1输入 P3^4:T0定时计数器0外部输入 P3^5:T1定时计数器1外部输入 其中P3^0、P3^1引脚用来与外部设备进行串口通信;P3^2、P3^3引脚用于接收外部电平变化来产生外部中断,P3^4、P3^5引脚用于接收外部脉冲来计数。 外部中断 接下来我们看一下中断系统的内部结构图,如图3所示。 图3 今天我们主要结合这个框图讲解一下外部中断0、外部中断1。 01、IE寄存器 我们先来看图中红色框中的IE寄存器,见图3。 图4 IE寄存器主管中断的允许与禁止,图3中IE寄存器画成了一个个的开关,也就是说我们要开启需要的中断时,就要把对应的开关打开。那么,假设我们要开启外部中断0,需要打开哪些开关呢?图中INT0通道中IE寄存机共有两个开关,分别是“EX0”(这个是数字0,可别看成字母O了)、“EA”,都是需要打开的。 好的,我们来看图4的介绍中,“EA”为总中断允许控制位,EA=0的时候会屏蔽掉所有的中断请求,所以要配置“EA=1”;EX0为外部中断0的中断允许位,同样的要配置“EX0=1”。这样一来,外部中断0的IE寄存器就配置好了。同理,外部中断1也是这样配置哦。 02、TCON寄存器 接下来我们看蓝色框里的TCON寄存器,见图3。 图5 还是先以外部中断0(INT0)为例,在图3的通道中,我们可以看到,TCON寄存器中与INT0有关的共有两位,分别是“IT0”、“IE0”。再看图5中的介绍可知,IT0用来控制INT0的触发方式,这里我们一般使用下降沿触发方式,所以配置成:“IT0=1”。 IE0则是INT0中断的标志位,当产生中断后,IE0将被自动置1,当CPU相应了中断以后,IE0又会被硬件置1,所以说,这一位我们不需要配置。外部中断1也是一样的。 03、IP寄存器 接下来是绿色框里的“IP”寄存器,见图3. 在这之前,先来讲一下中断优先级的概念。每个中断都有不同的优先级,当两个中断同时触发时,优先级高的先执行,执行完以后再执行优先级低的中断,所以说:优先级高的中断可以中断优先级低的中断,而高优先级中断不可被低优先级或者同级优先级中断打断。 图6 PX0:外部中断0优先级设定 PT0:定时计数器0中断优先级设定

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !