任务三流水灯定时控制

上传人:206****923 文档编号:54846965 上传时间:2018-09-20 格式:PPT 页数:82 大小:1.19MB
返回 下载 相关 举报
任务三流水灯定时控制_第1页
第1页 / 共82页
任务三流水灯定时控制_第2页
第2页 / 共82页
任务三流水灯定时控制_第3页
第3页 / 共82页
任务三流水灯定时控制_第4页
第4页 / 共82页
任务三流水灯定时控制_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《任务三流水灯定时控制》由会员分享,可在线阅读,更多相关《任务三流水灯定时控制(82页珍藏版)》请在金锄头文库上搜索。

1、任务三 流水灯定时控制,教学导航 任务单 任务准备 案例示范 知识梳理与总结 任务作业,教学导航,任务单,任务三 流水灯定时控制,3.1 中断系统 3.2 定时器/计数器,3.1 中断系统,3.1.1 中断的概念与作用 3.1.2 MCS 51单片机中断系统 3.1.3 中断服务函数,3.1.1 中断的概念与作用,外部设备是微机的重要组成部分,而微机和外部设备之间不是直接相连的,而是通过不同的接口电路来达到彼此间的信息传送的。 CPU与外部交换信息的方式: (1)程序控制传送方式 (2)中断传送方式 (3)直接存储器存取(DMA)方式,1.中断的定义,你正在专心看书,突然电话铃响,于是你记下正

2、在看的书的页数,去接电话,接完电话后再回来接着看书。,日常中断的例子,什么是中断?, 中断是指计算机在执行某段程序的过程中, 由于计算机系统内、外的某种原因, 暂时中止原程序的执行, 转去执行相应的处理程序, 并中断服务程序执行完后, 再回来继续执行被中断的原程序的过程。 ,2. 中断的作用,1)CPU与外设并行工作。解决CPU速度快、外设速度慢的矛盾。 2)实时处理。控制系统往往有许多数据需要采集或输出。实时控制中有的数据难以估计何时需要交换。 3)故障处理。计算机系统的故障往往随机发生,如电源断电、运算溢出、存储器出错等。采用中断技术,系统故障一旦出现,就能及时处理。 4)实现人机交互:人

3、和单片机交互一般采用键盘和按键,可以采用中断的方式实现,中断方式时CPU执行效率高,而且可以保证人机交互的实时性,故中断方式在人机交互中得到广泛应用。,3.1.2 MCS-51中断系统,中断系统是指能实现中断功能的那部分硬件电路和软件程序。 对于MCS-51单片机,大部分中断电路都是集成在芯片内部的,只有和中断输入线上的中断请求信号产生电路才分散在各中断源电路或接口芯片电路里。,IE0,TCON,SCON,TF0,IE1,TF1,T0,T1,TI,RI,TXD,RXD,ES,ET0,EX0,EX1,ET1,EA,自然优先级,矢量地址,高级中断请求,自然优先级,矢量地址,低级中断请求,PX0,P

4、T0,PX1,PT1,PS,IE,IP,中断标志位,中断源允许,总允许EA,中断优先级,3.1.2 MCS-51单片机中断系统,1. MCS-51的中断源和中断标志,中断源是指引起中断的事件。 在单片机中,中断源是指引起中断原因的设备或事件,或发出中断请求信号的源泉。通常有I/O设备、实时控制系统中的随机参数和信息故障源等。,1)外部中断源:MCS-51系列单片机有2个外中断源,称为外中断0和1,经由单片机上的P3.2、P3.3这两个外部引脚引入,为 、 。 2)内部中断源定时器溢出中断源。定时器溢出中断源由内部定时器/计数器产生,属于内部中断。串行口中断源。串行口中断是由内部串行口中断源产生

