网站大量收购独家精品文档,联系QQ:2885784924

[工程科技]第3章 单片机的中断系统.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工程科技]第3章 单片机的中断系统

3.2.8 中断应用举例 一、中断程序安排 1、 主程序 MCS-51单片机复位后,(PC)=0000H,主程序只分配0000H-0002H共3个单元。经常在0000H单元设置一条LJMP指令,转向主程序的入口处。而真正的主程序一般安排在中断区域之后。 2、 各中断服务程序 每个中断服务程序在固定的位置由系统分配相邻的8个单元用于存储程序。 程序组织的一般结构: ORG 0000H LJMP MAIN ORG 0003H LJMP INT_0 … ORG 0030H MAIN: ...... ;主程序区 ...... ;进行初始化 SJMP $ ;等待中断 INT_0: ...... ;外部中断0服务子程序 ...... RETI 二、中断初始化步骤 89C52单片机中,共有6个中断源,中断的初始化主要是对由5个特殊功能寄存器TCON、T2CON、SCON、IE和IP的设置。 中断初始化部分一般放在主程序中。 中断系统初始化步骤: 1、开相应中断源的中断 2、设定所有中断源的中断优先级 3、若为外部中断,则应规定低电平还是 负边沿的中断方式 三、中断服务程序流程设计 MCS-51结束到中断请求后,在条件满足的情况下,响应中断并转到对应的中断服务程序入口处执行 。中断程序主要由如下所示几部分组成: 1、保护现场 中断响应后,系统已自动将断点进行保护。 保护现场,主要针对中断程序中的寄存器和存储单元。其位置在中断服务程序前段。 2、关中断和开中断 89C52允许中断嵌套。为了在保护现场或恢复现场时,由于CPU响应其它中断请求,而使现场破坏,一般在保护和恢复现场时,CPU不响应外界的中断请求,即关中断。 在保护现场和恢复现场前,关中断;在保护现场和恢复现场后,再根据需要使CPU开中断。 3、中断请求撤除 CPU响应某中断请求后,在中断返回前,应该撤消该中断请求。中断请求撤除方法如下: 定时器0、1溢出中断请求的撤除:允许中断的情况下,响应中断后,硬件会自动清除中断请求标志TFx。 定时器/计数器2请求的撤除:T2中断请求标志位TF2和EXF2不能自动复位,须软件复位。 串行口中断的撤除:串行口中断请求标志位TI和RI,必须软件复位。 外部中断的撤除:外部中断为边沿触发方式时,响应中断后,硬件自动清除IE0或IE1。 外部中断为电平触发方式时。响应中断后,硬件会自动清除IE0或IE1。但由于加到或引脚的外部中断请求信号并未撤除,中断请求标志IE0或IE1会再次被置1,所以在CPU响应中断后应立即撤除或引脚上的低电平。 一般采用加一个D触发器和几条指令的方法来解决这个问题。 4、中断源的识别 串行口中断:接收请求标志RI和发送中断请求标志位TI共用中断入口地址(0023H),中断允许位ES和中断优先级选择位PS。 定时器/计数器2:中断请求标志TF2和EXF2,共用一个中断矢量地址(002BH),中断允许位ET2和中断优先级选择位PT2。 在中断服务程序中注意区分是哪种中断引起的中断请求,并清除其中断请求标志。 5、恢复现场 在结束中断服务程序,返回断点处前要恢复现场。 6、中断返回 当CPU执行到RETI指令时,将当前栈顶内容弹出到PC,恢复断点。 注意:中断服务程序的最后一条指令,必须为RETI返回指令,不能为RET指令。 例: 通过外部中断控制八盏灯循环点亮。 解:通过P1口扩展八盏灯,在引脚 接一个按钮开关到地,每按一下按钮就申请一次中断,点亮一盏灯,中断服务则是:依次点亮八盏灯中的一盏。采用边沿触发。硬件电路如下图所示。 程序如下: ORG 0000H LJMP MAIN ORG 0013H ; 中断服务程序入口地址 LJMP IN11 MAIN:SETB EA ; 开总中断允许“开关” SETB EX1 ; 开分中断允许“开关” CLR PX1 ; 低 优先级(也可不要此句) SETB IT1 ; 边沿触发 MOV A , #01H ; 给累加器A赋初值

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档