欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    任务三流水灯定时控制.ppt

    • 资源ID:5216531       资源大小:1.05MB        全文页数:84页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    任务三流水灯定时控制.ppt

    任务三 流水灯定时控制,教学导航任务单任务准备案例示范知识梳理与总结任务作业,教学导航,任务单,任务三 流水灯定时控制,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.中断的作用,1)CPU与外设并行工作。解决CPU速度快、外设速度慢的矛盾。2)实时处理。控制系统往往有许多数据需要采集或输出。实时控制中有的数据难以估计何时需要交换。3)故障处理。计算机系统的故障往往随机发生,如电源断电、运算溢出、存储器出错等。采用中断技术,系统故障一旦出现,就能及时处理。4)实现人机交互:人和单片机交互一般采用键盘和按键,可以采用中断的方式实现,中断方式时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,PT0,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)内部中断源 定时器溢出中断源。定时器溢出中断源由内部定时器/计数器产生,属于内部中断。串行口中断源。串行口中断是由内部串行口中断源产生。,(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。在负跳变触发方式下,为保证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)串行接收中断标志。,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(LSB),(a)SFR赋值IE=0 x8c,(b)用位赋值EA1;CPU开中断ET11;定时/计数器1允许中断EX11;外中断T1允许中断,(2)中断优先级控制,MCS-51单片机有两个中断优先级:高级中断和低级中断。每一个中断源都可以通过编程确定为高优先级中断或低优先级中断。若CPU当前正在为低优先级中断服务,在开中断的条件下,它能被另一个高优先级中断请求所中断,转去为高级中断服务,再返回到被中断了的低级中断的服务程序,这即为中断嵌套。,中断嵌套过程,中断优先级寄存器IP,(MSB)BFH BEH BDH BCH BBH BAH B9H B8H(LSB),专用寄存器IP为中断优先级寄存器,用户可用软件设定 相应位为1,对应的中断源被设置为高优先级,相应位为0,对应的中断源被设置为低优先级 系统复位时,均为低优先级 该寄存器可以位寻址,自然优先权顺序,MCS-51系列单片机中断响应原则:,1)高级中断请求可以中断正在执行的低级中断。2)同级或低级中断请求不能中断正在执行的中断。3)多个中断源同时向CPU申请中断,首先响应优先级别最高的中断请求;多个同级中断源同时向CPU申请中断,CPU通过内部硬件查询,按自然优先级确定优先响应哪一个中断请求。,解:IP的首3位没用,可任意取值,设为000,后面根据要求写就可以了。,实例3-2 设有如下要求,将T0、外中断1设为高优先级,其它为低优先级,求IP的值。,IP的值就是06H。,实例3-3 在上例中,如果5个中断请求同时发生,求中断响应的次序。,解:响应次序为定时器0外中断1外中断0实时器1串行中断。,(1)中断响应的时序,3.中断响应,(2)CPU响应中断的条件,没有同级或高优先级的中断正在处理;正在执行指令必须执行完最后一个机器周期(换言之,正在执行的指令完成前,任何中断请求都得不到响应);若正在RETI或读写IE或IP寄存器,则必须执行完当前指令的下一条其它指令之后才会响应。,单片机一旦响应中断请求,就由硬件完成以下功能:自动清除相应的中断请求标志位(串行口中断请求标志RI和TI除外);保护断点和现场,把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC,从而转入相应的中断服务程序。结束中断服务程序,恢复断点和现场,并返回响应中断之前的程序继续执行。,(3)CPU响应中断的过程,3.1.3 中断服务函数,C51编译器支持在C语言源程序中直接编写8051单片机的中断服务函数,从而减轻使用汇编语言的繁琐程度,提高了开发效率。,1.中断服务函数的一般形式,void 函数名(void)interrupt m unsing n,代表中断号,是一个常量,取值范围是0-31。C51编译器允许32个中断,从8m+3处产生中断向量,代表中断函数将要选择使用的寄存器组,也是一个常量,取值范围是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,则在进入中断服务函数的时候,中断函数中所用到的全部工作寄存器都要入栈,函数返回之前所有的寄存器内容出栈;如果使用using,则在进入中断服务函数的时候,只将当前工作寄存器组入栈,用using指定的工作寄存器组的内容不变也不入栈,函数返回之前将被保护的工作寄存器组出栈。,提 示,(1)使用using可缩减中断服务函数的入栈操作时间,因此可以使中断得到更及时的处理;但同时,使用using要十分小心,要保证寄存器组切换在所控制的区域内,否则会导致错误。(2)中断函数的编写包括两部分:中断源的初始化函数和中断服务函数。概括地说,中断源初始化函数就是对中断源所需要的一些变量进行设置,其形式与其他普通函数一样一般在主函数里实现;而中断服务函数就是规定系统在发生相应的中断的时候要执行哪些操作。(3)中断函数的调用过程与一般函数调用相似,但一般函数是程序中事先安排好的;而何时调用中断函数事先无法确定,调用中断函数的过程是由硬件自动完成的。,中断函数的类型及参数都为void类型,中断函数既不能进行参数传递,也没有返回值,因此,中断函数的形式参数列表和函数类型标识符名均为void。定时器0的定义方式:void intr_time0(void)interrupt 1,2.中断函数的编写,(1)中断的初始化所谓初始化,是对将要用到的MCS-51系列单片机内部部件或扩展芯片进行初始工作状态设定。针对中断来说,就是对IE,IP进行初始化编程,实现如下要求:1)CPU开中断与关中断。2)某个中断源中断请求的允许和禁止(屏蔽)。3)各中断源优先级别的设定。4)外部中断请求的触发方式。,(2)中断服务函数,中断服务函数就是规定系统在发生相应的中断的时候要执行哪些操作。,实例,【实例3-4】P1.3外接一个扬声器,当与P3.3(外部中断1输入引脚)变为低电平时,扬声器发声。,实例3-4,#includesbit p13=P13;void main()IT0=0;EA=1;EX1=1;p13=1;while(1);void isr_int1()interrupt 2int i;p13=p13;for(i=1000;i0;i-);,实例3-5:电平触发与跳变触发的比较,#include#includevoid serial_init();void isr_int0();main()serial_init();IT0=0;EA=1;EX0=1;while(1);,void isr_int0()interrupt 0 printf(External interrupt 0 respondedn);void serial_init()SCON=0X52;MOD=(TMOD,电平触发的输出情况,跳变触发输出情况,main()serial_init();IT0=1;EA=1;EX0=1;while(1);,案例4:蒸汽锅炉参数越限报警控制,液位上、下限SL1、SL2开关取自“色带指示报警仪”,分别接P1.3,P1.2。蒸汽压力下限SP开关接P1.1。炉堂温度上限ST开关接P1.0。P1.7P1.4输出接发光二极管,与4个参数对应,越限时则相应的LED点亮。,#includevoid isr_int0(void);main()IT0=0;EX0=1;EA=1;while(1),主函数(初始化),void isr_int0(void)interrupt 0 char temp1;P1=0 x0ff;temp1=P1;temp1=temp10;i-):,3.2 定时器/计数器,3.2.1 定时器/计数器的结构 定时器/计数器的工作方式,3.2.1 定时器/计数器的结构,可编程定时,通过对系统时钟脉冲计数而获得延时,MCS51定时/计数器的优点:可实现定时、计数功能,有利用实时控制不占用CPU时间定时精度高,修改方便,1.定时/计数器的组成,定时/计数器的结构框图,(1)结构组成部分,两个16位的二进制定时/计数器T0、T1T0/T1分别由两个8位的计数器组成,均属SFR寄存器T0由TH0、TL0构成,字节地址为8CH、8AHT1由TH1、TL1构成,字节地址为8DH、8BH;相关的控制寄存器方式寄存器TMOD控制寄存器TCON,定时功能 对片内机器周期进行计数,即每个机器周期产生一 个计数脉冲,计数加1。实时控制、实时采样、定时控制等。,(2)工作原理,(2)工作原理,计数功能 对片外从T0(P3.4)、T1(P3.5)引脚输入的外部脉冲信号进行计数,下降沿计数加1。计数频率为晶振频率的1/24。生产线上产品计数、检测电机转速等功能。,定时/计数器初值预置,初值X的计数方法(设最大值为 M,计数值为 N,初值为X,Tcy=12晶振频率)定时状态:XM定时时间/Tcy计数状态:XMN,要求检测到100个脉冲,发中断请求,通知CPU,选计数功能,计数初值为156,设定时/计数器为8位加1计数器,要求定时每隔100s时间,发一次中断请求(设机器周期1s),选定时功能,计数初值为156,2.方式控制寄存器TMOD,SFR寄存器,地址89H控制T0、T1的工作方式仅可字节寻址,T1方式控制,T0方式控制,定时器工作方式选择,M1和M0:工作方式选择位,功能选择及门控位,C/定时/计数功能选择位。为“0”,定时模式 为“1”,计数模式GATE:门控位,定义T1/T0的启动方式,GATE=0,非门控方式(内部启动):TR0/1=1,启动定时器工作;TR0/1=0,停止定时器工作。GATE=1,门控方式(外部启动)TR0/1=1且引脚INT0/1=1才启动。,3.状态控制寄存器TCON,SFR寄存器,地址88H即参与定时控制又参与中断控制与定时控制相关的有4位TF1/TF0:当T1/T0的计数器计数溢出时,该位置“1”;TR1/TR0:T1/T0运行控制位。软件将其置“1”时,启动T1/T0工作。,8FH 8EH 8DH 8CH 8BH 8AH 89H 88H,M1M0=00;作定时器:TMOD=00000000=00H作计数器:TMOD=00000100=04H13位计数器;TH:8位 TL:低5位,高3位不用。,3.2.2 定时器/计数器工作方式,1.工作方式0,方式0的工作原理,方式0的应用,计数初值最大计数值为213=8192定时时间:T=(213-T0的初值)Tcy 计数个数:S=213-T0的初值,定时器初始化编程,(1)向TMOD寄存器中写入工作方式控制字(2)向定时/计数器TH0、TL0(或TH1、TL1)装入初值(3)启动定时/计数器(置位TR0/TR1)(4)如采用中断方式,置位ET0(ET1)、EA、IP等中断寄存器,实例3-6:已知单片机晶振频率6MHz,利用T0的方式0在P1.0引脚输出周期为500us的方波,解:1)方波波形如图所示 2)TMOD初始化 00H 3)计数初值:计数初值=213-欲计数脉冲数=213-T/Tcy=213-250/2=1F83H=00011111100 00011B TH1=0 xFC,TL1=0 x03 4)TCON初始化,TR01,查询方式程序清单,#includesbit p10=P10;main()TMOD=0;TH0=0XFC;TL0=0X03;TR0=1;,while(1)while(TF0=0);p10=p10;TH0=0XFC;TL0=0X03;TF0=0;,中断方式程序清单,#includesbit p10=P10;void isr_t0();main()TMOD=0;TH0=0XFC;TL0=0X03;TR0=1;EA=1;ET0=1;while(1);,void isr_t0()interrupt 1 p10=p10;TH0=0XFC;TL0=0X03;,实例3-7 单片机晶振频率12MHz,利用T0的方式0实现1s延时,每隔1s钟使P1.0引脚翻转一次。,1)TMOD初始化 00H 2)计数初值:定时时间:tmax=81921us=8.192ms;取5ms 1秒延时实现:5ms延时200次 T0 的 初值:=213-5000s/1s=3192=0C78H=000 01100011 11000B TH0=63H,TL0=18H,源程序清单:,#includevoid isr_time0(void);sbit P10=P10;unsigned int counter=200;void main()TMOD=0X00;TH0=0X63;TL0=0X18;TR0=1;EA=1;ET0=1;while(1);,void isr_time0()interrupt 1 counter-;if(!counter)counter=200;P10=P10;TH0=0X63;TL0=0X18;,2.工作方式1,M1M0=01作定时器:TMOD=00000000=01H作计数器:TMOD=00000100=05H16位计数器,逻辑结构框图如下:,实例3-8 利用T0的方式1完成例3-6的功能(即在P1.0引脚输出周期为500us的方波)。,1)TMOD初始化 01H 2)计数初值:计数初值=216-欲计数脉冲数=216-T/Tcy=216-250/2=65411=FF83H 因此TH1=0 xFF,TL1=0 x833)TCON初始化,TR014)开中断:EA=1;ET0=1,源程序清单,/主函数#includevoid isr_time0(void);sbit P10=P10;void main()TMOD=0X01;TH0=-1258;TL0=-125;TR0=1;EA=1;ET0=1;while(1);,小技巧:实际应用中,在利用C51编程时,计数初值可以直接用如下方法表示:TH0=-1258;/取计数初值的高8位(0FFH)TL0=-125;/自动取计数初值的低8位(83H)不需要计算出具体的计数初值。但读者要清楚计算计数初值的原理。,/中断服务函数void isr_time0(void)interrupt 1 P10=P10;TH0=-1258;TL0=-125;,3.工作方式2,M1M0=10 作定时器:TMOD=02H 作计数器:TMOD=06H自动重置初值的8位计数器,逻辑结构如图:,案例5 啤酒生产线自动装箱控制,某啤酒自动生产线,每生产12瓶执行装箱操作,将生产出的啤酒自动装箱,用单片机实现该控制要求。,解:如果啤酒生产线上装有传感装置,每检测一瓶啤酒就向单片机发送一个脉冲信号,使用计数功能就可实现该控制要求。1)TMOD初始化 06H2)计数初值:TH0TL0 28120F4H,程序清单,#includevoid isr_time0(void);void main()TMOD=0 x06;TL0=0Xf4;TH0=0Xf4;TR0=1;ET0=1;EA=1;while(1);,void isr_time()interrupt 1 int i,time=600;P37=0;/驱动电机转动 while(time-)/假设装箱时间固定 for(i=500;i0;i-);P37=1;/装箱结束电机停止转动,4.工作方式3,仅作定时器用!,4.工作方式3,M1M0=11T0、T1的设置和使用不同T0两个8位的计数器TL0:使用T0原有控制资源,功能与方式0、1相同。TH0:借用T1的TR1、TF1,只能对片内机器周期脉冲计数,作8位定时器。T0初值计算完全同方式 2。,T0工作方式3时T1的工作,T1仍然可工作于方式02,C/控制位仍可使T1工作在定时器或计数器方式,由于其TR1、TF1被T0的TH0占用,因而计数溢出时只能将输出结果送至串行口,即用作串行口波特率发生器。T1工作于方式2,因定时初值能自动恢复,用作波特率发生器。因定时器1的TR1被占用,其启动和关闭比较特殊:当设置好工作方式时,T1自动开始运行。送入一个设置定时器1为方式3的方式字即可停止T1。,实例3-9 已知系统晶振12MHz,试用定时器0的方式3实现1s的延时(设每秒让P0.0所接的发光二极管闪烁一次)。,TMOD初始化 07H TH0作为定时器,定时时间250us;初值28250=06HTL0作为计数器,计数200次;初值28200=38H因250s*200=50ms,则需引进一个变量,TL0计数满后该变量加1,直至20则为1s,主函数,#includesbit P00=P00;sbit P34=P34;unsigned char count;void delay();main()TMOD=7;TH0=0 x06;TL0=0 x38;TR0=1;TR1=1;,while(1)P00=P00;delay();,延时函数,void delay()count=0;while(count20)while(TF0=0)while(TF1=0);P34=0;TH0=6;TF1=0;P34=1;TL0=0 x38;TF0=0;count+;,案例6 以定时方式控制简单流水灯,已知系统晶振6MHz,采用定时器T0的工作方式1实现延时,控制P0口的8只发光二极管以100ms的间隔循环点亮。,定时器/计数器控制流水灯,定时器T0初值:定时时间:tmax=655362s=131.072,取100msT0 的 初值:=216-100000s/2s=15536=3CB0H TMOD=0000 0001B=01H,主函数:,#include#includevoid isr_time0(void);unsigned char cword=0 x01;void main()TMOD=1;TH0=-500008;TL0=-50000;TR0=1;EA=1;ET0=1;P0=cword;while(1);,中断服务函数,void isr_time0()interrupt 1 TH0=-500008;TL0=-50000;cword=_crol_(cword,1);P0=cword;,小技巧:虽然C51没有提供循环左移的指令,但可以通过调用_crol_()函数来实现,但不要忘记包含intrins.h头文件,详细内容参见附录2,要注意调用左移、右移时,数据类型不一样,则调用的函数名不一样。,任务实施,已知系统晶振12MHz,联合使用定时器T0、T1实现延时(1)控制P0口的8只发光二极管以1s的间隔循环点亮。(2)按自定时间间隔从左至右循环点亮发光二极管,点亮最右边的发光二极管后,再从右至左循环点亮。,知识梳理与总结,本任务通过利用定时器来控制流水灯的延时,介绍了MCS-51系列单片机的中断系统和定时器/计数器的工作原理,让读者学会利用中断系统和定时器/计数器进行单片机应用系统的设计。本任务需要重点掌握的内容包括:(1)MCS-51系列单片机五个中断源的标志,两个外部中断源的触发方式;(2)单片机控制中断开关、优先级的两个寄存器IE、IP;(3)中断响应过程及中断服务函数的编写方法;(4)MCS-51系列单片机定时器/计数器结构及控制定时器/计数器工作的两个特殊功能寄存器TMOD、TCON;(5)利用定时器/计数器的4种工作方式编写应用程序,特别是方式字和计数初值的确定方法。,任务作业:,P99T3-1T3-4,

    注意事项

    本文(任务三流水灯定时控制.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开