5、。,(1) 中断源,1)TCON中的中断标志位,(2)中断请求标志,(MSB)8FH 8EH 8DH 8CH 8BH 8AH 89H 88H(LSB),外部中断INT0中断标志位(TCON.1) :IE01,外部中断1向CPU申请中断,外部中断INT0触发方式控制位(TCON.0):IT0=0,电平触发方式IT0=1, 下降沿触发方式,注意:该寄存器可以位寻址。,提 示:,在电平触发方式下,CPU响应中断时,不能自动清除IE0标志。也就是说,IE0状态完全由 状态决定,所以在中断返回前必须撤除 的低电平,否则会引起重复中断;而在负跳变触发方式下,当CPU响应中断时,硬件会自动使IE0清0。 在

6、负跳变触发方式下,为保证CPU能检测到负跳变,的高、低电平时间至少应保持1个机器周期。,采样INT0,采样INT0,采样INT0,1)TCON的中断标志位,TCON,8FH 8EH 8DH 8CH 8BH 8AH 89H 88H,T0溢出中断标志(TCON.5):T0启动计数后,计满溢出由硬件置位TF0=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。,2) SCON的中断标志位,(MSB)9FH 9EH 9DH 9CH 9BH 9AH 99H 98H(LSB),注意:该寄存器可以位寻址!,RI (SCON.0)串行接收中断标志。,

7、TI (SCON.1)串行发送中断标志。,(1)中断允许控制中断允许寄存器IE ,2. 中断控制,(MSB)AFH AEH ADH ACH ABH AAH A9H A8H(LSB),中断允许寄存器IE对中断的开放和关闭实行两级控制。所谓两级控制,就是有一个总开、关中断控制位EA,当EA0时,则屏蔽所有的中断申请,即任何中断申请都不接受;当EA1时,CPU开放中断,但五个中断源还要由IE的低5位的各对应控制位的状态进行中断允许控制。,实例3-1 如果我们要设置外中断1、定时器1中断允许,其它不允许,请设置IE的相应值。,(MSB)AFH AEH ADH ACH ABH AAH A9H A8H(L

8、SB),(a)SFR赋值 IE=0x8c,(b)用位赋值 EA1;CPU开中断 ET11;定时/计数器1允许中断 EX11;外中断T1允许中断,(2)中断优先级控制,MCS-51单片机有两个中断优先级:高级中断和低级中断。 每一个中断源都可以通过编程确定为高优先级中断或低优先级中断。 若CPU当前正在为低优先级中断服务,在开中断的条件下,它能被另一个高优先级中断请求所中断,转去为高级中断服务,再返回到被中断了的低级中断的服务程序,这即为中断嵌套。,中断嵌套过程,中断优先级寄存器IP,(MSB)BFH BEH BDH BCH BBH BAH B9H B8H(LSB),专用寄存器IP为中断优先级寄

9、存器,用户可用软件设定相应位为1,对应的中断源被设置为高优先级,相应位为0,对应的中断源被设置为低优先级系统复位时,均为低优先级该寄存器可以位寻址,自然优先权顺序,MCS-51系列单片机中断响应原则:,1)高级中断请求可以中断正在执行的低级中断。 2)同级或低级中断请求不能中断正在执行的中断。 3)多个中断源同时向CPU申请中断,首先响应优先级别最高的中断请求;多个同级中断源同时向CPU申请中断,CPU通过内部硬件查询,按自然优先级确定优先响应哪一个中断请求。,解:IP的首3位没用,可任意取值,设为000,后面根据要求写就可以了。,实例3-2 设有如下要求,将T0、外中断1设为高优先级,其它为

10、低优先级,求IP的值。,IP的值就是06H。,实例3-3 在上例中,如果5个中断请求同时发生,求中断响应的次序。,解:响应次序为 定时器0外中断1外中断0实时器1串行中断。,(1)中断响应的时序,3. 中断响应,(2)CPU响应中断的条件,没有同级或高优先级的中断正在处理; 正在执行指令必须执行完最后一个机器周期(换言之, 正在执行的指令完成前, 任何中断请求都得不到响应); 若正在RETI或读写IE或IP寄存器,则必须执行完当前指令的下一条其它指令之后才会响应。,单片机一旦响应中断请求, 就由硬件完成以下功能: 自动清除相应的中断请求标志位(串行口中断请求标志RI和TI除外); 保护断点和现

