功能寄存器TCON中的标志.ppt

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

第5章 MCS - 51单片机的中断 ;5.1 中 断 的 概 述 ; 2. 中断源 中断源是指在计算机系统中向CPU发出中断请求的来源, 中断可以人为设定, 也可以是为响应突发性随机事件而设置。通常有I/O设备、实时控制系统中的随机参数和信息故障源等。 ; 3. 中断优先级 中断优先级越高, 则响应优先权就越高。当CPU正在执行中断服务程序时, 又有中断优先级更高的中断申请产生, 这时CPU就会暂停当前的中断服务转而处理高级中断申请, 待高级中断处理程序完毕再返回原中断程序断点处继续执行, 这一过程称为中断嵌套。 ; 4. 中断响应的过程 (1) 在每条指令结束后, 系统都自动检测中断请求信号, 如果有中断请求,且CPU处于开中断状态下, 则响应中断。  (2) 保护现场, 在保护现场前, 一般要关中断, 以防止现场被破坏。保护现场一般是用堆栈指令将原程序中用到的寄存器推入堆栈。 (3) 中断服务, 即为相应的中断源服务。  (4) 恢复现场, 用堆栈指令将保护在堆栈中的数据弹出来, 在恢复现场前要关中断, 以防止现场被破坏。在恢复现场后应及时开中断。  (5) 返回, 此时 CPU将推入到堆栈的断点地址弹回到程序计数器, 从而使CPU继续执行刚才被中断的程序。 ;5.2 MCS - 51中断系统;5.2.1 中断源 ;1. 特殊功能寄存器TCON中的标志 ;2. 特殊功能寄存器SCON ;5.2.2 中断控制 ;图 5.4 IE格式 ;2. 中断优先级 ;表 5.2 同级内第二优先级次序 ; 例如, 某软件中对寄存器IE、 IP设置如下: MOV IE, # 8FH MOV IP, # 06H 则此时该系统中:  · CPU中断允许;  · 允许外部中断 0、 外部中断 1、 定时器 /计数器 0、 定时器 /计数器1提出的中断申请;  · 允许中断源的中断优先次序为:  定时器 /计数器 0外部中断 1外部中断 0定时器/计数器 1。 ;5.2.3 中断响应 ; 2. 中断响应过程 单片机一旦响应中断请求, 就由硬件完成以下功能:  (1) 根据响应的中断源的中断优先级, 使相应的优先级状态触发器置 1;  (2) 执行硬件中断服务子程序调用, 并把当前程序计数器PC的内容压入堆栈;  (3) 清除相应的中断请求标志位(串行口中断请求标 志 RI和 TI除外);  (4) 把被响应的中断源所对应的中断服务程序的入口 地址(中断矢量)送入PC, 从而转入相应的中断服务程序。 ;表 5.3 中断服务程序入口地址表 ; 例如, 现有外部中断 1 提出申请, 且主程序中有R0、 R1、 DPTR、累加器A需保护, 则编制程序应为: ;INT1: PUSH ACC ; 中断服务程序 PUSH DPH PUSH DPL PUSH 0 PUSH 1  POP 1 POP 0 POP DPL POP DPH POP ACC RETI ; 编程中应注意:  (1) 在 0000H放一条跳转到主程序的跳转指令, 这是因为 MCS-51单片机复位后, PC的内容变为 0000H, 程序从 0000H 开始执行, 紧接着 0003H是中断程序入口地址, 故在此中间只能插入一条转移指令;  (2) 响应中断时, 先自动执行一条隐指令“LCALL 0013H”, 而 0013H至 001BH(定时器 1 溢出中断入口地址)之间可利用的存储单元不够, 故放一条无条件转移指令。  (3) 在中断服务程序的末尾, 必须安排一条中断返回指令RETI, 使程序自动返回主程序。 ;5.3 中断系统的应用 ; 现在,若INT0保持低电平, 且允许INT0中断, 则CPU就进入外部中断 0 服务程序, 由于有上述几条指令, 它就会停在 JNB处, 原地等待。当INT0 端出现一个正脉冲(由低到高, 再到低)时, 程序就会往下执行, 执行RETI后, 将返回主程序, 往下执行一条指令, 然后又立即响应中断,以等待INT0端出现的下一个正脉冲。 这样在I

文档评论(0)

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

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

1亿VIP精品文档

相关文档