




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章中断系统 主要内容 7 1中断概述7 2中断源和中断控制寄存器7 3中断处理过程 1 什么叫中断cpu暂时中止其正在执行的程序 转去执行请求中断的那个外设或事件的服务程序 等处理完毕后再返回执行原来中止的程序 叫做中断 7 1中断概述 一 什么叫中断 2 中断与调用子程序 不同的是 子程序嵌套是在程序中事先按排好的 中断嵌套是随机发生的 子程序嵌套无次序限制 中断嵌套只允许高优先级 中断 低优先级 二 为什么要设置中断 提高cpu工作效率 具有实时处理功能 具有故障处理功能 实现分时操作 中断功能强弱是计算机性能优劣的重要标志 中断源 中断申请 开放中断 保护现场 中断服务 恢复现场 中断返回 三 中断涉及的几个环节 cpu在每个机器周期的s5p2期间 会自动查询各个中断申请标志位 若查到某标志位被置位 将启动中断机制 四 cpu识别中断申请的依据 一 中断源 中断源是指能发出中断请求 引起中断的装置或事件 80c51单片机的中断源共有5个 其中2个为外部中断源 3个为内部中断源 int0 外部中断0 中断请求信号由p3 2输入 int1 外部中断1 中断请求信号由p3 3输入 t0 定时 计数器0溢出中断 对外部脉冲计数由p3 4输入 t1 定时 计数器1溢出中断 对外部脉冲计数由p3 5输入 串行中断 包括串行接收中断ri和串行发送中断ti 中断请求 定时和外中断控制寄存器tcon 串行控制寄存器scon 中断允许控制寄存器ie 中断优先级控制寄存器ip 二 中断控制寄存器 80c51单片机中涉及中断控制的有3个方面4个特殊功能寄存器 int0 int1 t0 t1中断请求标志放在tcon中串行中断请求标志放在scon中 1 中断请求控制寄存器 1 tcon的结构 位名称 位地址和功能如下 tcon位功能 tf1 t1溢出中断请求标志t1计数溢出后 tf1 1 tf0 t0溢出中断请求标志t0计数溢出后 tf0 1tf0 tf1 定时器溢出中断申请标志位 0 定时器未溢出 1 定时器溢出申请中断 进中断后自动清零 ie1 外中断中断请求标志当p3 3引脚信号有效时 ie1 1 ie0 外中断中断请求标志当p3 2引脚信号有效时 ie0 1ie0 ie1 外部中断申请标志位 0 没有外部中断申请 1 有外部中断申请 it1 外中断触发方式控制位it1 1 边沿触发方式 it1 0 电平触发方式 it0 外中断触发方式控制位其意义和功能与it1相似 it0 it1 外部中断请求的触发方式选择位 0 在int0 int1端申请中断的信号低电平有效 1 在int0 int1端申请中断的信号负跳变有效 cpu 主程序 int0 int1 t0 t1 串口 ie0 tf0 ie1 tf1 中断源 中断标志位 2 串行控制寄存器scon ti 串行口发送中断请求标志 ri 串行口接收中断请求标志 80c51对中断源的开放或关闭由中断允许控制寄存器ie控制 2 中断允许控制寄存器ie ie的结构 位名称和位地址如下 ea cpu中断允许控制位 总开关 ea 1 cpu开中 ea 0 cpu关中 且屏蔽所有5个中断源 ex0 外中断int0中断允许控制位ex0 1 int0开中 ex0 0 int0关中 ex1 外中断int1中断允许控制位ex1 1 int1开中 ex1 0 int1关中 et0 定时 计数器t0中断允许控制位et0 1 t0开中 et0 0 t0关中 et1 定时 计数器t1中断允许控制位et1 1 t1开中 et1 0 t1关中 es 串行口中断 包括串发 串收 允许控制位es 1 串行口开中 es 0 串行口关中 说明 80c51对中断实行两级控制 总控制位是ea 每一中断源还有各自的控制位 首先要ea 1 其次还要自身的控制位置 1 3 中断优先级控制寄存器ip80c51有5个中断源 划分为2个中断优先级 高优先级和低优先级 1 ip的结构 位名称和位地址如下 px0 int0中断优先级控制位 px0 1 为高优先级 px0 0 为低优先级 px1 int1中断优先级控制位 控制方法同上 pt0 t0中断优先级控制位 控制方法同上 pt1 t1中断优先级控制位 控制方法同上 ps 串行口中断优先级控制位 控制方法同上 2 中断优先级的控制原则 1 低优先级中断请求不能打断高优先级的中断服务 反之可以 2 一个中断一但响应 与它同级的中断请求不能中断它 3 如果同级的多个中断请求同时出现 则按cpu的查询次序 cpu的查询次序 外部中断0 定时 计数器0 外部中断1 定时 计数器1 串行中断 3 中断嵌套 当cpu正在执行某个中断服务程序时 如果发生更高一级的中断源请求中断 cpu可以 中断 正在执行的低优先级中断 转而响应更高一级的中断 这就是中断嵌套 中断嵌套只能高优先级 中断 低优先级 低优先级不能 中断 高优先级 同一优先级也不能相互 中断 中断处理过程大致可分为四步 中断请求 中断响应 中断服务 中断返回一 中断响应的条件cpu查询 检测 到某中断标志为 1 在满足中断响应条件下 响应中断 1 中断响应条件 首先要有中断源发出中断申请 中断总开关打开ea 1 请求中断已经也打开 2 中断受阻的可能 cpu正在执行同级或更高级的中断 当前的机器周期不是正在执行的指令的最后一个机器周期 正在执行的指令是reti或者是访向ie ip的指令 则执行完该指令后 必须再另外执行一条指令后才能响应 3 中断响应操作cpu响应中断后 进行下列操作 保护断点地址 将相应中断的入口地址送入pc 撤除该中断源的中断请求标志 关闭同级中断80c51五个中断入口地址 int0 0003h t0 000bh int1 0013h t1 001bh 串行口 0023h 4 中断请求的撤除cpu响应中断后 必须清除中断请求 1 标志 否则中断响应返回后 将再次进入该中断 引起死循环出错 对定时 计数器t0 t1中断 外中断边沿触发方式 cpu响应中断时就用硬件自动清除了相应的中断请求标志 对外中断电平触发方式 需要采取软硬结合的方法消除后果 对串行口中断 用户应在串行中断服务程序中用软件清除ti或ri 例 硬件电路如图所示 当外部设备有中断请求时 中断请求信号经反相 加到锁存器cp端 作为cp脉冲 由于d端接地为0 q端输出低点平 触发int0生中断 当cpu响应中断后 应在该中断服务程序中按排两条指令 clrp1 0 setbp1 0 从而撤消引起重复中断的int0低电平信号 因此一般来说 对外中断int0 intl 应尽量采用边沿触发方式 以简化硬件电路和软件程序 5 中断响应等待时间若排除cpu正在响应同级或更高级的中断情况 中断响应等待时间为 3 8个机器周期 二 执行中断服务程序中断服务程序应包含以下几部分 保护现场 执行中断服务程序主体 完成相应操作 恢复现场三 中断返回在中断服务程序最后 必须安排一条中断返回指令reti 当cpu执行reti指令后 自动完成下列操作 恢复断点地址 一 中断主程序初始化1 设置堆栈指针sp2 定义中断优先级3 定义外中断触发方式4 开放中断5 安排好等待中断或中断发生前主程序应完成的操作内容 二 中断服务子程序 中断服务子程序内容要求 1 在中断服务入口地址设置一条跳转指令 转移到中断服务程序的实际入口处 由于80c51相邻两个中断入口地址间只有8b的空间 8b只能容纳一个有3 8条指令的极短程序 一般情况中断服务程序均大大超出8b长度 因此 必须跳转到其他合适的地址空间 跳转指令可用sjmp ajmp或ljmp指令 sjmp ajmp均受跳转范围影响 建议用ljmp指令 则可将真正的中断服务程序不受限制地安排在64kb任何地方 2 根据需要保护现场 保护现场不是中断服务程序的必需部分 通常是保护acc psw和dptr等特殊功能寄存器中的内容 若中断服务程序中不涉及acc psw dptr 则不需保护 也不需恢复 例如 累加器a是最常用的特殊功能寄存器 主程序中不可能不用到a 而发生中断又是随机的 可能正好发生在对a进行操作 a中的数据还有用时进入中断 而在中断服务程序中又涉及到a 改变了a中的内容 则在进入中断服务程序对a操作前应对原a中数据进行保护 以便中断返回后恢复a中原来数据需要指出的是 保护现场数据越少越好 数据保护越多 堆栈负担越重 堆栈深度设置应越深 3 中断源请求中断服务要求的操作 4 恢复现场 与保护现场相对应 注意先进后出 后进先出操作原则 5 中断返回 最后一条指令必须是reti 例7 1 利用定时器t0定时 在p1 0端输出一方波 方波周期为20ms 已知晶振为12mhz 主程序 org0000hljmp2000ht0的中断服务程序org000bhajmp70h org70hmovtl0 0f0hmovth0 0d8hcplp1 0retiorg2000hmovtmod 01hmovtl0 0f0hmovth0 0d8hmovie 82hsetbtr0here sjmphere 例6 2 出租车计价器计程方法是车轮每运转一圈产生一个负脉冲 从外中断int0 p3 2 引脚输入 行驶里程为轮胎周长 运转圈数 设轮胎周长为2m 试实时计算出租车行驶里程 单位米 数据存32h 31h 30h 解 编程如下 org0000h 复位地址ljmpstat 转初始化org0003h 中断入口地址ljmpint 转中断服务程序 org0100h 初始化程序首地址stat movsp 60h 置堆栈指针setbit0 置边沿触发方式movip 01h 置高优先级movie 81h 开中mov30h 0 里程计数器清0mov31h 0 mov32h 0 ljmpmain 转主程序 并等待中断org0200h 中断服务子程序首地址int pushacc 保护现场pushpsw mova 30h 读低8位计数器adda 2 低8位计数器加2mmov30h a 回存clra addca 31h 中8位计数器加进位mov31h a 回存clra addca 32h 高8位计数器加进位mov32h a 回存pushpsw 恢复现场pushacc reti 中断返回 main主程序可以处理循环显示等任务 例6 3 现有5个外中断源ex1 ex20 ex21 ex22和ex23 高电平时表示请求中断 要求执行相应中断服务程序 试编制程序 解 org0000h 复位地址ljmpmain 转主程序org0003h 中断入口地址ljmppint0 转中断服务程序org0013h 中断入口地址ljmppint1 转中断服务程序 org0100h 主程序首地址main movsp 60h 置堆栈指针orltcon 05h 置int0 int1为边沿触发方式setbpx0 置为高优先级movie 0ffh 全部开中 主程序内容org1000h 中断服务程序首地址pint0 pushacc 中断 保护现场lcallwork1 调用ex1服务子程序popacc 恢复现场reti 中断返回org2000h 中断服务程序首地址pint1 clrea cpu禁中pushacc 中断保护现场pushdph pushdpl setbea cpu开中 jbp1 0 lwk20 p1 0 1 ex20请求中断jbp1 1 lwk21 p1 1 1 ex21请求中断jbp1 2 lwk22 p1 2 1 ex22请求中断lcallwork23 p1 3 1 调用ex23服务子lret clrea cpu禁中popdpl 恢复现场popdph popacc setbea cpu开中reti 中断返回lwk20 lcallwork20 p1 0 1 调用ex20服务子程序sjmplret 转中断返回lwk21 lcallwork21 p1 1 1 调用ex21服务子程序sjmplret 转中断返回lwk22 lcallwork22 p1 2 1 调用ex22服务子程序sjmplret 转中断返回 例7 4 通过外部中断1 在中断服务中将b寄存器里的内容左环移一位 已知 b 01h 要求采用边沿触发 低优先级 此例的实际意义 在in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 申庭主管护师课件
- 甲状腺术后护理常规
- 倍力桥 教学课件
- 江苏南通2020-2022年中考满分作文54篇
- 剪羊毛课件教学设计
- 用水彩笔点叶子颜色课件
- 生鸡蛋课件教学课件
- 生鲜货源管理培训课件
- 生活工作安全知识培训课件
- 胆固醇性胸膜炎护理查房记录
- 2025年中国燕麦β-葡聚糖行业市场发展现状及投资规划建议报告
- 2025年三方顶账协议模板
- 三国演义测试题100道带答案
- 导航时频技术原理单选题100道及答案
- 安全质量部部门及岗位职责
- 基于工作坊培训模式的叙事教育培训方案在实习护生共情能力培养中的应用效果
- 翼状胬肉手术配合
- 无人机飞行安全知识讲座
- 河南省濮阳市2024-2025学年八年级上学期11月期中语文试题(含答案)
- 浪潮社会招聘在线测评题
- 电缆价格自动核算表
评论
0/150
提交评论