11、场,把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC, 从而转入相应的中断服务程序。结束中断服务程序,恢复断点和现场,并返回响应中断之前的程序继续执行。,(3)CPU响应中断的过程,3.1.3 中断服务函数,C51编译器支持在C语言源程序中直接编写8051单片机的中断服务函数,从而减轻使用汇编语言的繁琐程度,提高了开发效率。,1.中断服务函数的一般形式,void 函数名(void) interrupt m unsing n,代表中断号,是一个常量,取值范围是0-31。 C51编译器允许32个中断,从8m+3处产生中断向量,代表中断函数将要选择使用的寄存器组,也是一个常量,取值

12、范围是03。,程序存储器ROM,0000H:复位后,程序的入口地址(PC=0000H),0023H:串行口中断入口(中断号m=4),0003H:外部中断0入口(中断号m=0),000BH:定时器/计数器0中断入口(中断号m=1),0013H:外部中断1入口(中断号m=2),001BH:定时器1 /计数器中断入口(中断号m=3),002BH,MCS-51单片机中断入口,8字节,关于USING的说明,using不仅可以用于中断服务函数的定义中,也可以用于普通的内部函数,但不能用于外部函数。 就中断服务函数而言 如果不使用using,则在进入中断服务函数的时候,中断函数中所用到的全部工作寄存器都要入

13、栈,函数返回之前所有的寄存器内容出栈; 如果使用using,则在进入中断服务函数的时候,只将当前工作寄存器组入栈,用using指定的工作寄存器组的内容不变也不入栈,函数返回之前将被保护的工作寄存器组出栈。,提 示,(1)使用using可缩减中断服务函数的入栈操作时间,因此可以使中断得到更及时的处理;但同时,使用using要十分小心,要保证寄存器组切换在所控制的区域内,否则会导致错误。 (2)中断函数的编写包括两部分:中断源的初始化函数和中断服务函数。概括地说,中断源初始化函数就是对中断源所需要的一些变量进行设置,其形式与其他普通函数一样一般在主函数里实现;而中断服务函数就是规定系统在发生相应的

14、中断的时候要执行哪些操作。 (3)中断函数的调用过程与一般函数调用相似,但一般函数是程序中事先安排好的;而何时调用中断函数事先无法确定,调用中断函数的过程是由硬件自动完成的。,中断函数的类型及参数都为void类型,中断函数既不能进行参数传递,也没有返回值,因此,中断函数的形式参数列表和函数类型标识符名均为void。 定时器0的定义方式: void intr_time0(void) interrupt 1 ,2.中断函数的编写,(1)中断的初始化 所谓初始化,是对将要用到的MCS-51系列单片机内部部件或扩展芯片进行初始工作状态设定。针对中断来说,就是对IE,IP进行初始化编程,实现如下要求:

15、1)CPU开中断与关中断。 2)某个中断源中断请求的允许和禁止(屏蔽)。 3)各中断源优先级别的设定。 4)外部中断请求的触发方式。,(2)中断服务函数,中断服务函数就是规定系统在发生相应的中断的时候要执行哪些操作。,实例,【实例3-4】P1.3外接一个扬声器,当与P3.3(外部中断1输入引脚)变为低电平时,扬声器发声。,实例3-4,#include sbit p13=P13; void main() IT0=0; EA=1;EX1=1; p13=1;while(1); void isr_int1() interrupt 2 int i; p13=p13;for(i=1000;i0;i-); ,实例3-5:电平触发与跳变触发的比较,#include #include void serial_init(); void isr_int0(); main() serial_init();IT0=0;EA=1;EX0=1;while(1); ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号