任务十中断1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图10-1 中断响应和处理过程
单片机中断概念
中断是指由于某种随机事件的发生, 计算机暂停现行程序的运行,转去 执行另一程序,以处理发生的事件, 处理完毕后又自动返回原来的程序 继续运行。 将能引起中断的事件称为中断源。
CPU现行运行的程序称为主程序。
处理随机事件的程序称为中断服务 子程序。
高 级 中 断 请 求
IE1 TF1 TI RI
SCON
T1
TXD RXD
中断标 志位
中断源 允许
总允许
中断优 矢量 先级 地址
低 级 中 断 请 求
TCON寄存器——T0和T1控制寄存 器
7 TF1 6 5 TF0 4 3 IE1 2 IT1 1 IE0 0 IT0
TCON
T1溢出中断标志(TCON.7): T1启动计数后,计满溢出由硬件 置位TF1=1,向CPU请求中断,此标志 一直保持到CPU响应中断后,才由硬件 自动清0。也可用软件查询该标志,并 由软件清0。
关键字using对函数目标代码的影响如下:
在中断函数的入口处将当前工作寄存器区内容保护到 堆栈中,函数返回前将被保护的寄存器区的内容从堆栈中 恢复。 使用关键字using在函数中确定一个工作寄存器区时 必须小心,要保证工作寄存器区切换都只在指定的控制区 域中发生,否则将产生不正确的函数结果。还要注意,带
Single Chip Microcomputer
任 务 十 认 识 单 片 机 中 断
本章内容
跟我学1 跟我做1 跟我做2
任务总结
日常中断的例子
在我们的日常生活经常会遇到中断现象, 例如:你在看书——电话铃响了——你在 书上做个记号,走到电话旁——你拿起电 话和对方通话——门铃响了——你让打电 话的人稍等一下——你去开门,并在门旁 与来访者交谈,谈话结束,关好门——回 到电话机旁,拿起电话,继续通话——通 话完毕,挂上电话——从作记号的地方继 续看书。 这是一个很典型的中断现象。从看书到 接电话,是一次中断过程,而从打电话到 与门外来访者交谈,则是在中断过程中发 生的又一次中断,即所谓中断嵌套。为什 么会发生上述的中断现象呢?就是因为你 在同一时刻,面对三项任务:看书、打电 话和接待来访者。但一个人不能同时完成 三项任务,因此你只好采用中断办法,穿 插着去做。
SCON寄存器——串行口控制寄存器
SCON 98H
7
6
5
4
3
2
1 TI
0 RI
TI (SCON.1)——串行发送中断标志。 RI (SCON.0)——串行接收中断标志。 注意:该寄存器可以位寻址。
IE寄存器——中断允许寄存器
IE A8H 7 EA 6 5 4 ES 3 2 1 0 ET1 EX1 ET0 EX0
产生编译错误。因为中断函数的返回是由指令RETI完成 的。RETI指令会影响AT89S51中的硬件中断系统内的不 可寻址的中断优先级寄存器的状态。如果在没有实际的中 断请求的情况下,直接调用中断函数,也来自百度文库不会执行
入口地址(通常称矢量地址)。 特别注意:这些工作是硬件 自动完成的!
断点 地址
中断响应
中断服务子程序入口地址又称 为中断矢量或中断向量。 单片机中5个中断源的矢量地 址是固定的,不能改动。
应 响 断 中
中断服务 子程序的 入口地址
断点 地址
C51中断服务函数的定义
由于标准C没有处理单片机中断的定义,为直接编写 中断服务程序,C51编译器对函数的定义进行了扩展,增 加了一个扩展关键字interrupt,使用该关键字可以将一个 函数定义成中断服务函数。由于C51编译器在编译时对
当外部中断为电平触发方式时,CPU在每一个机器周期的S5P2期间对 和引脚进行采样。若测得为低电平,则认为有中断请求,将外部中断 请求标志位IE0或IE1置1;若测得为高电平,则认为没有中断请求或 中断请求已撤除,将IE0或IE1清0。
当外部中断为边沿触发方式。CPU在每一个机器周期的S5P2期间 对和引脚进行采样,若在连续两个机器周期采样到先高后低的电平 变化,则认为有中断请求,将IE0或IE1置1;否则认为没有中断请求, IE0或IE1继续为0。可见,为保证CPU在两个机器周期内检测到由高 到低的负跳变,输入高电平和低电平的持续时间起码要保持12个振 荡周期即一个机器周期的时间。
先级,可实现两级中断服务程序嵌套。 每一中断源可用软件独立控制为允许中断或关中断状态, 中断优先级均可用软件来设置。
中断技术的优点
• 分时操作 ——CPU可以同多个外设“同时”工作 • 实时处理 ——CPU及时处理随机事件 • 故障处理 ——电源掉电、存储出错、运算溢出
• • • • • •
中断源 中断标志 中断允许 中断优先级 MCS-51中断系统结构 中断寄存器
中断向量(8×n+3)
0003H 000BH 0013H 001BH 0023H 8×n+3
AT89S51在内部RAM中有4个工作寄存器区,每个寄存器区
包含8个工作寄存器(R0-R7)。C51扩展了一个关键字using, 专门用来选择AT89S51的4个不同的工作寄存器区。在定义一个 函数时,using是一个选项,如果不选用该项,则由编译器选择 一个寄存器区作为绝对寄存器区访问。
同一优先级别的中断源按照自然优先级顺序确定优先级别(硬件 形成,无法改变)。
MCS-51的中断系统结构图7 号
TCON IE IP
IT0=0 INT0 IT0=1
IE0 TF0
PX0 EX0 PT0 ET0 PX1 EX1 PT1 ET1 PS ES EA
T0
IT1=0 INT1 IT1=1
自 然 优 先 级 矢量 地址 自 然 优 先 级
关键字interrupt后面的 n是中断号,对于AT89S51,
取值为0~4,编译器从8×n+3处产生中断向量。AT89S51 中断源对应的中断号和中断向量见表。
表14-3 AT89S51中断号和中断向量
中断号n
0 1 2 3 4 其他值
中断源
外部中断0 定时器0 外部中断1 定时器1 串行口 保留
INT0 INT1
T0
T1
串行口
MCS-51的中断系统——中断标志
中断源 中断标志位
CPU
INT0
T0 INT1 T1
串口
IE0 TF0 IE1 TF1 TI RI
主 程 序
每一个中断源都有相应的中断标志位; 某一个中断源申请中断,相应中断标志位置1。
MCS-51的中断系统——中断允许
中断源 中断标志位 中断允许
在使用时,通常在这些地址单元中存放一条绝对转移指 令,使程序转移到用户安排的中断服务程序入口处。
然而中断响应是有条件的,并不是查询到的所有中断都被立即 响应,当发生下列情况之一时,中断响应被封锁:
①同级或高优先级的中断正在进行中。 ② 现在的机器周期还不是执行指令的最后一个机器周期, 即正在执行的指令还没完成前不响应任何中断。 ③ 正在执行的是返回指令RET、RETI或是访问IE、IP的 指令。按MCS-51中断系统的特性规定,在执行完这些指令之后, 还应再继续执行一条指令,然后才能响应中断。 若存在上述任一种情况,中断查询结果被取销。否则,在紧接 着的下一个机器周期,中断查询结果有效。
专用寄存器IP为中断优先级寄存器,用户可用软件设定
相应位为1,对应的中断源被设置为高优先级,相应位为0,对应 的中断源被设置为低优先级 系统复位时,均为低优先级 该寄存器可以位寻址
中断源 外部中断0 定时器0中断 外部中断1 定时器1中断 串行口中断
同级内的自然优先级 最高级
最低级
如果单片机没有中断系统,单片机的大量时间可能会浪
费在查询是否有服务请求发生的定时查询操作上。
采用中断技术完全消除了单片机在查询方式中的等待现 象,大大地提高了单片机的工作效率和实时性。 10.2 AT89S51中断系统结构
中断系统结构图如图10-2所示。
中断系统有5个中断请求源(简称中断源),两个中断优
CPU
INT0 T0 INT1 T1 串口
IE0 TF0 IE1 TF1 TI RI
EX0 ET0 EX1 ET1 ES EA
主 程 序
EA——总中断允许位,EA=1开放所有中断,EA=0,禁止所有中断;
某一个中断源还有相应的中断允许位,1允许相应中断源的中断,0禁 止相应中断源的中断。
MCS-51的中断系统——中断优先级
MCS-51中断系统
MCS-51的中断系统——中断源
向CPU发出中断请求的来源称之为中断源。
8051单片机有5个中断请求源:
单片机
外部输入中断源INT0(P3.2) 外部输入中断源INT1(P3.3) 片内定时器T0的溢出 片内定时器T1的溢出 片内串行口发送或接收中断源
或 或
编写AT89S51中断程序时,应遵循以下规则: (1)中断函数没有返回值,如果定义了一个返回值,将 会得到不正确的结果。因此建议在定义中断函数时,将其 定义为void类型,以明确说明没有返回值。 (2)中断函数不能进行参数传递,如果中断函数中包含
任何参数声明都将导致编译出错。
(3)在任何情况下都不能直接调用中断函数,否则会
AT89S51中断技术概述 中断技术主要用于实时监测与控制,要求单片机能及
时地响应中断请求源提出的服务请求,并作出快速响应、
及时处理。这是由片内的中断系统来实现的。 当中断请求源发出中断请求时,如果中断请求被允许,
单片机暂时中止当前正在执行的主程序,转到中断服务处
理程序处理中断服务请求。 中断服务处理程序处理完中断服务请求后,再回到原 来被中止的程序之处(断点),继续执行被中断的主程序。 图10-1为整个中断响应和处理过程。
自然优先级 中断源 中断标志位 中断允许 优先控制
PX0
CPU
高
INT0 T0 INT1 T1
IE0 TF0 IE1 TF1 TI SI
EX0
ET0 EX1 ET1 ES EA
PT0
PX1 PT1 PS
主 程 序
低
串口
单片机中有两个中断优先级,即高优先级中断和低优先级中断, 前者优先权高于后者(在程序中设置,相应位=1,为高优先级);
中断处理过程
中断处理过程分为三个阶段:中断响应、中断 处理和中断返回。
1. 中断响应
(1)外部中断请求采样 对于外部中断,首先必须对外中断请求 信号进行采样。而其他中断源的中断请 求都发生在单片机芯片的内部,可以直 接置位相应的中断请求标志位,因此不 存在中断请求采样问题。 应 响 断 中 中 断 返 回
例:允许定时器T0中断:例:允许定时器T0中断:
SETB EA
SETB ET0 或 MOV IE,#82H 或
EA=1;
ET0 =1; IE=0X82
注意:该寄存器可以位寻址。
IP寄存器——中断优先级寄存器
IP B8H 7 6 5 4 PS 3 2 1 0 PT1 PX1 PT0 PX0
51单片机有两个中断优先级——高级和低级
using属性的函数原则上不能返回bit类型的值,且关键字
using和关键字interrupt都不允许用于外部函数,另外也 都不允许有一个带运算符的表达式。
例如,外中断1( INT1)的中断服务函数书写如下:
void int1( ) interrupt 2 using 0/*中断号n=2,选择0区工作寄存器区*/
TCON寄存器——T0和T1控制寄存 器
TCON 88H
7 TF1
6
5 TF0
4
3 IE1
2 IT1
1 IE0
0 IT0
外部中断INT1中断标志 位(TCON.3) : IE1=1,外部中断1 向CPU申请中断
注意:该寄存器可以位寻址。
外部中断INT1触发方 式控制位(TCON.2): IT1=0,电平触发方 式 IT1=1, 下降沿触发 方式
外部中断0入口地址
中断响应(以外部中断0为例) 0003
中断响应:在满足CPU的中断 响应条件之后,CPU对中断源 中断请求予以处理。 中断响应过程: 保护断点地址; 把程序转向中断服务程序的
ZD0 AJMP
ORG 0003H AJMP ZD0
中断服务 子程序的 入口地址
ZD0
应 响 断 中
声明为中断服务程序的函数自动添加了相应的现场保护、
阻断其他中断、返回时恢复现场等处理的程序段,因而在 编写中断服务函数时可不必考虑这些问题,减轻了用汇编 语言编写中断服务程序的繁琐程度,而把精力放在如何处 理引发中断请求的事件上。
中断服务函数的一般形式为:
函数类型 函数名(形式参数表)[interrupt n] [using n]