任务三流水灯定时控制课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《任务三流水灯定时控制课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 任务 流水 定时 控制 课件
- 资源描述:
-
1、教教知识重点(1)中断控制用寄存器;(2)中断服务函数的编写;(3)定时器工作方式及控制寄存器的使用知识难点定时器工作方式;中断服务函数的编写推荐教学方式以任务入手,通过流水灯的定时控制程序的编写逐渐认识中断系统、定时器/计数器的作用,深化对中断系统与定时器的理解,掌握中断服务函数的编写方法及中断响应的机制。建议学时8学时学学推荐学习方法通过对教师提供的电路图,编写程序,完成仿真调试,理解相关理论知识,学会应用。必须掌握的理论知识(1)单片机中断系统;(2)中断控制用寄存器;(3)中断服务函数的编写;(4)单片机定时器结构;(5)工作方式及控制寄存器;(6)定时器的应用必须掌握的技能中断程序、
2、定时器应用程序的编写,仿真调试技巧。教学导航教学导航任务任务3 以定时方式控制流水灯以定时方式控制流水灯任务单任务单任务描述任务二是利用单片机的并行I/O口外接流水灯,采用并行输入/输出方式控制发光二极管实现流水灯,在实现该任务时,每次点亮一个灯后要延时,否则无法看到流水灯效果,任务二通过软件方法实现延时。本任务要求利用单片机的定时器/计数器,让流水灯指定时间循环点亮发光二极管。任务要求如图3-1所示,由P0连接8只发光二极管,实现如下流水灯的功能:(1)要求每隔1s从左至右循环点亮发光二极管;(2)按自定时间间隔从左至右循环点亮发光二极管,点亮最右边的发光二极管后,再从右至左循环点亮。实现方
3、法1利用Proteus仿真运行,按任务要求实现流水灯。2在实训设备上按任务要求连线,运行程序。任务任务3 以定时方式控制流水灯以定时方式控制流水灯3.1 中断系统3.2 定时器/计数器任务任务3 以定时方式控制流水灯以定时方式控制流水灯3.1 3.1 中断系统中断系统3.1.1 3.1.1 中断的概念与作用中断的概念与作用3.1.2 MCS 513.1.2 MCS 51单片机中断系统单片机中断系统3.1.3 3.1.3 中断服务函数中断服务函数 任务任务3 以定时方式控制流水灯以定时方式控制流水灯 3.1.1 3.1.1 中断的概念与作用中断的概念与作用外部设备是微机的重要组成部分,而微机和外
4、部设备之间不是直接相连的,而是通过不同的接口电路来达到彼此间的信息传送的。CPU与外部交换信息的方式:(1)程序控制传送方式(2)中断传送方式(3)直接存储器存取(DMA)方式任务任务3 以定时方式控制流水灯以定时方式控制流水灯1.1.中断的定义中断的定义 你正在专心看书,突然电话铃响,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。日常中断的例子日常中断的例子任务任务3 以定时方式控制流水灯以定时方式控制流水灯什么是中断?什么是中断?中断是指计算机在执行某段程序的过程中中断是指计算机在执行某段程序的过程中,由于计算机系统内、外的某种原因由于计算机系统内、外的某种原因,暂时中止
5、原暂时中止原程序的执行程序的执行,转去执行相应的处理程序转去执行相应的处理程序,并中断并中断服务程序执行完后服务程序执行完后,再回来继续执行被中断的原再回来继续执行被中断的原程序的过程。程序的过程。任务任务3 以定时方式控制流水灯以定时方式控制流水灯1)CPU与外设并行工作。解决与外设并行工作。解决CPU速度快、外设速度速度快、外设速度慢的矛盾。慢的矛盾。2)实时处理。控制系统往往有许多数据需要采集或输实时处理。控制系统往往有许多数据需要采集或输出。实时控制中有的数据难以估计何时需要交换。出。实时控制中有的数据难以估计何时需要交换。3)故障处理。计算机系统的故障往往随机发生,如电故障处理。计算
6、机系统的故障往往随机发生,如电源断电、运算溢出、存储器出错等。采用中断技术,系统源断电、运算溢出、存储器出错等。采用中断技术,系统故障一旦出现,就能及时处理。故障一旦出现,就能及时处理。4)实现人机交互:人和单片机交互一般采用键盘和)实现人机交互:人和单片机交互一般采用键盘和按键,可以采用中断的方式实现,中断方式时按键,可以采用中断的方式实现,中断方式时CPU执行效执行效率高,而且可以保证人机交互的实时性,故中断方式在人率高,而且可以保证人机交互的实时性,故中断方式在人机交互中得到广泛应用。机交互中得到广泛应用。任务任务3 以定时方式控制流水灯以定时方式控制流水灯3.1.2 MCS-513.1
7、.2 MCS-51中断系统中断系统中断系统是指能实现中断功能的那部分硬件电路中断系统是指能实现中断功能的那部分硬件电路和软件程序。和软件程序。对于对于MCS-51单片机,大部分中断电路都是集成单片机,大部分中断电路都是集成在芯片内部的,只有和中断输入线上的中断请求在芯片内部的,只有和中断输入线上的中断请求信号产生电路才分散在各中断源电路或接口芯片信号产生电路才分散在各中断源电路或接口芯片电路里。电路里。任务任务3 以定时方式控制流水灯以定时方式控制流水灯 IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESE
8、T0EX0EX1ET1EA自然优先级自然优先级矢量地址高级中断请求高级中断请求自然优先级自然优先级矢量地址低级中断请求低级中断请求PX0PT0PX1PT1PSIEIP 中断标志位中断源允许总允许EA中断优先级任务任务3 以定时方式控制流水灯以定时方式控制流水灯1.MCS-511.MCS-51的中断源和中断标志的中断源和中断标志 中断源是指中断源是指引起中断的事件。引起中断的事件。在单片机中,中断源是指引起中断原因的设备或在单片机中,中断源是指引起中断原因的设备或事件,或发出中断请求信号的源泉。事件,或发出中断请求信号的源泉。通常有通常有I/O设备、实时控制系统中的随机参数和信息设备、实时控制系
9、统中的随机参数和信息故障源故障源等。等。任务任务3 以定时方式控制流水灯以定时方式控制流水灯1)外部中断源:MCS-51系列单片机有2个外中断源,称为外中断0和1,经由单片机上的P3.2、P3.3这两个外部引脚引入,为 、。2)内部中断源 定时器溢出中断源。定时器溢出中断源由内部定时器/计数器产生,属于内部中断。串行口中断源。串行口中断是由内部串行口中断源产生。INT1INT0(1)(1)中断源中断源任务任务3 以定时方式控制流水灯以定时方式控制流水灯1)TCON中的中断标志位中的中断标志位 D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0(2)(2)中断请求标
10、志中断请求标志(MSB)8FH 8EH 8DH 8CH 8BH 8AH 89H 88H(LSB)外部中断外部中断INT0中断标志中断标志位位(TCON.1):IE01,外部中断1向CPU申请中断 外部中断外部中断INT0触发方式触发方式控制位控制位(TCON.0):IT0=0,电平触发方式 IT0=1,下降沿触发方式注意:该寄存器可以位寻址。任务任务3 以定时方式控制流水灯以定时方式控制流水灯:在电平触发方式下,在电平触发方式下,CPUCPU响应中断时,不能自动响应中断时,不能自动清除清除IE0IE0标志。也就是说,标志。也就是说,IE0IE0状态完全由状态完全由 状状态决定,所以在中断返回前
11、必须撤除态决定,所以在中断返回前必须撤除 的低电的低电平平,否则会引起重复中断;而在负跳变触发方式下否则会引起重复中断;而在负跳变触发方式下,当,当CPUCPU响应中断时,硬件会自动使响应中断时,硬件会自动使IE0IE0清清0 0。在负跳变触发方式下,为保证在负跳变触发方式下,为保证CPUCPU能检测到负跳能检测到负跳变,的高、低电平时间至少应保持变,的高、低电平时间至少应保持1 1个机器周期。个机器周期。INT0INT0采样INT0采样INT0采样INT0任务任务3 以定时方式控制流水灯以定时方式控制流水灯1)TCON的中断标志位的中断标志位 TCON8FH 8EH 8DH 8CH 8BH
12、8AH 89H 88HD7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0T0溢出中断标志溢出中断标志(TCON.5):T0启动计数后,计满溢出由硬件置位TF0=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。任务任务3 以定时方式控制流水灯以定时方式控制流水灯 D7D6D5D4D3D2D1D0SM0 SM1 SM2 RENTB8RB8TIRI2)SCON的中断标志位的中断标志位(MSB)9FH 9EH 9DH 9CH 9BH 9AH 99H 98H(LSB)注意:该寄存器可以位寻址!RI(SCON.0)
13、串行接收中断标志。TI(SCON.1)串行发送中断标志。任务任务3 以定时方式控制流水灯以定时方式控制流水灯(1)中断允许控制)中断允许控制中断允许寄存器IE 2.中断控制中断控制D7D6D5D4D3D2D1D0EAESET1EX1ET0EX0(MSB)AFH AEH ADH ACH ABH AAH A9H A8H(LSB)中断允许寄存器IE对中断的开放和关闭实行两级控制。所谓两级控制,就是有一个总开、关中断控制位EA,当EA0时,则屏蔽所有的中断申请,即任何中断申请都不接受;当EA1时,CPU开放中断,但五个中断源还要由IE的低5位的各对应控制位的状态进行中断允许控制。任务任务3 以定时方式
14、控制流水灯以定时方式控制流水灯实例3-1如果我们要设置外中断1、定时器1中断允许,其它不允许,请设置IE的相应值。位D7D6D5D4D3D2D1D0符号EAESET1EX1ET0EX0值10001100(MSB)AFH AEH ADH ACH ABH AAH A9H A8H(LSB)(a)SFR赋值IE=0 x8c(b)用位赋值EA1;CPU开中断ET11;定时/计数器1允许中断EX11;外中断T1允许中断任务任务3 以定时方式控制流水灯以定时方式控制流水灯(2 2)中断优先级控制)中断优先级控制 MCS-51单片机有两个中断优先级:单片机有两个中断优先级:高级中断和和低级中断。每一个中断源都
15、可以通过编程确定为高优先级中断每一个中断源都可以通过编程确定为高优先级中断或低优先级中断。或低优先级中断。若若CPU当前正在为低优先级中断服务,在开中断的当前正在为低优先级中断服务,在开中断的条件下,它能被另一个高优先级中断请求所中断,条件下,它能被另一个高优先级中断请求所中断,转去为高级中断服务,再返回到被中断了的低级中转去为高级中断服务,再返回到被中断了的低级中断的服务程序,这即为断的服务程序,这即为中断嵌套。任务任务3 以定时方式控制流水灯以定时方式控制流水灯中断嵌套过程中断嵌套过程CPU执行执行高级中断高级中断服务服务高级中断请求高级中断请求返回低级中断程序返回低级中断程序返回主程序返
16、回主程序响应高级中断响应高级中断低级中断请求低级中断请求CPU执行执行低级中断低级中断响应低级中断响应低级中断CPU在执行在执行的主程序的主程序任务任务3 以定时方式控制流水灯以定时方式控制流水灯中断优先级寄存器中断优先级寄存器IPIPD7D6D5D4D3D2D1D0PSPT1PX1PT0PX0(MSB)BFH BEH BDH BCH BBH BAH B9H B8H(LSB)专用寄存器专用寄存器IP为中断优先级寄存器,用户可用软件为中断优先级寄存器,用户可用软件设定设定 相应位为相应位为1,对应的中断源被设置为,对应的中断源被设置为高优先级高优先级,相,相应位为应位为0,对应的中断源被设置为低
17、优先级,对应的中断源被设置为低优先级 系统复位时,均为低优先级系统复位时,均为低优先级 该寄存器可以位寻址该寄存器可以位寻址任务任务3 以定时方式控制流水灯以定时方式控制流水灯自然优先权顺序自然优先权顺序 中中 断断 源源同级内优先权排列同级内优先权排列外部中断0中断(IE0)定时器/计数器0中断(TF0)外部中断1中断(IE1)定时器/计数器1中断(TF1)串行接口中断(TI/RI)最 高 最 低任务任务3 以定时方式控制流水灯以定时方式控制流水灯MCS-51系列单片机中断响应原则:系列单片机中断响应原则:1)高级中断请求可以中断正在执行的低级中断。高级中断请求可以中断正在执行的低级中断。2
18、)同级或低级中断请求不能中断正在执行的中断。同级或低级中断请求不能中断正在执行的中断。3)多个中断源同时向多个中断源同时向CPU申请中断,首先响应优先申请中断,首先响应优先级别最高的中断请求;多个同级中断源同时向级别最高的中断请求;多个同级中断源同时向CPU申申请中断,请中断,CPU通过内部硬件查询,按自然优先级确定通过内部硬件查询,按自然优先级确定优先响应哪一个中断请求。优先响应哪一个中断请求。任务任务3 以定时方式控制流水灯以定时方式控制流水灯解:IP的首3位没用,可任意取值,设为000,后面根据要求写就可以了。位位D7D6D5D4D3D2D1D0符号符号XXXPSPT1PX1PT0PX0
19、值值00000110实例实例3-2 3-2 设有如下要求,将设有如下要求,将T0T0、外中断、外中断1 1设为高优先级设为高优先级,其它为低优先级,求,其它为低优先级,求IPIP的值。的值。IP的值就是的值就是06H。任务任务3 以定时方式控制流水灯以定时方式控制流水灯实例实例3-3 3-3 在上例中,如果在上例中,如果5 5个中断请求同时发生个中断请求同时发生,求中断响应,求中断响应的次序。的次序。解:响应次序为解:响应次序为定时器定时器0外中断外中断1外中断外中断0实时器实时器1串行串行中断。中断。位位D7D6D5D4D3D2D1D0符号符号XXXPSPT1PX1PT0PX0值值00000
20、110任务任务3 以定时方式控制流水灯以定时方式控制流水灯(1)中断响应的时序)中断响应的时序任务任务3 以定时方式控制流水灯以定时方式控制流水灯 没有同级或高优先级的中断正在处理;正在执行指令必须执行完最后一个机器周期(换言之,正在执行的指令完成前,任何中断请求都得不到响应);若正在RETI或读写IE或IP寄存器,则必须执行完当前指令的下一条其它指令之后才会响应。任务任务3 以定时方式控制流水灯以定时方式控制流水灯单片机一旦响应中断请求单片机一旦响应中断请求,就由硬件完成以下功能就由硬件完成以下功能:自动清除相应的中断请求标志位(串行口中断自动清除相应的中断请求标志位(串行口中断请求标志请求
21、标志RI和和TI除外)除外);保护断点和现场,把被响应的中断源所对应的保护断点和现场,把被响应的中断源所对应的中断服务程序的入口中断服务程序的入口地址(中断矢量)送入地址(中断矢量)送入PC,从从而转入相应的中断服务程序。而转入相应的中断服务程序。结束中断服务程序,恢复断点和现场,并返回结束中断服务程序,恢复断点和现场,并返回响应中断之前的程序继续执行。响应中断之前的程序继续执行。任务任务3 以定时方式控制流水灯以定时方式控制流水灯3.1.3 3.1.3 中断服务函数中断服务函数C51编译器支持在编译器支持在C语言源程序中直接编写语言源程序中直接编写8051单片机的中断服务函数,从而减轻使用汇
22、编语言单片机的中断服务函数,从而减轻使用汇编语言的繁琐程度,提高了开发效率。的繁琐程度,提高了开发效率。任务任务3 以定时方式控制流水灯以定时方式控制流水灯1.1.中断服务函数的一般形式中断服务函数的一般形式void 函数名(void)interrupt m unsing n代表中断号,是一个常量,取值范围是0-31。C51编译器允许32个中断,从8m+3处产生中断向量 代表中断函数将要选择使用的寄存器组,也是一个常量,取值范围是03。任务任务3 以定时方式控制流水灯以定时方式控制流水灯程序存储器程序存储器ROM0000H:复位后,程序的入口地址(PC=0000H)0023H:串行口中断入口(
23、中断号m=4)0003H:外部中断0入口(中断号m=0)000BH:定时器/计数器0中断入口(中断号m=1)0013H:外部中断1入口(中断号m=2)001BH:定时器1/计数器中断入口(中断号m=3)002BHMCS-51MCS-51单片机中断入口单片机中断入口8字节任务任务3 以定时方式控制流水灯以定时方式控制流水灯关于关于USING的说明的说明using不仅可以用于中断服务函数的定义中,也可以不仅可以用于中断服务函数的定义中,也可以用于普通的内部函数,但不能用于外部函数。用于普通的内部函数,但不能用于外部函数。就中断服务函数而言就中断服务函数而言如果不使用using,则在进入中断服务函数
24、的时候,中断函数中所用到的全部工作寄存器都要入栈,函数返回之前所有的寄存器内容出栈;如果使用using,则在进入中断服务函数的时候,只将当前工作寄存器组入栈,用using指定的工作寄存器组的内容不变也不入栈,函数返回之前将被保护的工作寄存器组出栈。任务任务3 以定时方式控制流水灯以定时方式控制流水灯(1)使用using可缩减中断服务函数的入栈操作时间,因此可以使中断得到更及时的处理;但同时,使用using要十分小心,要保证寄存器组切换在所控制的区域内,否则会导致错误。(2)中断函数的编写包括两部分:中断源的初始化函数和中断服务函数。概括地说,中断源初始化函数就是对中断源所需要的一些变量进行设置
25、,其形式与其他普通函数一样一般在主函数里实现;而中断服务函数就是规定系统在发生相应的中断的时候要执行哪些操作。(3)中断函数的调用过程与一般函数调用相似,但一般函数是程序中事先安排好的;而何时调用中断函数事先无法确定,调用中断函数的过程是由硬件自动完成的。任务任务3 以定时方式控制流水灯以定时方式控制流水灯中断函数既不能进行参数传递,也没有返回值,因中断函数既不能进行参数传递,也没有返回值,因此,中断函数的形式参数列表和函数类型标识符名此,中断函数的形式参数列表和函数类型标识符名均为均为void。定时器定时器0的定义方式:的定义方式:void intr_time0(void)interrupt
展开阅读全文