带中断的交通灯控制系统ppt课件.ppt_第1页
带中断的交通灯控制系统ppt课件.ppt_第2页
带中断的交通灯控制系统ppt课件.ppt_第3页
带中断的交通灯控制系统ppt课件.ppt_第4页
带中断的交通灯控制系统ppt课件.ppt_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

观察与思考 1 实际交通灯控制是怎样的 2 此程序会出现问题吗 3 是什么原因出现问题的 4 如何改正 1 答案见KEIL 程序中的注释 可单步执行 观察现象 再解释 2 第七章单片机的中断系统 知识目标 理解单片机中断系统的结构 掌握其控制寄存器 掌握中断嵌套的概念 理解单片机中断的执行过程 技能目标 能运用中断的方法编写交通灯控制程序 能利用中断的方法设计中等难度的单片机控制系统 素质目标 养成不断提升知识水平及技能水平的学习习惯 养成将学习内容与日常生活类比的学习习惯 3 交通灯控制系统 前面存在的主要问题 无法在任意时间通过S1及S2强制使交通灯到所需的状态 怎么办 通过中断的方式 强制执行所需的工作 暂停现在的工作 4 项目二任务2改进的交通灯控制器 要求 用中断的方法控制交通灯控制器中的S1 S2 任务分析 交通灯控制系统存在的主要问题 无法在任意时间通过S1及S2强制使交通灯到所需的状态 5 分析就可知道 必需等交通灯的一个转换循环结束 S1及S2的强制作用才能生效 通过仿真也可观察到这一现象 但这在现实中是不允许的 如有地方发生火灾或有重病病人要紧急送往医院 这类事情是耽误不得的 6 硬件电路及控制方法 7 流程图 开始 东西向通行60秒 黄灯亮3秒 南北向通行120秒 黄灯亮3秒 中断的初始化 开中断 电平触发方式 外中断0为低优先级 外中断1为高优先级 东西向通行3S 中断返回 中断入口 南北向通行3S 中断返回 中断入口 S1按下 产生外部中断0 S2按下 产生外部中断1 8 要求 掌握中断的概念 掌握 中断的控制方法 开关中断 外部中断的中断触发方式 优先级 掌握中断处理函数的编制方法 能应用中断的方法处理交通灯控制及其它中断问题 9 10 11 中断要做哪些工作 中断处位置的记录 因为中断后还要回来 回到何处 只有记录了位置 才能回到正确的位置 中断前的重要信息存储 因为去处理中断事务 可能更改原来的记录信息 故必需将原来的重要信息保存起来 回到原来处理的事情时 才能利用原有的信息 而不是被中断程序更改过的信息 12 正在执行显示程序键盘按下处理键盘扫描继续处理键盘扫描继续执行显示程序处理定时器动作定时时间到图7 3显示及键盘中断流程图中断处理的去向 要处理中断的事情 必需知道到哪里去处理 中断允许 因为 如果现在处理的问题很重要 现在的进程就不能被打断 只有在重要的事情处理完之后 才去响应中断的请求 中断的优先级 如果同时出现几个中断事由要求处理 必需按照轻重缓急处理 因此 必需对它们编制一个优先等级 13 单片机的中断系统的结构 中断是指在突发事件到来时先中止当前正在进行的工作 转而去处理突发事件 待处理完成后 再返回到原先被中止的工作处 继续进行随后的工作 14 MCS 51单片机的中断系统结构 执行主程序 主程序 继续执行主程序 断点 中断请求 中断响应 执行中断处理程序 中断返回 15 引起突发事件的来源称为中断源中断源要求服务的请求称为中断请求对中断请求提供的服务称为中断服务中断管理系统处理事件的过程称为中断响应过程 16 引起CPU中断的根源 称为中断源 中断源向CPU提出的中断请求 CPU暂时中断原来的事务A 转去处理事件B 对事件B处理完毕后 再回到原来被中断的地方 即断点 称为中断返回 实现上述中断功能的部件称为中断系统 中断机构 17 18 8051的中断源 一 P3 2 可由IT0 TCON 0 选择其为低电平有效还是下降沿有效 当CPU检测到P3 2引脚上出现有效的中断信号时 中断标志IE0 TCON 1 置1 向CPU申请中断 二 P3 3 可由IT1 TCON 2 选择其为低电平有效还是下降沿有效 当CPU检测到P3 3引脚上出现有效的中断信号时 中断标志IE1 TCON 3 置1 向CPU申请中断 以上两个中断源称作外部中断源 因为它们都是由外部输入的 19 三 定时器T0 TF0 TCON 5 片内定时 计数器T0溢出中断请求标志 当定时 计数器T0发生溢出时 置位TF0 并向CPU申请中断 四 定时器T1 TF1 TCON 7 片内定时 计数器T1溢出中断请求标志 当定时 计数器T1发生溢出时 置位TF1 并向CPU申请中断 五 串行通信 RI SCON 0 或TI SCON 1 串行口中断请求标志 当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI 向CPU申请中断 20 二 中断请求标志1 TCON的中断标志 IT0 TCON 0 外部中断0触发方式控制位 当IT0 0时 为电平触发方式 当IT0 1时 为边沿触发方式 下降沿有效 IE0 TCON 1 外部中断0中断请求标志位 IT1 TCON 2 外部中断1触发方式控制位 IE1 TCON 3 外部中断1中断请求标志位 TF0 TCON 5 定时 计数器T0溢出中断请求标志位 TF1 TCON 7 定时 计数器T1溢出中断请求标志位 21 2 SCON的中断标志 RI SCON 0 串行口接收中断标志位 当允许串行口接收数据时 每接收完一个串行帧 由硬件置位RI 同样 RI必须由软件清除 TI SCON 1 串行口发送中断标志位 当CPU将一个发送数据写入串行口发送缓冲器时 就启动了发送过程 每发送完一个串行帧 由硬件置位TI CPU响应中断时 不能自动清除TI TI必须由软件清除 22 一 中断允许控制CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的 80C51中断的控制 EX0 IE 0 外部中断0允许位 ET0 IE 1 定时 计数器T0中断允许位 EX1 IE 2 外部中断1允许位 ET1 IE 3 定时 计数器T1中断允许位 ES IE 4 串行口中断允许位 EA IE 7 CPU中断允许 总允许 位 23 以上各位为 时 允许相应的中断 为 时禁止相应的中断 其中 EA为中断的总开关 24 二 中断优先级控制80C51单片机有两个中断优先级 即可实现二级中断服务嵌套 每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的 PX0 IP 0 外部中断0优先级设定位 PT0 IP 1 定时 计数器T0优先级设定位 PX1 IP 2 外部中断0优先级设定位 PT1 IP 3 定时 计数器T1优先级设定位 PS IP 4 串行口优先级设定位 PT2 IP 5 定时 计数器T2优先级设定位 25 上面各位为 时 是高优先级 为 时为低优先级 同一优先级中的中断申请不止一个时 则有中断优先权排队问题 同一优先级的中断优先权排队 由中断系统硬件确定的自然优先级形成 其排列如所示 26 27 80C51单片机的中断优先级有三条原则 CPU同时接收到几个中断时 首先响应优先级别最高的中断请求 正在进行的中断过程不能被新的同级或低优先级的中断请求所中断 正在进行的低优先级中断服务 能被高优先级中断请求所中断 28 中断的入口 单片机响应中断时 系统会自动跳到相应的地址 即中断入口地址执行中断程序 这一过程是由中断系统自动安排的 不需要人为干预 中断入口地址表如上表所示 它们位于程序最开始的一段区间 0003H 0023H 29 80C51单片机中断处理过程 一 中断响应条件中断源有中断请求 此中断源的中断允许位为1 CPU开中断 即EA 1 同时满足时 CPU才有可能响应中断 中断响应条件和时间 30 二 中断服务的进入与返回进入中断服务是单片机自动安排的 如进入前会保存中断处地址及重要信息 进入中断服务程序后则执行相应的服务程序 执行完后还要恢复原来的地址及重要信息 然后返回到原来被中断处断续执行原来的程序 31 三 中断响应时间 即从发出中断请求到响应中断之间的时间 这一时间不长 一般为 个机器周期 32 中断服务程序的编制 一 中断服务程序编制的格式中断响应过程就是自动调用并执行中断函数的过程 C51编译器支持在C源程序中直接以函数形式编写中断服务程序 常用的中断函数定义语法如下 33 中断处理函数 void函数名 interruptn 34 中断源n入口地址外部中断000003H定时 计数器01000BH外部中断120013H定时 计数器13001BH串行口40023H 35 中断要做哪些工作呢 中断处位置的记录 中断前的重要信息存储 中断处理的去向 中断允许 中断的优先级 36 二 项目二任务2解答 交通灯中断控制器设计 电路图 图7 11交通灯电路图2 37 电路与原来的不同是将两个控制开关S1及S2移到了外部中断输入端口处 当开关合上时 输入低电平产生中断 断开时不产生中断 38 控制程序流程图 控制程序流程图如图7 1所示 中断的产生是随机的 并没有固定的时刻 只有S1或S2按下则产生中断 还可对它们设置中断优先级 从而避免以前同时按下时 不好确定响应哪个中断的情况 39 includevoiddelay unsignedint main IE 0 x85 开中断TCON 0 x00 电平触发方式IP 0 x04 外中断0为低优先级 外中断1为高优先级 控制程序 40 while 1 P1 0 x21 delay 200 P1 0 x12 delay 20 P1 0 x0c delay 400 P1 0 x12 delay 20 41 voidint0 interrupt0 外中断0 P1 0 x21 delay 100 voidint1 interrupt2 外中断1 P1 0 x0c delay 100 42 voiddelay unsignedintj unsignedinti k for k 0 k j k for i 0 i 500 i 43 三 关于中断触发方式及程序编制的讨论 1 关于边沿触发与电平触发的讨论1 电平触发中断 44 电平触发方式比较好理解 处理器每个指令周期查询中断引脚 当发现引脚电平为低时 触发中断 如果信号从1变为0 一个周期后又变为1 中断并不会被清除 直到中断执行完毕并用RETI指令返回之后 但是如果输入信号一直为低 那么将一直触发中断 当要求中断服务的器件在中断服务结束一段时间之后才释放信号线时就会发生这种情况 这时你会发现中断被执行了多次 所消耗的时间比预期的要长很多 这时应使用边沿触发方式 45 2 边沿触发方式 当外部中断引脚电平由高向低变化时 将触发中断处理器 每个指令周期查询中断引脚 当前一个指令周期是引脚电平为高 紧接着下一个指令周期检测到引脚电平为低时 将触发中断 像前面所提到的那样 这种方法适用于请求中断服务的器件在中断服务结束一段时间之后才释放信号线时的情况 因为这时只有下降沿才会触发中断 如果你还想触发下一个中断就必须把电平先置高 46 当设计中断结构时 你要记住边沿触发适用于那些器件发出的中断请求信号不需要软件清除的场合 最为普遍的例子是系统的时标 这种信号一般由实时时钟电路产生 这些器件一般提供一个占空比为50 的信号 即信号的一半是高电平 另一半为低电平 如果使用电平触发 将将产生很多中断 这样即使不扰乱程序的运行也将浪费系统的资源 47 关于程序文档的规范化问题讨论 尽量用易于理解的文字 符号替换专业等号为使程序简化 可定义简单的符号代替常用的沉长的符号或关键字延时程序单独作为一个子程序主程序要尽量简单化 让读者明了程序的骨干 主旨每一功能 无论简单或复杂 最好编为一子程序 48 下面是交通灯控制的另一种程序写法 请注意它的规范性 49 中断控制的交通灯 include 宏定义 defineucharunsignedchar defineuintunsignedint 50 位变量定义sbitEAST REDLIGHT P1 0 sbitEAST YELLOWLIGHT P1 1 sbitEAST GREENLIGHT P1 2 sbitSOUTH REDLIGNT P1 3 sbitSOUTH YELLOWLIGHT P1 4 sbitSOUTH GREENLIGHT P1 5 51 延时子程序voiddelay uintk uinti j for i 0 i 1000 i for j 0 j k j 52 外部中断0响应程序voidint0 interrupt0 EAST REDLIGHT 1 东西路口红灯开启EAST YELLOWLIGHT 0 黄绿灯关闭EAST GREENLIGHT 0 SOUTH REDLIGHT 1 南北路口红灯开启 53 SOUTH YELLOWLIGHT 0 黄绿灯关闭SOUTH GREENLIGHT 0 delay 850 东西路口通行的子程序voideast 54 EAST REDLIGHT 0 EAST YELLOWLIGHT 0 EAST GREENLIGHT 1 SOUTH REDLIGHT 1 SOUTH YELLOWLIGHT 0 SOUTH GREENLIGHT 0 delay 850 55 EAST REDLIGHT 0 EAST YELLOWLIGHT 1 EAST GREENLIGHT 0 delay 85 南北路口通行子程序voidsouth 56 EAST REDLIGHT 1 EAST YELLOWLIGHT 0 EAST GREENLIGHT 0 SOUTH REDLIGHT 0 SOUTH YELLOWLIGHT 0 SOUTH GREENLIGHT 1 delay 850 57 SOUTH REDLIGHT 0 SOUTH YELLOWLIGHT 1 SOUTH GREENLIGHT 0 delay 85 58 主程序main IE 0 x81 开中断TCON 0 x00 触发方式为电平方式IP 0 x00 while 1 east 东西路口通行south 南北路口通行 59 中断嵌套 上面列举的几个例子中都有中断嵌套的问题 中断嵌套 即中断被中断 千万是注意 多次中断并不是中断嵌套 60 要求 掌握中断嵌套的概念 能运用中断嵌套处理简单的嵌套问题 能仿真中断嵌套实验 61 中断嵌套 具有 个响应优先级 可以实现中断的嵌套 即高优先级的中断请求可以打断低优先级的中断程序程序 等高优先级的中断程序执行完后再转到低优先级的中断服务程序继续执行 中断嵌套即中断被中断 日常生活中中断嵌套的例子如科代表交作业中断了老师的备课 在老师处理科代表交作业时 老师又补系领导叫去有其它事情 老师回来后继续与科代表交谈 了解班级学习情况 科代表离开后老师继续备课 62 项目二任务3中断嵌套仿真 63 仿真实验 如图所示 正常时与 中相接的数码管显示 如果低优先级的开关按下 则 中的数码管停止不动 与 口相接的数码管显示 如果这时高优先级的开关按下 则与 口相接的数码管显示 断开高优先级的开关后 等 一次循环显示完后 转到低优先级的数码管继续显示 低优先级的开关断开后 转到正常的与 口相连的数码管继续循环显示 64 65 任务分析 这里有三个显示程序 即P0 P1 P2口的数码管都循环显示0 9 正常是P0口的显示 如果发生开关按下的情况 则要运程其它两个口的显示程序 既然有中断的情况有两个 就要对它们排队 这就是中断嵌套的问题 66 程序 中断嵌套实验 头文件引用 include reg51 h 宏定义 defineucharunsignedchar defineuintunsignedint 延时子程序voiddelay uintk uinti j for i 0 i0 i for j 0 j k j 67 外部中断 响应程序voidint0 interrupt0 uchari for i 0 x00 i 0 x0a i P1 i delay 850 P1 0 68 外部中断 响应程序voidint1 interrupt2 uchari for i 0 xf0 i 0 xfa i P2 i delay 850 P2 0 69 主程序main uchari IE 0 x85 开中断总开关及开外部中断 与 EA 1 EX0 1 EX1 1 TCON 0 x00 外部中断为电平触发 IT0 0 IT1 0 IP 0 x04 外部中断 为低级中断 外部中断 为高级中断 PX0 0 PX1 1 70 while 1 for i 0 i 10 i P0 i delay 850 延时 秒 71 注意 如果 口不接上拉电阻 则 口的数码管显示不正常 这说明 口的高阻状态 即 口没有输出高电平的能力 因为 口是集电极 漏极 开路的 72 三个数码管分别通过BCD码 七段码译码器CD4511与P0 P1 P2的低四位的四根引脚相连 故送入三个端口的数据直接为十进制数 无需送七段码 两个开关接到外部中断输入端 按下开关就可产生中断 73 程序更改与思考 改变IE的值 如为0 x81 84 看看再按下中断开关 情况是怎样的 为什么 改变IP的值 如为0 x00 01 11 看看在按下开关时 情况是怎样的 为什么 改变TCON的值 如为0 x05 即为边沿触发 看看按下开关时 情况是怎样的 分析为什么 74 启示 按下中断开关 马上停止主程序中的 口的显示 转到中断的显示 反应出中断响应的实时性 高级中断中断低级中断服务程序时 也是实时性的 即马上停止低级显示 转到高级显示 高级中断撤消时 一次轮回显示 必需进行完后才回到低级中断控制的显示 反应出高级中断程序必需进行完才去执行低级的中断 即高级中断服务程序执行的完整性 低级中断撤消 回到主程序时 也是如此 75 注意 ls47 cd4511 为 译码驱动器 LS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论