第六章单片机的中断系统分解.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ifm electronic gmbh * * ifm electronic gmbh * * ifm electronic gmbh * * ifm electronic gmbh * * 单片机原理及应用 (第六章 单片机的中断系统) 教学内容 中断系统概述 中断系统的控制 中断系统的编程 DATE: * PAGE: * 一、中断系统概述 当CPU在执行某一程序过程中,在突发事件的请求下,CPU中断当前正在执行的程序,自动转去执行为处理该事件而预先编写的服务程序,当服务程序执行完后,CPU继续执行原来的程序,这一过程称为中断。 请求产生中断的事件称为中断源,中断源向CPU提出请求称为中断请求或中断申请。 DATE: * PAGE: * 二、中断系统的控制 8051单片机系统提供5个中断源,每个中断源都被分配了一个编号以及相应的中断服务程序入口地址,通过该入口地址中的跳转指令转到相应的中断服务程序。 如果多个中断源同时向CPU提出中断请求,CPU将选择优先级最高的中断源为其服务。当完成高优先级的中断服务后,CPU才能响应低优先级的中断请求。 DATE: * PAGE: * 二、中断系统的控制 8051单片机允许对中断系统进行中断允许控制和中断优先级控制,可以分别通过配置中断允许寄存器IE和中断优先级寄存器IP来实现这两项控制。 (1)定时/计数器控制寄存器TCON 表6-2 给出了TCON的格式,其中低四位用于控制外部中断INTO和INT1的工作方式。 DATE: * PAGE: * 二、中断系统的控制 (2)中断允许寄存器IE 通过配置中断允许寄存器IE可以实现对中断源的开放或屏蔽设置,并且可以实现两级控制。 所有的中断源同受一个总开关控制,能够控制所有中断源是否开放, 5个中断源分别对应一个中断屏蔽位,可以单独设置该中断是否开放,可以进行位寻址。? DATE: * PAGE: * 二、中断系统的控制 (3)中断优先级寄存器IP 8051单片机支持两种中断优先级,5个中断源分别对应一个中断优先级控制位,均可以单独设置为高优先级或低优先级,该功能通过配置中断优先级寄存器IP来实现。中断优先级寄存器IP可以位寻址。 DATE: * PAGE: * 二、中断系统的控制 例6-1,如果IP的值设为06H,如果5个中断请求同时发生,求中断响应的次序。? 解:06H化为二进制,根据表6-4知,定时器T0和外中断 被设置成高优先级中断,因此如果5个中断请求同时发生,中断响应的先后次序是:定时器T0→外中断INT1→外中断 →定时器T1→串行中断。 DATE: * PAGE: * 三、中断系统的编程 中断函数的定义: void 函数名(void) interrupt n using m { 中断函数内容 } 修饰符interrupt n表明该中断服务程序所对应中断源的中断号,编译器会把该函数转化为中断函数,并在对应的中断入口地址处添加跳转指令,以便转入本中断函数。 修饰符using m 用于指定本函数内部使用的工作寄存器组,m的取值为0~3。该修饰符可省略,由编译器去分配。 DATE: * PAGE: * 三、中断系统的编程 编写中断函数时,应注意以下几点: (1)中断函数不带任何参数,否则会导致编译出错。 (2)中断函数不能有返回值,所以函数类型应为void。 (3)中断函数必须由中断源触发而自动调用,不得直接调用,因此也不用提前声明。 (4)中断函数要精简,避免因执行时间过长影响其它中断的响应。 DATE: * PAGE: * 三、中断系统的编程 例6-2 如图6-2所示,P0口连接了8个发光二极管, 引脚上接了一个按键,要求每次按键均能改变发光二级管的亮灭。 DATE: * PAGE: * 三、中断系统的编程 #include reg51.h #define LED P0 sbit KEY = P3^3; bit flag=0; void delay(unsigned char n) //延时子函数; { unsigned char a; for(a=0;an;a++); } ? main(void) { IT1=1; //设置边沿触发方式 EA=1; EX1=1; LED=0xff; //发光二极管灭 DATE: * PAGE: * 三、中断系统的编程 while(1) { if( flag==1 ) //有外部中断的按键 { delay(100); //延迟一段时间,判断是否为

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档