任务三--流水灯定时控制课件

上传人:2127513****773577... 文档编号:241310133 上传时间:2024-06-17 格式:PPT 页数:85 大小:1.36MB
返回 下载 相关 举报
任务三--流水灯定时控制课件_第1页
第1页 / 共85页
任务三--流水灯定时控制课件_第2页
第2页 / 共85页
任务三--流水灯定时控制课件_第3页
第3页 / 共85页
点击查看更多>>
资源描述
教学导航教学导航教学导航1任务任务3 以定时方式控制流水灯以定时方式控制流水灯任务单任务单任务单2任务任务3 以定时方式控制流水灯以定时方式控制流水灯任务三任务三 流水灯定时控制流水灯定时控制3.1 中断系统3.2 定时器/计数器任务三 流水灯定时控制3任务任务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.1 中断系统3.1.1 中断的概念与作用4任务任务3 以定时方式控制流水灯以定时方式控制流水灯 3.1.1 3.1.1 中断的概念与作用中断的概念与作用外部设备是微机的重要组成部分,而微机和外部设备之间不是直接相连的,而是通过不同的接口电路来达到彼此间的信息传送的。CPU与外部交换信息的方式:(1)程序控制传送方式(2)中断传送方式(3)直接存储器存取(DMA)方式 3.1.1 中断的概念与作用外部设备是微机5任务任务3 以定时方式控制流水灯以定时方式控制流水灯1.1.中断的定义中断的定义 你正在专心看书,突然电话铃响,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。日常中断的例子日常中断的例子1.中断的定义 你正在专心看书,突然电话铃响,于6任务任务3 以定时方式控制流水灯以定时方式控制流水灯什么是中断?什么是中断?中中断断是是指指计计算算机机在在执执行行某某段段程程序序的的过过程程中中,由由于于计计算算机机系系统统内内、外外的的某某种种原原因因,暂暂时时中中止止原原程程序序的的执执行行,转转去去执执行行相相应应的的处处理理程程序序,并并中中断断服服务务程程序序执执行行完完后后,再再回回来来继继续续执执行行被被中中断断的的原原程序的过程。程序的过程。什么是中断?中断是指计算机在执行某段程序的过程中,7任务任务3 以定时方式控制流水灯以定时方式控制流水灯2.2.中断的作用中断的作用1)CPU与外设并行工作。解决与外设并行工作。解决CPU速度快、外设速度速度快、外设速度慢的矛盾。慢的矛盾。2)实时处理。控制系统往往有许多数据需要采集或输实时处理。控制系统往往有许多数据需要采集或输出。实时控制中有的数据难以估计何时需要交换。出。实时控制中有的数据难以估计何时需要交换。3)故障处理。计算机系统的故障往往随机发生,如电故障处理。计算机系统的故障往往随机发生,如电源断电、运算溢出、存储器出错等。采用中断技术,系统源断电、运算溢出、存储器出错等。采用中断技术,系统故障一旦出现,就能及时处理。故障一旦出现,就能及时处理。4)实现人机交互:人和单片机交互一般采用键盘和)实现人机交互:人和单片机交互一般采用键盘和按键,可以采用中断的方式实现,中断方式时按键,可以采用中断的方式实现,中断方式时CPU执行效执行效率高,而且可以保证人机交互的实时性,故中断方式在人率高,而且可以保证人机交互的实时性,故中断方式在人机交互中得到广泛应用。机交互中得到广泛应用。2.中断的作用1)CPU与外设并行工作。解决CPU速度快8任务任务3 以定时方式控制流水灯以定时方式控制流水灯3.1.2 MCS-513.1.2 MCS-51中断系统中断系统中断系统是指能实现中断功能的那部分硬件电路中断系统是指能实现中断功能的那部分硬件电路和软件程序。和软件程序。对于对于MCS-51单片机,大部分中断电路都是集成单片机,大部分中断电路都是集成在芯片内部的,只有和中断输入线上的中断请求在芯片内部的,只有和中断输入线上的中断请求信号产生电路才分散在各中断源电路或接口芯片信号产生电路才分散在各中断源电路或接口芯片电路里。电路里。3.1.2 MCS-51中断系统中断系统是指能实现中断功能9任务任务3 以定时方式控制流水灯以定时方式控制流水灯 IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然优先级自然优先级矢量地址高级中断请求高级中断请求自然优先级自然优先级矢量地址低级中断请求低级中断请求PX0PT0PX1PT1PSIEIP 中断标志位中断源允许总允许EA中断优先级3.1.2 MCS-513.1.2 MCS-51单片机中断系统单片机中断系统 IE0TCONSCONINT0 IT0=0 IT0=1IN10任务任务3 以定时方式控制流水灯以定时方式控制流水灯1.MCS-511.MCS-51的中断源和中断标志的中断源和中断标志中断源是指中断源是指引起中断的事件。引起中断的事件。在在单单片片机机中中,中中断断源源是是指指引引起起中中断断原原因因的的设设备备或或事事件件,或或发发出出中中断断请请求求信信号号的的源源泉泉。通通常常有有I/O设设备备、实实时时控控制制系系统统中中的的随随机机参参数数和和信信息息故故障障源源等。等。1.MCS-51的中断源和中断标志中断源是指引起中断的事件11任务任务3 以定时方式控制流水灯以定时方式控制流水灯1)外部中断源:MCS-51系列单片机有2个外中断源,称为外中断0和1,经由单片机上的P3.2、P3.3这两个外部引脚引入,为 、。2)内部中断源 定时器溢出中断源。定时器溢出中断源由内部定时器/计数器产生,属于内部中断。串行口中断源。串行口中断是由内部串行口中断源产生。(1)(1)中断源中断源1)外部中断源:MCS-51系列单片机有2个外中断源,称为外12任务任务3 以定时方式控制流水灯以定时方式控制流水灯1)TCON中的中断标志位中的中断标志位(2)(2)中断请求标志中断请求标志(MSB)8FH 8EH 8DH 8CH 8BH 8AH 89H 88H(LSB)外部中断外部中断INT0中断标志中断标志位位(TCON.1):IE01,外部中断1向CPU申请中断 外部中断外部中断INT0触发方式触发方式控制位控制位(TCON.0):IT0=0,电平触发方式 IT0=1,下降沿触发方式注意:该寄存器可以位寻址。1)TCON中的中断标志位(2)中断请求标志(MSB)8F13任务任务3 以定时方式控制流水灯以定时方式控制流水灯1)TCON的中断标志位的中断标志位 TCON8FH 8EH 8DH 8CH 8BH 8AH 89H 88HT0溢出中断标志溢出中断标志(TCON.5):T0启动计数后,计满溢出由硬件置位TF0=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。1)TCON的中断标志位 TCON8FH 8EH 15任务任务3 以定时方式控制流水灯以定时方式控制流水灯 2)SCON的中断标志位的中断标志位(MSB)9FH 9EH 9DH 9CH 9BH 9AH 99H 98H(LSB)注意:该寄存器可以位寻址!RI(SCON.0)串行接收中断标志。TI(SCON.1)串行发送中断标志。2)SCON的中断标志位(MSB)9FH 9EH16任务任务3 以定时方式控制流水灯以定时方式控制流水灯(1)中中断断允允许许控控制制中断允许寄存器IE 2.中断控制中断控制(MSB)AFH AEH ADH ACH ABH AAH A9H A8H(LSB)中断允许寄存器IE对中断的开放和关闭实行两级控制。所谓两级控制,就是有一个总开、关中断控制位EA,当EA0时,则屏蔽所有的中断申请,即任何中断申请都不接受;当EA1时,CPU开放中断,但五个中断源还要由IE的低5位的各对应控制位的状态进行中断允许控制。(1)中断允许控制中断允许寄存器IE 2.中断控制(17任务任务3 以定时方式控制流水灯以定时方式控制流水灯实例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-1如果我们要设置外中断1、定时器1中断允许,其它不18任务任务3 以定时方式控制流水灯以定时方式控制流水灯(2 2)中断优先级控制)中断优先级控制MCS-51单片机有两个中断优先级:单片机有两个中断优先级:高级中断和和低级中断。每一个中断源都可以通过编程确定为高优先级中断每一个中断源都可以通过编程确定为高优先级中断或低优先级中断。或低优先级中断。若若CPU当前正在为低优先级中断服务,在开中断的当前正在为低优先级中断服务,在开中断的条件下,它能被另一个高优先级中断请求所中断,条件下,它能被另一个高优先级中断请求所中断,转去为高级中断服务,再返回到被中断了的低级中转去为高级中断服务,再返回到被中断了的低级中断的服务程序,这即为断的服务程序,这即为中断嵌套。(2)中断优先级控制MCS-51单片机有两个中断优先级:高级19任务任务3 以定时方式控制流水灯以定时方式控制流水灯中断嵌套过程中断嵌套过程CPU执行执行高级中断高级中断服务服务高级中断请求高级中断请求返回低级中断程序返回低级中断程序返回主程序返回主程序响应高级中断响应高级中断低级中断请求低级中断请求CPU执行执行低级中断低级中断响应低级中断响应低级中断CPU在执行在执行的主程序的主程序中断嵌套过程CPU执行高级中断服务高级中断请求返回低级中断程20任务任务3 以定时方式控制流水灯以定时方式控制流水灯中断优先级寄存器中断优先级寄存器IPIP(MSB)BFH BEH BDH BCH BBH BAH B9H B8H(LSB)专用寄存器专用寄存器IP为中断优先级寄存器,用户可用软件为中断优先级寄存器,用户可用软件设定设定 相应位为相应位为1,对应的中断源被设置为,对应的中断源被设置为高优先级高优先级,相,相应位为应位为0,对应的中断源被设置为低优先级,对应的中断源被设置为低优先级 系统复位时,均为低优先级系统复位时,均为低优先级 该寄存器可以位寻址该寄存器可以位寻址中断优先级寄存器IP(MSB)BFH BEH 21任务任务3 以定时方式控制流水灯以定时方式控制流水灯自然优先权顺序自然优先权顺序 中中 断断 源源同级内优先权排列同级内优先权排列外部中断0中断(IE0)定时器/计数器0中断(TF0)外部中断1中断(IE1)定时器/计数器1中断(TF1)串行接口中断(TI/RI)最 高 最 低自然优先权顺序 中 断 源同级内优先权排列外部中断0中断22任务任务3 以定时方式控制流水灯以定时方式控制流水灯MCS-51系列单片机中断响应原则:系列单片机中断响应原则:1)高级中断请求可以中断正在执行的低级中断。高级中断请求可以中断正在执行的低级中断。2)同级或低级中断请求不能中断正在执行的中断。同级或低级中断请求不能中断正在执行的中断。3)多多个个中中断断源源同同时时向向CPU申申请请中中断断,首首先先响响应应优优先先级级别别最最高高的的中中断断请请求求;多多个个同同级级中中断断源源同同时时向向CPU申申请请中中断断,CPU通通过过内内部部硬硬件件查查询询,按按自自然然优优先先级级确确定定优先响应哪一个中断请求。优先响应哪一个中断请求。MCS-51系列单片机中断响应原则:1)高级中断请求可以中断23任务任务3 以定时方式控制流水灯以定时方式控制流水灯解:IP的首3位没用,可任意取值,设为000,后面根据要求写就可以了。位位D7D6D5D4D3D2D1D0符号符号XXXPSPT1PX1PT0PX0值值00000110实例实例3-2 3-2 设有如下要求,将设有如下要求,将T0T0、外中断、外中断1 1设为高优先级,设为高优先级,其它为低优先级,求其它为低优先级,求IPIP的值。的值。IP的值就是的值就是06H。解:IP的首3位没用,可任意取值,设为000,后面根据要求写24任务任务3 以定时方式控制流水灯以定时方式控制流水灯实例实例3-3 3-3 在上例中,如果在上例中,如果5 5个中断请求同时发生,个中断请求同时发生,求中断响应求中断响应的次序。的次序。解:响应次序为解:响应次序为定时器定时器0外中断外中断1外中断外中断0实时器实时器1串行串行中断。中断。位位D7D6D5D4D3D2D1D0符号符号XXXPSPT1PX1PT0PX0值值00000110实例3-3 在上例中,如果5个中断请求同时发生,求中断响25任务任务3 以定时方式控制流水灯以定时方式控制流水灯(1)中断响应的时序)中断响应的时序3.3.中断响应中断响应(1)中断响应的时序3.中断响应26任务任务3 以定时方式控制流水灯以定时方式控制流水灯(2 2)CPUCPU响应中断的条件响应中断的条件 没有同级或高优先级的中断正在处理;正在执行指令必须执行完最后一个机器周期(换言之,正在执行的指令完成前,任何中断请求都得不到响应);若正在RETI或读写IE或IP寄存器,则必须执行完当前指令的下一条其它指令之后才会响应。(2)CPU响应中断的条件 没有同级或高优先级的27任务任务3 以定时方式控制流水灯以定时方式控制流水灯单单片片机机一一旦旦响响应应中中断断请请求求,就就由由硬硬件件完完成成以以下下功功能能:自自动动清清除除相相应应的的中中断断请请求求标标志志位位(串串行行口口中中断请求标志断请求标志RI和和TI除外)除外);保保护护断断点点和和现现场场,把把被被响响应应的的中中断断源源所所对对应应的的中中断断服服务务程程序序的的入入口口地地址址(中中断断矢矢量量)送送入入PC,从从而转入相应的中断服务程序。而转入相应的中断服务程序。结结束束中中断断服服务务程程序序,恢恢复复断断点点和和现现场场,并并返返回回响应中断之前的程序继续执行。响应中断之前的程序继续执行。(3 3)CPUCPU响应中断的过程响应中断的过程单片机一旦响应中断请求,就由硬件完成以下功能:自28任务任务3 以定时方式控制流水灯以定时方式控制流水灯3.1.3 3.1.3 中断服务函数中断服务函数C51编译器支持在编译器支持在C语言源程序中直接编写语言源程序中直接编写8051单片机的中断服务函数,从而减轻使用汇编语言单片机的中断服务函数,从而减轻使用汇编语言的繁琐程度,提高了开发效率。的繁琐程度,提高了开发效率。3.1.3 中断服务函数C51编译器支持在C语言源程序中直29任务任务3 以定时方式控制流水灯以定时方式控制流水灯1.1.中断服务函数的一般形式中断服务函数的一般形式void 函数名(void)interrupt m unsing n代表中断号,是一个常量,取值范围是0-31。C51编译器允许32个中断,从8m+3处产生中断向量 代表中断函数将要选择使用的寄存器组,也是一个常量,取值范围是03。1.中断服务函数的一般形式void 函数名(void)i30任务任务3 以定时方式控制流水灯以定时方式控制流水灯关于关于USING的说明的说明using不仅可以用于中断服务函数的定义中,也可以不仅可以用于中断服务函数的定义中,也可以用于普通的内部函数,但不能用于外部函数。用于普通的内部函数,但不能用于外部函数。就中断服务函数而言就中断服务函数而言如果不使用using,则在进入中断服务函数的时候,中断函数中所用到的全部工作寄存器都要入栈,函数返回之前所有的寄存器内容出栈;如果使用using,则在进入中断服务函数的时候,只将当前工作寄存器组入栈,用using指定的工作寄存器组的内容不变也不入栈,函数返回之前将被保护的工作寄存器组出栈。关于USING的说明using不仅可以用于中断服务函数的定义32任务任务3 以定时方式控制流水灯以定时方式控制流水灯提提 示示(1)使用using可缩减中断服务函数的入栈操作时间,因此可以使中断得到更及时的处理;但同时,使用using要十分小心,要保证寄存器组切换在所控制的区域内,否则会导致错误。(2)中断函数的编写包括两部分:中断源的初始化函数和中断服务函数。概括地说,中断源初始化函数就是对中断源所需要的一些变量进行设置,其形式与其他普通函数一样一般在主函数里实现;而中断服务函数就是规定系统在发生相应的中断的时候要执行哪些操作。(3)中断函数的调用过程与一般函数调用相似,但一般函数是程序中事先安排好的;而何时调用中断函数事先无法确定,调用中断函数的过程是由硬件自动完成的。提 示(1)使用using可缩减中断服务函数的入栈操作时33任务任务3 以定时方式控制流水灯以定时方式控制流水灯中断函数的类型及参数都为中断函数的类型及参数都为voidvoid类型类型中断函数既不能进行参数传递,也没有返回值,因中断函数既不能进行参数传递,也没有返回值,因此,中断函数的形式参数列表和函数类型标识符名此,中断函数的形式参数列表和函数类型标识符名均为均为void。定时器定时器0的定义方式:的定义方式:void intr_time0(void)interrupt 1 中断函数的类型及参数都为void类型中断函数既不能进行参数传34任务任务3 以定时方式控制流水灯以定时方式控制流水灯2.2.中断函数的编写中断函数的编写(1)中断的初始化所谓初始化,是对将要用到的MCS-51系列单片机内部部件或扩展芯片进行初始工作状态设定。针对中断来说,就是对IE,IP进行初始化编程,实现如下要求:1)CPU开中断与关中断。2)某个中断源中断请求的允许和禁止(屏蔽)。3)各中断源优先级别的设定。4)外部中断请求的触发方式。2.中断函数的编写(1)中断的初始化35任务任务3 以定时方式控制流水灯以定时方式控制流水灯(2)(2)中断服务函数中断服务函数中断服务函数就是规定系统在发生相应的中断的中断服务函数就是规定系统在发生相应的中断的时候要执行哪些操作。时候要执行哪些操作。(2)中断服务函数中断服务函数就是规定系统在发生相应的中断的36任务任务3 以定时方式控制流水灯以定时方式控制流水灯实例实例【实例【实例3-4】P1.3外接一个扬声器,当与外接一个扬声器,当与P3.3(外(外部中断部中断1输入引脚)变为低电平时,扬声器发声。输入引脚)变为低电平时,扬声器发声。实例【实例3-4】P1.3外接一个扬声器,当与P3.3(外部37任务任务3 以定时方式控制流水灯以定时方式控制流水灯实例实例3-43-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-4#include38任务任务3 以定时方式控制流水灯以定时方式控制流水灯实例实例3-5: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&0X0F)|0X20;TH1=221;TR1=1;实例3-5:电平触发与跳变触发的比较#includereg39任务任务3 以定时方式控制流水灯以定时方式控制流水灯电平触发的输出情况电平触发的输出情况电平触发的输出情况40任务任务3 以定时方式控制流水灯以定时方式控制流水灯跳变触发输出情况跳变触发输出情况main()serial_init();IT0=1;EA=1;EX0=1;while(1);跳变触发输出情况41任务任务3 以定时方式控制流水灯以定时方式控制流水灯案例案例4 4:蒸汽锅炉参数越限报警控制:蒸汽锅炉参数越限报警控制液位上、下限SL1、SL2开关取自“色带指示报警仪”,分别接P1.3,P1.2。蒸汽压力下限SP开关接P1.1。炉堂温度上限ST开关接P1.0。P1.7P1.4输出接发光二极管,与4个参数对应,越限时则相应的LED点亮。案例4:蒸汽锅炉参数越限报警控制液位上、下限SL1、SL2开42任务任务3 以定时方式控制流水灯以定时方式控制流水灯#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-):#include主函数(初始化)void 43任务任务3 以定时方式控制流水灯以定时方式控制流水灯3.2 3.2 定时器定时器/计数器计数器3.2.1 3.2.1 定时器定时器/计数器的结构计数器的结构3.2.23.2.2 定时器定时器/计数器的计数器的工作工作方式方式3.2 定时器/计数器3.2.1 定时器/计数器的结构44任务任务3 以定时方式控制流水灯以定时方式控制流水灯3.2.1 3.2.1 定时器定时器/计数器的结构计数器的结构可可编编程程定定时时,通通过过对对系系统统时时钟钟脉脉冲冲计计数数而而获获得得延延时时,MCS51定时定时/计数器的优点:计数器的优点:可实现定时、计数功能,有利用实时控制不占用CPU时间定时精度高,修改方便3.2.1 定时器/计数器的结构可编程定时,通过对系统时45任务任务3 以定时方式控制流水灯以定时方式控制流水灯1.1.定时定时/计数器的组成计数器的组成定时/计数器的结构框图 微微处处理理器器TH1TL1TH0TL0TCONTMOD工作工作方式方式工作工作方式方式T1T0P3.5(T1)P3.4(T0)1.定时/计数器的组成定时/计数器的结构框图 微TH1TL46任务任务3 以定时方式控制流水灯以定时方式控制流水灯(1)(1)结构组成部分结构组成部分 两个16位的二进制定时/计数器T0、T1T0/T1分别由两个8位的计数器组成,均属SFR寄存器T0由TH0、TL0构成,字节地址为8CH、8AHT1由TH1、TL1构成,字节地址为8DH、8BH;相关的控制寄存器方式寄存器TMOD控制寄存器TCON(1)结构组成部分 两个16位的二进制定时/计数器T0、47任务任务3 以定时方式控制流水灯以定时方式控制流水灯定时功能定时功能 对片内机器周期进行计数,即每个机器周期对片内机器周期进行计数,即每个机器周期产生一产生一 个计数脉冲,计数加个计数脉冲,计数加1。实时控制、实时采样、定时控制等。实时控制、实时采样、定时控制等。振荡器振荡器12 加加 1计数器计数器TFx申请申请中断中断TX端端C/T=0C/T=1控制信号控制信号TRx(2 2)工作原理)工作原理定时功能 振荡器12 加 1TFx申请中断TX端C/48任务任务3 以定时方式控制流水灯以定时方式控制流水灯(2 2)工作原理)工作原理计数功能计数功能 对片外从对片外从T0(P3.4)、)、T1(P3.5)引脚输入的外)引脚输入的外部脉冲信号进行计数,下降沿计数加部脉冲信号进行计数,下降沿计数加1。计数频率为。计数频率为晶振频率的晶振频率的1/24。生产线上产品计数、检测电机转速等功能。生产线上产品计数、检测电机转速等功能。振荡器振荡器12 加加 1计数器计数器TFx申请申请中断中断TX端端C/T=0C/T=1控制信号控制信号TRx(2)工作原理计数功能振荡器12 加 1TFx申请中断T49任务任务3 以定时方式控制流水灯以定时方式控制流水灯定时定时/计数器初值预置计数器初值预置初值X的计数方法(设最大值为(设最大值为 M,计数值为计数值为 N,初值为初值为X,Tcy=12晶振频率)晶振频率)定时状态:XM定时时间/Tcy计数状态:XMN要求检测到100个脉冲,发中断请求,通知CPU,选计数功能,计数初值为156设定时/计数器为8位加1计数器,要求定时每隔100s时间,发一次中断请求(设机器周期1s),选定时功能,计数初值为156定时/计数器初值预置初值X的计数方法要求检测到100个脉冲,50任务任务3 以定时方式控制流水灯以定时方式控制流水灯2.2.方式控制寄存器方式控制寄存器TMODTMODSFR寄存器,地址89H控制T0、T1的工作方式仅可字节寻址 T1方式控制 T0方式控制2.方式控制寄存器TMODSFR寄存器,地址89H T1方51任务任务3 以定时方式控制流水灯以定时方式控制流水灯定时器工作方式选择定时器工作方式选择M1和和M0:工作方式选择位:工作方式选择位 M1 M0方式方式说明说明0 0013位计数器(位计数器(THTH的高的高8 8位和位和TLTL的低的低5 5位位)0 1116位计数器位计数器1 02自动重装入初值的自动重装入初值的8 8位计数器位计数器1 13定时器定时器0 0:分成两个独立的:分成两个独立的8 8位计数器位计数器定时器定时器1 1:停止计数停止计数定时器工作方式选择M1和M0:工作方式选择位 M1 M0方式52任务任务3 以定时方式控制流水灯以定时方式控制流水灯功能选择及门控位功能选择及门控位C/定时/计数功能选择位。为“0”,定时模式 为“1”,计数模式GATE:门控位,定义T1/T0的启动方式,GATE=0,非门控方式(内部启动):TR0/1=1,启动定时器工作;TR0/1=0,停止定时器工作。GATE=1,门控方式(外部启动)TR0/1=1且引脚INT0/1=1才启动。功能选择及门控位C/定时/计数功能选择位。53任务任务3 以定时方式控制流水灯以定时方式控制流水灯3.状态控制寄存器状态控制寄存器TCONSFR寄存器,地址寄存器,地址88H即参与定时控制又参与中断控制即参与定时控制又参与中断控制与定时控制相关的有与定时控制相关的有4位位TF1/TF0:当当T1/T0的的计计数数器器计计数数溢溢出出时时,该该位位置置“1”;TR1/TR0:T1/T0运运行行控控制制位位。软软件件将将其其置置“1”时,启动时,启动T1/T0工作。工作。8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 3.状态控制寄存器TCONSFR寄存器,地址88H8FH 54任务任务3 以定时方式控制流水灯以定时方式控制流水灯M1M0=00;作定时器:TMOD=00000000=00H作计数器:TMOD=00000100=04H13位计数器;位计数器;TH:8位 TL:低5位,高3位不用。3.2.2 定时器定时器/计数器工作方式计数器工作方式 1.工作方式工作方式0M1M0=00;3.2.2 定时器/计数器工作方式 1.55任务任务3 以定时方式控制流水灯以定时方式控制流水灯方式方式0的工作原理的工作原理方式0的工作原理56任务任务3 以定时方式控制流水灯以定时方式控制流水灯方式方式0的应用的应用计数初值最大计数值为213=8192定时时间:T=(213-T0的初值)Tcy 计数个数:S=213-T0的初值 方式0的应用计数初值57任务任务3 以定时方式控制流水灯以定时方式控制流水灯定时器初始化编程定时器初始化编程(1)向TMOD寄存器中写入工作方式控制字(2)向定时/计数器TH0、TL0(或TH1、TL1)装入初值(3)启动定时/计数器(置位TR0/TR1)(4)如采用中断方式,置位ET0(ET1)、EA、IP等中断寄存器定时器初始化编程(1)向TMOD寄存器中写入工作方式控制字58任务任务3 以定时方式控制流水灯以定时方式控制流水灯实例实例3-63-6:已知单片机晶振频率:已知单片机晶振频率6MHz6MHz,利用,利用T0T0的方的方式式0 0在在P1.0P1.0引脚输出周期为引脚输出周期为500500usus的方波的方波解:解:1)方波波形如图所示)方波波形如图所示 2)TMOD初始化初始化 00H 3)计数初值:)计数初值:计数初值计数初值=213-欲计数脉冲数欲计数脉冲数=213-T/Tcy =213-250/2=1F83H =00011111100 00011B TH1=0 xFC,TL1=0 x03 4)TCON初始化,初始化,TR01实例3-6:已知单片机晶振频率6MHz,利用T0的方式0在P59任务任务3 以定时方式控制流水灯以定时方式控制流水灯查询方式程序清单查询方式程序清单#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;查询方式程序清单#incl60任务任务3 以定时方式控制流水灯以定时方式控制流水灯中断方式程序清单中断方式程序清单#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;中断方式程序清单#includ61任务任务3 以定时方式控制流水灯以定时方式控制流水灯实例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实例3-7 单片机晶振频率12MHz,利用T0的方式0实现162任务任务3 以定时方式控制流水灯以定时方式控制流水灯源程序清单:源程序清单:#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;源程序清单:#includevoid is63任务任务3 以定时方式控制流水灯以定时方式控制流水灯2.2.工作方式工作方式1 1M1M0=01作定时器:TMOD=00000000=01H作计数器:TMOD=00000100=05H16位计数器,逻辑结构框图如下:位计数器,逻辑结构框图如下:振荡器振荡器12TF0中断中断T0C/T=0C/T=1GATEINT0端端TR0 TH0(8位位)TL0(8位位)控制控制l&lEAET0&2.工作方式1M1M0=01振荡器12TF0中断T0C/64任务任务3 以定时方式控制流水灯以定时方式控制流水灯实例实例3-8 3-8 利用利用T0T0的方式的方式1 1完成例完成例3-63-6的功能(即在的功能(即在P1.0P1.0引脚输出周期为引脚输出周期为500us500us的方波)。的方波)。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实例3-8 利用T0的方式1完成例3-6的功能(即在P1.65任务任务3 以定时方式控制流水灯以定时方式控制流水灯源程序清单源程序清单/主函数主函数#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;源程序清单/主函数小技巧:/中断服务函数66任务任务3 以定时方式控制流水灯以定时方式控制流水灯3.3.工作方式工作方式2 2M1M0=10 作定时器:TMOD=02H 作计数器:TMOD=06H自动重置初值的自动重置初值的8位计数器,逻辑结构如图:位计数器,逻辑结构如图:振荡器振荡器12TF0中断中断T0GATEINT0TR0 TL0(8位位)TH0(8位位)控制控制重重新新装入装入ll&C/T=0C/T=1&EAET03.工作方式2M1M0=10振荡器12TF0中断T0GA67任务任务3 以定时方式控制流水灯以定时方式控制流水灯案例案例5 5 啤酒生产线自动装箱控制啤酒生产线自动装箱控制某啤酒自动生产线,每生产某啤酒自动生产线,每生产12瓶执行装箱操作,将生瓶执行装箱操作,将生产出的啤酒自动装箱,用单片机实现该控制要求。产出的啤酒自动装箱,用单片机实现该控制要求。案例5 啤酒生产线自动装箱控制某啤酒自动生产线,每生产1268任务任务3 以定时方式控制流水灯以定时方式控制流水灯解:如果啤酒生产线上装有传感装置,每检测一瓶啤酒就向单片机发送一个脉冲信号,使用计数功能就可实现该控制要求。1)TMOD初始化 06H2)计数初值:TH0TL0 28120F4H解:如果啤酒生产线上装有传感装置,每检测一瓶啤酒就向单片机发69任务任务3 以定时方式控制流水灯以定时方式控制流水灯程序清单程序清单#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;/装箱结束电机停止转动装箱结束电机停止转动程序清单#includevoid isr70任务任务3 以定时方式控制流水灯以定时方式控制流水灯4.4.工作方式工作方式3 3振荡器振荡器12TF1T1中断中断 TH0(8位位)TR1控制控制T0端端C/T=0C/T=1GATEINT0端端TR0振荡器振荡器12TF0T0中断中断 TL0(8位位)控制控制ll&EAET0仅作定时仅作定时器用器用!4.工作方式3振荡器12TF1T1中断 TH0(8位)TR71任务任务3 以定时方式控制流水灯以定时方式控制流水灯4.4.工作方式工作方式3 3M1M0=11T0、T1的设置和使用不同的设置和使用不同T0两个两个8位的计数器位的计数器TL0:使用T0原有控制资源,功能与方式0、1相同。TH0:借用T1的TR1、TF1,只能对片内机器周期脉冲计数,作8位定时器。T0初值计算完全同方式初值计算完全同方式 2。4.工作方式3M1M0=1172任务任务3 以定时方式控制流水灯以定时方式控制流水灯T0T0工作方式工作方式3 3时时T1T1的工作的工作T1仍仍然然可可工工作作于于方方式式02,C/控控制制位位仍仍可可使使T1工工作作在在定定时时器器或或计计数数器器方方式式,由由于于其其TR1、TF1被被T0的的TH0占占用用,因因而而计计数数溢溢出出时时只只能能将将输输出出结结果果送送至至串行口,串行口,即用作串行口波特率发生器。即用作串行口波特率发生器。T1工工作作于于方方式式2,因因定定时时初初值值能能自自动动恢恢复复,用用作作波波特率发生器。特率发生器。因定时器因定时器1 1的的TR1被被占用,其启动和关闭比较特殊占用,其启动和关闭比较特殊:当设置好工作方式时,T1自动开始运行。送入一个设置定时器1为方式3的方式字即可停止T1。T0工作方式3时T1的工作T1仍然可工作于方式02,C/73任务任务3 以定时方式控制流水灯以定时方式控制流水灯实例实例3-9 3-9 已知系统晶振已知系统晶振12MHz12MHz,试用定时器,试用定时器0 0的方式的方式3 3实现实现1s1s的延时(设每秒让的延时(设每秒让P0.0P0.0所接的发光二极管闪烁一次)所接的发光二极管闪烁一次)。TMOD初始化初始化 07H TH0作作为为定定时时器器,定定时时时时间间250us;初初值值28250=06HTL0作作 为为 计计 数数 器器,计计 数数 200次次;初初 值值 28200=38H因因250s*200=50ms,则则需需引引进进一一个个变变量量,TL0计数满后该变量加计数满后该变量加1,直至,直至20则为则为1s实例3-9 已知系统晶振12MHz,试用定时器0的方式3实74任务任务3 以定时方式控制流水灯以定时方式控制流水灯主函数主函数#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();主函数#includewhile(1)75任务任务3 以定时方式控制流水灯以定时方式控制流水灯延时函数延时函数 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+;延时函数 void delay()76任务任务3 以定时方式控制流水灯以定时方式控制流水灯案例案例6 6 以定时方式控制简单流水灯以定时方式控制简单流水灯 已知系统晶振已知系统晶振6MHz,采用定时器,采用定时器T0的工作方式的工作方式1实现延时,控制实现延时,控制P0口的口的8只发光二极管以只发光二极管以100ms的间的间隔循环点亮。隔循环点亮。案例6 以定时方式控制简单流水灯 已知系统晶振6MHz,77任务任务3 以定时方式控制流水灯以定时方式控制流水灯定时器定时器/计数器控制流水灯计数器控制流水灯定时器定时器T0初值:初值:定时时间:tmax=655362s=131.072,取100msT0 的 初值:=216-100000s/2s =15536=3CB0H TMOD=0000 0001B=01H 定时器/计数器控制流水灯定时器T0初值:78任务任务3 以定时方式控制流水灯以定时方式控制流水灯主函数:主函数:#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);主函数:#include79任务任务3 以定时方式控制流水灯以定时方式控制流水灯中断服务函数中断服务函数void isr_time0()interrupt 1 TH0=-500008;TL0=-50000;cword=_crol_(cword,1);P0=cword;小技巧:小技巧:虽然C51没有提供循环左移的指令,但可以通过调用_crol_()函数来实现,但不要忘记包含intrins.h头文件,详细内容参见附录2,要注意调用左移、右移时,数据类型不一样,则调用的函数名不一样。中断服务函数void isr_time0()interru80任务任务3 以定时方式控制流水灯以定时方式控制流水灯任务实施任务实施已知系统晶振已知系统晶振12MHz,联合使用定时器,联合使用定时器T0、T1实现延时实现延时(1)控制)控制P0口的口的8只发光二极管以只发光二极管以1s的间隔循环点亮。的间隔循环点亮。(2)按自定时间间隔从左至右循环点亮发光二极管,点)按自定时间间隔从左至右循环点亮发光二极管,点亮最右边的发光二极管后,再从右至左循环点亮。亮最右边的发光二极管后,再从右至左循环点亮。任务实施已知系统晶振12MHz,联合使用定时器T0、T1实现81任务任务3 以定时方式控制流水灯以定时方式控制流水灯知识梳理与总结知识梳理与总结本任务通过利用定时器来控制流水灯的延时,介绍了本任务通过利用定时器来控制流水灯的延时,介绍了MCS-51系列单片机的中断系统和定时器系列单片机的中断系统和定时器/计数器的工作原理,让计数器的工作原理,让读者学会利用中断系统和定时器读者学会利用中断系统和定时器/计数器进行单片机应用系统计数器进行单片机应用系统的设计。的设计。本任务需要重点掌握的内容包括:本任务需要重点掌握的内容包括:(1)MCS-51系列单片机五个中断源的标志,两个外部中断系列单片机五个中断源的标志,两个外部中断源的触发方式;源的触发方式;(2)单片机控制中断开关、优先级的两个寄存器)单片机控制中断开关、优先级的两个寄存器IE、IP;(3)中断响应过程及中断服务函数的编写方法;)中断响应过程及中断服务函数的编写方法;(4)MCS-51系列单片机定时器系列单片机定时器/计数器结构及控制定时器计数器结构及控制定时器/计数器工作的两个特殊功能寄存器计数器工作的两个特殊功能寄存器TMOD、TCON;(5)利用定时器)利用定时器/计数器的计数器的4种工作方式编写应用程序,特种工作方式编写应用程序,特别是方式字和计数初值的确定方法。别是方式字和计数初值的确定方法。知识梳理与总结本任务通过利用定时器来控制流水灯的延时,介绍了82任务任务3 以定时方式控制流水灯以定时方式控制流水灯精品课件精品课件!精品课件!83任务任务3 以定时方式控制流水灯以定时方式控制流水灯精品课件精品课件!精品课件!84任务任务3 以定时方式控制流水灯以定时方式控制流水灯任务作业:任务作业:P99T3-1T3-4任务作业:P99T3-1T3-485
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!