中断系统及中断优先级实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中断系统及中断优先级实验
1.实验目的
1)扩展八个发光二极管
2)用2个按键模拟外部中断源
3)案件独立模拟中断
4)中断优先级控制
2.实验设备
1)Usb通讯线
2)CH340usb接口模块
3)74hc245
4)74hc138
5)排阻4.7k9脚
6)排阻4.7k5脚
7)300R色环电阻
8)1k色环电阻
9)三极管9012
10)led 二极管
11)陶瓷电容20pf
12)晶振11.059mhz
13)按键开关
14)万能板
15)stc89c51rc
16)焊锡
17)电烙铁
18)万能表
19)计算机
3.实验要求
1)画出电路原理图
2)用protues画出仿真图
3)根据硬件连接设计程序流程图
4)用keil软件编写程序
5)焊好板子输入程序调试完成中断优先级控制功能
4.实验原理
1、中断的概念
如果单片机没有中断功能,单片机对外部或是内部事件的处理只能采用程序查询方式,即CPU不断查询是否有事件发生。
显然,采用程序查询方式,CPU不能再做别的事,而是在大部分时间处于等待状态。
单片机都具有实时处理能力,能对外部或是内部发生的事件做出及时地处理,这是靠中断技术来实现的。
当CPU正在处理某件事情的时候,外部或内部发生的某一事件请求CPU迅速去处理,于是CPU暂时中止当前的工作,转去处理所发生的事件。
中断服务处理程序处理完该事件后,再回到原理被中止的地方,继续原来的工作,这样的过程称为中断,如图所示。
处理事件的过程称为CPU的中断响应过程。
对事件的整个处理过程,称为中断服务或中断处理
实现这种功能的部件称为中断系统,产生中断的请求源称为中断源。
中断源向CPU提出的处理请求,称为中断请求或中断申请。
CPU暂时中止执行的程序,转去执行中断服务程序,除了硬件会自动把断点地址PC值压入堆栈之外,用户还得注意保护有关的工作寄存器、累加器、标志位等信息,这称为现场保护。
最后执行中断返回指令,从堆栈中自动弹出断点地址到PC,继续执行被中断的程序,这称为中断返回。
2、MCS-51中断系统的结构
单片机的中断系统有5个中断请求源,具有两个中断优先级,可实现两级中断服务程序嵌套。
用户可以用软件来屏蔽所有的中断请求,也可以用软件使CPU接受中断请求;每一个中断源可以用软件独立地控制为开中断或是关中断状态;每一个中断源中的中断级别均可用软件来设置。
下图为中断系统结构图。
3、中断请求源
中断系统共有五个中断请求源它们是:
1)INT0 外部中断0请求,由INT0引脚输入,中断请求标志为IE0。
2)INT1 外部中断1请求,由INT1引脚输入,中断请求标志为IE1。
3)定时器/计数器T0溢出中断请求,中断请求标志为TF0。
4)定时器/计数器T1 溢出中断请求,中断请求标志为TF1。
5)串口中断
请求,中断请求标志为TI或RI。
这些中断请求源的中断请求标志位分别由特殊功能寄存器TCON和SCON的相应位锁存。
TCON为定时器/计数器的控制寄存器,字节地址为88H,可位寻址。
TCON也锁存外部中断请求标志。
如下图所示。
与中断系统有关的各标志位的功能如下:
IT0—选择外部中断请求INT0为跳沿触发方式或是电平触发方式的控制位。
IT0=0,为电平触发方式,引脚INT0上低电平有效
IT0=1,为跳沿触发方式,引脚INT0上的电平从高到低的负跳变有效。
IT0 位可由软件置1或清0。
IE0—外部中断0的中断请求标志位。
当IT0=0,为电平触发方式,每个机器周期的S5P2采样INT0引脚,若INT0脚为低电平,则置“1”,否则清“0”IE0
当IT0=1,即INT0为跳沿触发方式时,当第一个机器周期采样到为低电平时,则置“1”IE0。
IE0=1表示外部中断0正在向CPU申请中断。
当CPU响应中断,转向中断服务程序时,由硬件清“0”IE0。
IT1—选择外部中断请求INT1为跳沿触发方式或电平触发方式的控制位,其意义和IT0类似。
IE1—外部中断1的中断请求标志位,其意义和IE0类似。
TF0—MCS-51片内定时器/计数器T0溢出中断请求标志位。
当启动T0计数后,定时器/计数器T0从初始值开始加1计数,当最高位产生溢出时,由硬件置“1”TF0,向CPU申请中断,CPU响应TF0中断时,清“0”TF0,TF0也可由软件清零(查询方式)。
TF1 定时器/计数器T1的益处中断请求标志位,功能和TF0类似。
TR1、TR0这2个位与中断无关,仅与定时器/计数器T1和T0有关,它们的功能将在其它章节中介绍。
当复位后,TCON被清0,则CPU关中断,所有中断请求被禁止。
SCON为串口控制寄存器,字节地址为98H,可位寻址。
SCON的低二位锁存串口的接收中断和发送中断标志,其格式如下图。
SON中各标志位的功能如下:
T1—串口的发送中断请求标志位。
CPU将一个字节的数据写入发送缓冲器SBUF时,就启动一侦串行数据的发送,每发送完一侦串行数据后,硬件自动置“1”TI。
但CPU响应中断时,CPU并不清楚TI,必须在中断服务程序中用软件对TI清“0”。
RI—串行扣接受中断请求标志位。
在串行口允许接收时,每接收完一个串行侦,硬件自动置“1”RI。
CPU在响应中断时,并不清除RI,必须在中断服务程序中用软件对RI清“0”。
4、中断允许寄存器IE
CPU对中断源的开放或是屏蔽,是由片内的中断允许寄存器IE控制的。
IE的字节地址为
A8H,可进行位寻址。
中断允许寄存器IE对中断的开放和关闭实现两级控制。
所谓两级控制,就是有一个总的开关中断控制位EA,当EA=0时,所有的中断请求被屏蔽,CPU对任何中断请求都不接受;当EA=1时,CPU开放总中断,但五个中断源的中断请求是否允许,还要由IE中的低5位所对应的5个中断请求允许控制位的状态来决定如下图。
E中各位的功能如下:中断允许总控制位。
EA=0,CPU屏蔽所有的中断请求(也称CPU关中断)。
EA=1,CPU开放所有中断(也称CPU开中断)。
串口中断允许位 ES=0,禁止串口中断; ES=1,允许串口中断。
定时器/计数器T1的溢出中断允许位 ET1=0,禁止T1中断 ET1=1,允许T1中断。
外部中断1中断允许位 EX1=0,禁止外部中断1中断 EX1=1, 允许外部中断1中断定时器/计数器T0的溢出中断允许位 ET0=0,禁止T0中断 ET0=1,允许T0中断
复位以后,IE被清零,由用户程序置“1”或清“0”IE 相应得位,实现允许或禁止各中断的中断申请。
若使某一个中断源允许中断,必须同时使CPU开放中断。
如更新IE的内容,可由位操作指令来实现,也可用字节操作指令实现。
假设允许片内定时器/计数器中断,禁止其它中断的中断申请。
的步骤为: 1、 ES=0//禁止串口中断 2、 EX1=0//禁止外部中断1 3、 EX0=0//禁止外部中断0
4、 ET1=1//允许定时器/计数器T1中断
5、5、 ET0=1//允许定时器/计数器T0中断
6、6、 EA=1// CPU开放所有中断(也称CPU开中断)。
7、以上是采用位操作的方式,还可以采用字节的方式:IE=0X8AH
8、5、中断优先级寄存器IP
9、中断请求源有两个中断优先级,对于每一个中断请求源可由软件定为高优先级中断或是低优先级中断,可实现两级中断嵌套,两级中断嵌套的过程如下图
10、
11、一个正在执行的低优先级中断程序能被高优先级的中断源所中断,但不能被另一个低优先级的中断源所中断。
若CPU正在执行高优先级的中断,则不能被任何中断源所中断,
一直执行到结束,遇到中断返回指令,返回主程序后再执行一条指令后才能响应新的中断请求。
可归纳为两条基本原则:
12、1.低优先级可被高优先级中断,反之则不能。
13、2.任何一种中断,一旦得到响应,不会再被它同级中断源所中断。
如果某一中断源被设置为高优先级中断,在执行该中断服务程序时,则不能被任何其它的中断源所中断。
单片机片内有一个中断优先级寄存器IP,其字节地址为B8H,可位寻址,只要用程序改变其内容,即可进行各中断源中断优先级的设置如下图
各位的含义如下:串口中断优先级控制位 PS=1,串口中断定义为高优先级PS=0,串口中断定义为低优先级定时器T1优先级控制位 PT1=1,T1定义为高优先级 PT0=1,T1定义为低优先级外部中断优先级控制位
PX1=1,外部中断定义为高优先级 PX1=0,外部中断定义为低优先级定时器T0优先级控制位 PT0=1,T0定义为高优先级 PT0=0,T0定义为低优先级外部中断0优先级控制为
PX0=1,外部中断0定义为高优先级 PX0=0,外部中断0定义为低优先级
中断优先级控制寄存器IP的各位都由用户程序置“1”或清“0”,可用位操作或是字节操作指令更新IP的内容。
单片机复位后IP为0,各个中断源均为低优先级中断。
各中断源在同一优先级的条件下,外部中断0的优先级最高,串口的优先级最低如下图:
6、中断响应
一个中断源的中断请求被响应,需要满足以下条件: 1) 该中断源发出中断请求。
2) CPU开中断,即中断总允许位EA=1。
3) 申请中断的中断源的中断允许位=1,即该中断没有被屏蔽4) 无同级或更高级中断正在被服务。
中断响应就是对中断源提出的中断请求的接受,是在中断查询之后进行的。
当CPU查询到有效的中断请求时,在满足上述条件时,紧接着就进行中断响应。
首先是将PC的内容压入堆栈以保护断点,再将中断入口地址装入PC,使程序转向相应得中断入口地址。
各中断源服务程序的入口地址是固定的如下表所示:
4.实验内容
1)按照设计要求扩展8个led小灯,8个小灯采取共阳的链接方式如图所示
三极管在电线路中最常用的特性一个是控制应用,一个是驱动应用。
这里是通过三极管来驱动八个小灯。
当然如果直接把小灯的另一端直接接上单片机的io口的话坑定会电流过大肯定会烧坏单片机所以要在有小灯的支路中加上限流电阻如图所示
光光加上限流电阻还不够其实还有一些驱动IC,这些驱动IC 可以作为单片机的缓冲器,仅仅是电流驱动缓冲,不起到任何逻辑控制的效果,比如我们板子上用的74HC245 这个芯片,这个芯片在逻辑上起不到什么别的作用,就是当做电流缓冲器的,我们通过查看其数据手册,74HC245 稳定工作在70mA 电流是没有问题的,比单片机的8 个IO 口大多了,所以我们可以把他接在小灯和IO 口之间做缓冲如图所示
与单片机的链接如上图所示。
51单片机系列工作时需要外输入一个频率来启动说的通俗一点就是要有人来喊口号让他们
动起来链接方式如图所示
根据实验目的我们设计一个中断优先级控制实验,先让单片机待机状态下使得p0口输出交替闪现的的信号,此时外部中断0输入小灯向左循环,给如外部中断1输入小灯向右循环。
在之前编程时候就设置了外部中断1为优先级无论外部中断0怎么请求都优先处理外部中断1中的程序。
6.实验报告。