项目5使用MCS-51单片机的定时与中断系统单片机应用技术项目5使用MCS-51单片机的定时与中断系统第2页任务学习与应用MCS-51单片机的定时与计数器学习与应用MCS-51单片机的中断系统项目5使用MCS-51单片机的定时与中断系统第3页教学重点、难点掌握定时器/计数器的结构及定时器/计数器的四种工作方式,重点掌握定时器的编程及应用;掌握中断系统的基本结构、中断请求源、中断控制、中断的响应时间、中断请求的撤消。重点是中断服务程序的设计。项目5使用MCS-51单片机的定时与中断系统第4页第5章定时/计数器与中断系统操作六控制信号灯5.1定时/计数器操作七交通灯控制5.2单片机中断系统作业项目5使用MCS-51单片机的定时与中断系统第5页操作六控制信号灯【任务目的】利用单片机的定时器,完成硬件延时设计,实现对信号灯的控制,掌握定时/计数器的编程方式和软硬件调试方法。【任务描述】信号灯循环显示,时间为1s。用定时器方式1编制1s的延时程序,实现信号灯的控制。系统采用12MHz晶振。1.电路原理图控制信号灯电路原理图如图5-1所示。项目5使用MCS-51单片机的定时与中断系统第6页图5-1控制信号灯电路原理图XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC133pC233pR210kC310uFD1LED-REDD2LED-REDD3LED-REDD4LED-REDD5LED-REDD6LED-REDD7LED-REDD8LED-REDA011A113A215A317OE19Y09Y17Y25Y33U2:B74LS24012345678161514131211109RN11kA02A14A26A38OE1Y018Y116Y214Y312U2:A74LS240项目5使用MCS-51单片机的定时与中断系统第7页2.流程图与参考程序LED_PORTEQUP1ORG0000HLJMPSTARTORG0100HSTART:CLREA;关中断MOVSP,#70HMOVR2,#08HMOVA,#0FEH项目5使用MCS-51单片机的定时与中断系统第8页NEXT:MOVLED_PORT,ALCALLDELAYRLADJNZR2,NEXTSJMPSTART项目5使用MCS-51单片机的定时与中断系统第9页DELAY:MOVR3,#14H;置50ms计数循环初值MOVTMOD,#10H;设置定时器1为方式1MOVTH1,#3CHMOVTL1,#0B0H;定时器初值SETBTR1;启动定时器LP1:JBCTF1,LP2;通过查询方式判断SJMPLP1;定时是否已经到项目5使用MCS-51单片机的定时与中断系统第10页LP2:MOVTH1,#3CH;重置定时器初值MOVTL1,#0B0HDJNZR3,LP1;未到1s继续循环CLRTR1RETEND流程图如图5-2所示。项目5使用MCS-51单片机的定时与中断系统第11页图5-2控制信号灯程图开始设置循环次数和初值显示模式字送P1口延时1秒显示模式字左移1位次数-1=0?YN项目5使用MCS-51单片机的定时与中断系统第12页3.程序仿真及下载按硬件图连好电路,利用仿真软件仿真测试后下载。4.程序分析上述任务是利用单片机内部的硬件资源定时/计数器来实现延时控制,在方便程度及精确度等方面优于软件定时。源程序采用查询方式来实现定时器的延时控制。项目5使用MCS-51单片机的定时与中断系统第13页5.1定时/计数器5.1.1定时/计数器的结构5.1.2定时/计数器的工作方式5.1.3定时/计数器的编程和应用项目5使用MCS-51单片机的定时与中断系统第14页在单片机应用系统中,常需要对外部脉冲进行计数或每隔一定时间执行特定操作,因此定时/计数器是单片机控制系统重要的外设部件,几乎所有单片机控制系统都有一个至数个定时/计数器。80C51系列单片机内部的定时/计数器都具有定时和计数这两种功能。本节将介绍定时/计数器的结构、原理、工作方式及使用方法。80C51单片机内部设有两个16位的可编程定时/计数器。可编程的意思是指其功能(如工作方式、定时时间、量程和启动方式等)均可由指令来确定和改变。在定时/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(方式寄存器和控制寄存器)。项目5使用MCS-51单片机的定时与中断系统第15页5.1.1定时/计数器的结构5.1.1.1定时/计数器的结构从如图5-3所示的定时/计数器结构图中可以看出,16位的定时/计数器分别由两个8位专用寄存器组成。这些寄存器是用于存放定时或计数初值,另外还有两个寄存器TMOD和TCON。TMOD是定时/计数器的工作方式寄存器,由它确定定时/计数器的工作方式和功能;TCON是定时/计数器的控制寄存器,主要是用于控制定时器的启动和停止,此外TCON还可以保存T0、T1的溢出和中断标志。项目5使用MCS-51单片机的定时与中断系统第16页图5-3定时/计数器结构图T0由TH0、TL0构成,字节地址为8CH、8AHTCON则用于控制定时计数器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出和中断标志等。特殊功能寄存器TMOD控制定时计数器的工作方式、功能。T1由TH1、TL1构成,字节地址为8DH、8BH项目5使用MCS-51单片机的定时与中断系统第17页5.1.1.2定时/计数器的工作原理16位的定时/计数器实质是一个加1计数器,其控制电路受软件控制、切换。其输入的脉冲有两个来源,一个是系统的时钟振荡器输出经12分频后得来,一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲,计数器加1,当加到计数器全为1时,再输入一个脉冲,就使计数器清零,且计数器的溢出将使TCON中TF0或TF1置1,从而向CPU发出中断请求。如果定时计数器工作于定时模式,则表示定时/时间到;如果工作于计数模式,则表示计数值已满。项目5使用MCS-51单片机的定时与中断系统第18页(1)当定时/计数器为定时方式时,计数器对内部机器周期(一个机器周期等于12个振荡周期,则计数频率为振荡频率的1/12)计数,即每过一个机器周期,计数器加1,直至计满溢出为止。因而计数值乘以机器周期就是定时时间。T=(2n-初值)×机器周期;(n是定时器的工作方式;方式0,n=13;方式1,n=16;方式2,n=8;)项目5使用MCS-51单片机的定时与中断系统第19页(2)当定时/计数器为计数方式时,通过引脚T0(P3.4)和T1(P3.5)对外部信号计数,计数器在每个机器周期的S5P2期间采样引脚输入电平。当一个机器周期采样值为1,下一个机器周期采样值为0时,则计数器加1(即下降沿触发计数,外部脉冲最高检测频率为振荡频率的1/24)。在接下来的一个机器周期S3P1期间,新的计数值装入计数器。S=(2n-初值);(n是定时器的工作方式;方式0,n=13;方式1,n=16;方式2,n=8;)项目5使用MCS-51单片机的定时与中断系统第20页5.1.2定时/计数器的工作方式定时/计数器T0和T1有2个控制寄存器TMOD和TCON,它们分别用来设置各个定时/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。项目5使用MCS-51单片机的定时与中断系统第21页5.1.2.1定时/计数器方式寄存器TMODD7D6D5D4D3D2D1D0GATAM1M0GATAM1M0←T1方式字段→←T0方式字段→M1M0——工作方式选择位(编程可决定四种工作方式,见表5-1)。TMOD89HGATE——门控位。当GATE=0时,只要用软件使TR0或TR1置1即可启动相应定时器开始工作。当GATE=1时,除要使TR0或TR1置1外,还要使、引脚为高电平时,才能启动相应定时器工作。——外部计数器/定时器方式选择位=0定时方式;=1计数方式。项目5使用MCS-51单片机的定时与中断系统第22页M1M0工作方式功能说明00方式013位定时/计数器01方式116位定时/计数器10方式2自动重装初值8位定时/计数器11方式3T0分为两个独立的8位定时/计数器;T1停止计数表5-1定时/计数器工作方式设置表项目5使用MCS-51单片机的定时与中断系统第23页定时/计数器方式控制寄存器TMOD不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半字节定义定时器0,高半字节定义定时器1。复位时,TMOD所有位均为0。下面举例说明方式字的应用。设定时器0为计数方式,由软件直接启动,采用方式2工作;定时器1为定时方式,由软件直接启动,采用方式1工作,则TMOD控制字为00010110B,相应指令为:MOVTMOD#16H项目5使用MCS-51单片机的定时与中断系统第24页5.1.2.2控制寄存器TCONTCON在特殊功能寄存器中,字节地址为88H,TCON的高4位是控制定时/计数器的启动停止及中断申请,低4位用于控制外部中断,将在下一节介绍。TCON的格式如下。D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TCON88H项目5使用MCS-51单片机的定时与中断系统第25页各位定义如下。TF1——定时器1溢出标志位。当定时/计数器1计满溢出时,由硬件使TF1置1,并且申请中断。进入中断服务程序后,由硬件自动清0,在查询方式下用软件清0。TR1——定时/计数器1运行控制位。TR1置1启动定时器1工作;TR1置0停止定时器1工作。TR1置1或清0由软件来设置。TF0——定时器0溢出标志。其功能及操作情况同TF1。TR0——定时器0运行控制位。其功能及操作情况同TR1。IE1——外部中断1请求标志。项目5使用MCS-51单片机的定时与中断系统第26页IT1——外部中断1触发方式选择位。IE0——外部中断0请求标志。IT0——外部中断0触发方式选择位。TCON中低4位与中断有关,将在下节中断中详细讲解。由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。例如:CLRTF0;清定时器0的溢出(中断申请标志)SETBTR1;启动定时器1项目5使用MCS-51单片机的定时与中断系统第27页5.1.2.3定时/计数器的工作方式51单片机定时计数器有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。下面以T0为例,分述各种工作方式的特点和用法。(1)工作方式0:方式0是由TL0的低5位和TH0的8位构成13位计数器(TL0的高3位无效)方式。工作方式0的结构如图5-4所示。项目5使用MCS-51单片机的定时与中断系统第28页图5-4定时/计数器0工作方式0逻辑结构1≥1&项目5使用MCS-51单片机的定时与中断系统第29页在一般的应用中,通常使GATE=0,从而由TR0的状态控制T0的开闭:TR0=1,打开T0;TR0=0,关闭T0。在特殊的应用场合,例如利用定时器测量接于INT0引脚上的外部脉冲高电平的宽度时,可使GATE=1,TR0=1。当外部脉冲出现上升沿,亦即由0变1电平时,启动T0定时,测量开始;一旦外部脉冲出现下降沿,即由l变0时就关闭了T0。定时器启动后,定时或计数脉冲加到TL0的低5位,从预先设置的初值(时间常数)开始不断加1。TL0计满后,向TH0进位。当TL0和TH0都计满