单片机 第六课定时器精.ppt
单片机课件 第六课定时器第1页,本讲稿共19页5.3 80C51的定时的定时/计数器计数器 实现定时功能,实现定时功能,比较方便的办法是利用单比较方便的办法是利用单片机内部的定时片机内部的定时/计数器计数器。也可以采用下面三。也可以采用下面三种方法:种方法:v软件定时软件定时:软件定时不占用硬件资源,但占用了:软件定时不占用硬件资源,但占用了CPU时时间,降低了间,降低了CPU的利用率。的利用率。v采用时基电路定时采用时基电路定时:例如采用:例如采用555电路,外接必要的元电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。和修改,即不可编程。v采用可编程芯片定时采用可编程芯片定时:这种定时芯片的定时值及定时范围:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时活。在单片机的定时/计数器不够用时,可以考虑进行扩展。计数器不够用时,可以考虑进行扩展。第2页,本讲稿共19页5.3.1 5.3.1 定定时时/计计数器的数器的结结构和工作原理构和工作原理 一、定时一、定时/计数器的结构计数器的结构 定时定时/计数器的实质是加计数器的实质是加1计数器(计数器(16位),由高位),由高8位和低位和低8位两个寄位两个寄存器组成。存器组成。TMOD是定时是定时/计数器的工作方式寄存器,确定工作方式计数器的工作方式寄存器,确定工作方式和功能;和功能;TCON是控制寄存器,控制是控制寄存器,控制T0、T1的启动和停止及设置溢的启动和停止及设置溢出标志出标志。第3页,本讲稿共19页二、定时二、定时/计数器的工作原理计数器的工作原理 加加1计数器计数器输入的计数脉冲有两个来源输入的计数脉冲有两个来源,一个是由系统的一个是由系统的时钟振荡器输出脉冲经时钟振荡器输出脉冲经12分频后送来;一个是分频后送来;一个是T0或或T1引引脚输入的外部脉冲源。每来一个脉冲计数器加脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到,当加到计数器为全计数器为全1时,再输入一个脉冲就使计数器回零,且时,再输入一个脉冲就使计数器回零,且计数器的溢出使计数器的溢出使TCON中中TF0或或TF1置置1,向,向CPU发出中发出中断请求(定时断请求(定时/计数器中断允许时)。如果定时计数器中断允许时)。如果定时/计数器工计数器工作于定时模式,则表示定时时间已到;如果工作于计作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值计数器的计数值。第4页,本讲稿共19页v设置为定时器模式时设置为定时器模式时,加,加1计数器是对内部机器周期计计数器是对内部机器周期计数(数(1个机器周期等于个机器周期等于12个振荡周期,即计数频率为晶振频个振荡周期,即计数频率为晶振频率的率的1/12)。)。计数值计数值N乘以机器周期乘以机器周期Tcy就是定时时间就是定时时间t。v设置为设置为计数器模式时计数器模式时,外部事件计数脉冲由,外部事件计数脉冲由T0或或T1引脚引脚输入到计数器。在每个机器周期的输入到计数器。在每个机器周期的S5P2期间采样期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加样到一低电平时,则计数器加1,更新的计数值在下一个,更新的计数值在下一个机器周期的机器周期的S3P1期间装入计数器。由于检测一个从期间装入计数器。由于检测一个从1到到0的下降沿需要的下降沿需要2个机器周期,因此要求被采样的电平至少个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为要维持一个机器周期。当晶振频率为12MHz时时,最高计,最高计数频率不超过数频率不超过1/2MHz,即计数脉冲的周期要大于,即计数脉冲的周期要大于2 s。第5页,本讲稿共19页 5.3.2 定时定时/计数器的控制计数器的控制 80C51单片机定时单片机定时/计数器的工作由两个特殊功能寄存计数器的工作由两个特殊功能寄存器控制。器控制。TMOD用于设置其工作方式;用于设置其工作方式;TCON用于控制用于控制其启动和中断申请。其启动和中断申请。一、工作方式寄存器一、工作方式寄存器TMOD 工作方式寄存器工作方式寄存器TMOD用于设置定时用于设置定时/计数器的工作计数器的工作方式,低四位用于方式,低四位用于T0,高四位用于,高四位用于T1。其格式如下:。其格式如下:第6页,本讲稿共19页GATE:门控位。:门控位。GATE0时,只要用软件使时,只要用软件使TCON中的中的TR0或或TR1为为1,就可以启动定时,就可以启动定时/计数器工作;计数器工作;GATA1时,要用软件使时,要用软件使TR0或或TR1为为1,同时外部中断引脚或也为高电平时,才能启动定时,同时外部中断引脚或也为高电平时,才能启动定时/计计数器工作。即此时定时器的启动条件,加上了或引脚为高电平这一条件。数器工作。即此时定时器的启动条件,加上了或引脚为高电平这一条件。:定时定时/计数模式选择位。计数模式选择位。0为定时模式;为定时模式;=1为计数模为计数模式。式。M1M0:工作方式设置位。定时:工作方式设置位。定时/计数器有四种工作方式,由计数器有四种工作方式,由M1M0进行进行设置。设置。第7页,本讲稿共19页 二、控制寄存器二、控制寄存器TCON TCON的低的低4位用于控制外部中断位用于控制外部中断,已在前面介绍。已在前面介绍。TCON的高的高4位用于控制定位用于控制定时时/计数器的启动和中断申请。其格式如下:计数器的启动和中断申请。其格式如下:vTF1(TCON.7):):T1溢出中断请求标志位。溢出中断请求标志位。T1计数溢出时由硬件自动置计数溢出时由硬件自动置TF1为为1。CPU响应中断后响应中断后TF1由硬件自动清由硬件自动清0。T1工作时,工作时,CPU可随时查询可随时查询TF1的状态。所的状态。所以,以,TF1可用作查询测试的标志。可用作查询测试的标志。TF1也可以用软件置也可以用软件置1或清或清0,同硬件置,同硬件置1或清或清0的效果一样。的效果一样。vTR1(TCON.6):):T1运行控制位。运行控制位。TR1置置1时,时,T1开始工作;开始工作;TR1置置0时,时,T1停停止工作。止工作。TR1由软件置由软件置1或清或清0。所以,用软件可控制定时。所以,用软件可控制定时/计数器的启动与停止。计数器的启动与停止。vTF0(TCON.5):):T0溢出中断请求标志位,其功能与溢出中断请求标志位,其功能与TF1类同。类同。vTR0(TCON.4):):T0运行控制位,其功能与运行控制位,其功能与TR1类同。类同。第8页,本讲稿共19页 5.3.3 定时定时/计数器的工作方式计数器的工作方式 一、方式一、方式0 方式方式0为为13位计数位计数,由,由TL0的低的低5位(高位(高3位未用)和位未用)和TH0的的8位组成。位组成。TL0的低的低5位溢出时向位溢出时向TH0进位,进位,TH0溢出时,置位溢出时,置位TCON中的中的TF0标志,向标志,向CPU发出中断请求。发出中断请求。第9页,本讲稿共19页定时器模式时定时器模式时有有:Nt/Tcy 计数初值计算的公式为:计数初值计算的公式为:定时器的初值还可以采用计数个数直接取补法获得定时器的初值还可以采用计数个数直接取补法获得。计数模式时,计数脉冲是计数模式时,计数脉冲是T0引脚上的外部脉冲。引脚上的外部脉冲。门控位门控位GATE具有特殊的作用。当具有特殊的作用。当GATE=0时,经反相后使时,经反相后使或门输出为或门输出为1,此时仅由,此时仅由TR0控制与门的开启,与门输出控制与门的开启,与门输出1时,控制开关接通,计数开始;时,控制开关接通,计数开始;当当GATE=1时时,由外中断引脚,由外中断引脚信号控制或门的输出,此时控制信号控制或门的输出,此时控制与门的开启由外中断引脚信号和与门的开启由外中断引脚信号和TR0共同控制共同控制。当。当TR0=1时,外中断引脚信号引脚的时,外中断引脚信号引脚的高电平启动计高电平启动计数数,外中断引脚信号引脚的,外中断引脚信号引脚的低电平停止计数低电平停止计数。这种方式常用来测量。这种方式常用来测量外中断引脚上正脉冲的宽度。外中断引脚上正脉冲的宽度。第10页,本讲稿共19页 二、方式二、方式1 方式方式1的计数位数是的计数位数是16位,由位,由TL0作为低作为低8位、位、TH0作为作为高高8位,组成了位,组成了16位加位加1计数器计数器。计数个数与计数初值的关系为:计数个数与计数初值的关系为:第11页,本讲稿共19页 三、方式三、方式2 方式方式2为自动重装初值的为自动重装初值的8位计数方式。位计数方式。工作方式2特别适合于用作较精确的脉冲信号发生器。计数个数与计数初值的关系为计数个数与计数初值的关系为:第12页,本讲稿共19页 四、方式四、方式3 方式方式3只适用于定时只适用于定时/计数器计数器T0,定时器定时器T1处于方式处于方式3时相当于时相当于TR1=0,停止计数。,停止计数。工作方式工作方式3将将T0分成为两个独立的分成为两个独立的8位计数器位计数器TL0和和TH0。第13页,本讲稿共19页 5.3.4 定时定时/计数器用于外部中断扩展计数器用于外部中断扩展 扩展方法是,将定时扩展方法是,将定时/计数器设置为计数器方式,计数初值设定为计数器设置为计数器方式,计数初值设定为满程,将待扩展的外部中断源接到定时满程,将待扩展的外部中断源接到定时/计数器的外部计数引脚。从该计数器的外部计数引脚。从该引脚输入一个下降沿信号,计数器加引脚输入一个下降沿信号,计数器加1后便产生定时后便产生定时/计数器溢出中断。计数器溢出中断。例如,利用例如,利用T0扩展一个外部中断源。将扩展一个外部中断源。将T0设置为计数器方式,按设置为计数器方式,按方式方式2工作,工作,TH0、TL0的初值均为的初值均为0FFH,T0允许中断,允许中断,CPU开开放中断。放中断。其初始化程序如下:其初始化程序如下:MOV TMOD,#06H ;置;置T0为计数器方式为计数器方式2 MOV TL0,#0FFH ;置计数初值;置计数初值 MOV TH0,#0FFH SETB TR0 ;启动;启动T0工作工作 SETB EA ;CPU开中断开中断 SETB ET0 ;允许;允许T0中断中断 第14页,本讲稿共19页5.3.5 定时定时/计数器应用举例计数器应用举例 初始化程序应完成如下工作:初始化程序应完成如下工作:v对对TMOD赋值,以确定赋值,以确定T0和和T1的工作方式。的工作方式。v计算初值计算初值,并将其写入并将其写入TH0、TL0或或TH1、TL1。v中断方式时,则对中断方式时,则对IE赋值,开放中断。赋值,开放中断。v使使TR0或或TR1置位,启动定时置位,启动定时/计数器定时或计数。计数器定时或计数。第15页,本讲稿共19页 例例 利用定时利用定时/计数器计数器T0的方式的方式1,产生,产生10ms的定时,并的定时,并使使P1.0引脚上输出周期为引脚上输出周期为20ms的方波,采用中断方式,的方波,采用中断方式,设系统时钟频率为设系统时钟频率为12 MHz。解:解:1、计算计数初值、计算计数初值X:由于晶振为由于晶振为12 MHz,所以机器周期,所以机器周期Tcy为为1 s。所以:所以:Nt/Tcy 10103/110610000X655361000055536D8F0H即应将即应将D8H送入送入TH0中,中,F0H送入送入TL0中中 2、求、求T0的方式控制字的方式控制字TMOD:M1M0=01,GATE=0,C/T=0,可取方式控制字为,可取方式控制字为01H;第16页,本讲稿共19页 ORG 0000H LJMP MAIN ;跳转到主程序 ORG 000BH ;T0的中断入口地址 LJMP DVT0 ;转向中断服务程序 ORG 0100H MAIN:MOV TMOD,#01H;置T0工作于方式1 MOV TH0,#0D8H ;装入计数初值 MOV TL0,#0F0H SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 SJMP$;等待中断 DVT0:CPL P1.0 ;P1.0取反输出 MOV TH0,#0D8H ;重新装入计数值 MOV TL0,#0F0H RETI ;中断返回 END第17页,本讲稿共19页思考题及习题思考题及习题1、80C51有几个中断源?各中断标志是如何产生的?又是如何复位的有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU响应各中断时,其中断入口地址是多少?响应各中断时,其中断入口地址是多少?2、某系统有三个外部中断源、某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要,当某一中断源变低电平时便要求求CPU处理,它们的优先处理次序由高到低为处理,它们的优先处理次序由高到低为3、2、1,处理程序,处理程序的入口地址分别为的入口地址分别为2000H、2100H、2200H。试编写主程序及中断。试编写主程序及中断服务程序(转至相应的入口即可)。服务程序(转至相应的入口即可)。3、外部中断源有电平触发和边沿触发两种触发方式,这两种触发、外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?方式所产生的中断过程有何不同?怎样设定?4、定时、定时/计数器工作于定时和计数方式时有何异同点?计数器工作于定时和计数方式时有何异同点?5、定时、定时/计数器的计数器的4种工作方式各有何特点?种工作方式各有何特点?6、要求定时、要求定时/计数器的运行控制完全由计数器的运行控制完全由TR1、TR0确定和完全由、高低确定和完全由、高低电平控制时,其初始化编程应作何处理?电平控制时,其初始化编程应作何处理?第18页,本讲稿共19页7、当定时、当定时/计数器计数器T0用作方式用作方式3时,定时时,定时/计数器计数器T1可以工作在何可以工作在何种方式下?如何控制种方式下?如何控制T1的开启和关闭?的开启和关闭?8、利用定时、利用定时/计数器计数器T0从从P1.0输出周期为输出周期为1s,脉宽为,脉宽为20ms的正脉的正脉冲信号,晶振频率为冲信号,晶振频率为12MHz。试设计程序。试设计程序。9、要求从、要求从P1.1引脚输出引脚输出1000Hz方波,晶振频率为方波,晶振频率为12MHz。试设计。试设计程序。程序。10、试用定时、试用定时/计数器计数器T1对外部事件计数。要求每计数对外部事件计数。要求每计数100,就将,就将T1改成定时方式,控制改成定时方式,控制P1.7输出一个脉宽为输出一个脉宽为10ms的正脉冲,然后又转的正脉冲,然后又转为计数方式,如此反复循环。设晶振频率为为计数方式,如此反复循环。设晶振频率为12MHz。11、利用定时、利用定时/计数器计数器T0产生定时时钟产生定时时钟,由由P1口控制口控制8个指示灯。编个指示灯。编一个程序一个程序,使使8个指示灯依次一个一个闪动,闪动频率为个指示灯依次一个一个闪动,闪动频率为20次次/秒秒(8个灯依次亮一遍为一个周期个灯依次亮一遍为一个周期)。12、若晶振频率为、若晶振频率为12MHz,如何用,如何用T0来测量来测量201s之间的方波周期之间的方波周期?又如何测量频率为?又如何测量频率为0.5MHz左右的脉冲频率?左右的脉冲频率?第19页,本讲稿共19页