第六章AT89S51单片机的定时器_第1页
第六章AT89S51单片机的定时器_第2页
第六章AT89S51单片机的定时器_第3页
第六章AT89S51单片机的定时器_第4页
第六章AT89S51单片机的定时器_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第六章第六章 AT89S51AT89S51单片机的定时器单片机的定时器/ /计数器计数器2本章主要内容:本章主要内容:6-1.定时器概述定时器概述6-2.定时器的控制定时器的控制6-3.定时器的定时器的4种模式及其应用种模式及其应用6-4.定时器定时器/计数器综合应用举例计数器综合应用举例 36.1 定时器概述定时器概述 AT89S51 AT89S51单片机有单片机有2 2个个1616位的可编程定时位的可编程定时器器/ /计数器,称为定时器计数器,称为定时器/ /计数器计数器0 0和定时器和定时器/ /计数器计数器1 1,分别由两个,分别由两个8 8位的特殊功能寄存器位的特殊功能寄存器TH0

2、TH0、TL0TL0和和TH1TH1、TL1TL1组成。组成。4用于定时控制、延时、外部事件计数和检测用于定时控制、延时、外部事件计数和检测等场合。等场合。每个定时器可由软件设置为定时工作方式或每个定时器可由软件设置为定时工作方式或技术工作方式及其它灵活的可控功能方式,技术工作方式及其它灵活的可控功能方式,这些功能由这些功能由TMODTMOD和和TCONTCON所控制。所控制。5定时器定时器/ /计数器的结构和工作原理计数器的结构和工作原理 定时器定时器/ /计数器的结构计数器的结构 定时器定时器/ /计数器的实质是加计数器的实质是加1 1计数器(计数器(1616位),由高位),由高8 8位和

3、低位和低8 8位两个寄存位两个寄存器组成。器组成。TMODTMOD是定时器是定时器/ /计数器的工作方式寄存器,确定工作方式和功能;计数器的工作方式寄存器,确定工作方式和功能;TCONTCON是控制寄存器,控制是控制寄存器,控制T0T0、T1T1的启动和停止及设置溢出标志。的启动和停止及设置溢出标志。T1T1计数器计数器T0T0计数器计数器控制单元控制单元6计数器工作原理计数器工作原理 所谓计数是指所谓计数是指对外部事件进行计数对外部事件进行计数。外部事件的发。外部事件的发生以输入脉冲表示,因此计数功能的实质就是对外生以输入脉冲表示,因此计数功能的实质就是对外来脉冲的计数。来脉冲的计数。 AT

4、89S51芯片的信号引脚芯片的信号引脚T0(P3.4)和)和T1(P3.5)分)分别是两个计数器的计数输入端。外部输入的脉冲在别是两个计数器的计数输入端。外部输入的脉冲在负跳变时有效负跳变时有效,供计数器进行加,供计数器进行加 1 计数。计数。7计数器工作原理计数器工作原理计数器输入的计数脉冲源计数器输入的计数脉冲源 系统的时钟占当期输出脉冲经12分频后产生,通过T0或T1引脚对外部脉冲信号计数。计数过程计数过程 每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许

5、时)。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。8计数器工作原理计数器工作原理 计数方式下,单片机在每个机器周期的计数方式下,单片机在每个机器周期的S5P2对计对计数脉冲输入引脚进行采样。如果前一个机器周期数脉冲输入引脚进行采样。如果前一个机器周期为高电平,后一个机器周期为低电平,即为一个为高电平,后一个机器周期为低电平,即为一个有效的计数脉冲,在下一个机器周期的有效的计数脉冲,在下一个机器周期的S3P1进行进行计数。由于采样计数脉冲是在计数。由于采样计数脉冲是在2个机器周期完成的,个机器周期完成的,所以所以计数脉冲的周期不能小于计数脉冲的周期

6、不能小于2个机器周期个机器周期。9定时器工作原理定时器工作原理 定时功能是通过定时功能是通过对单片机内部脉冲进行计数来实对单片机内部脉冲进行计数来实现的现的。即每个机器周期产生。即每个机器周期产生1个计数脉冲,使计数个计数脉冲,使计数器加器加 1。 在使用定时器时,既可以根据计数值计算定时时在使用定时器时,既可以根据计数值计算定时时间,也可以根据定时时间的要求计算出计数器的间,也可以根据定时时间的要求计算出计数器的预置值。预置值。10定时与计数都是利定时与计数都是利用计数实现!用计数实现!l 加法计数器是计满溢出时才申请中断,所以在给计数加法计数器是计满溢出时才申请中断,所以在给计数器赋初值时

7、,不能直接输入所需的计数值,而应输入器赋初值时,不能直接输入所需的计数值,而应输入的是计数器计数的最大值与这一计数值的差值。的是计数器计数的最大值与这一计数值的差值。l 设最大值为设最大值为M,计数值为,计数值为N,初值为,初值为X,则,则X的计算方的计算方法为法为: 1162.1 工作模式寄存器:工作模式寄存器:TMOD字节地址:字节地址:89H (不可位寻址)(不可位寻址)定时器定时器/计数器计数器 1定时器定时器/计数器计数器 0l 功能:功能:用于设定定时器用于设定定时器/计数器的工作方式(只能用字节计数器的工作方式(只能用字节传送指令设置其内容)传送指令设置其内容)l TMOD的低半

8、字节对应定时器的低半字节对应定时器/计数器计数器 0,高半字节对应,高半字节对应定时器定时器/计数器计数器 1,前后半字节的位格式完全对应。,前后半字节的位格式完全对应。6.2 6.2 定时器的控制定时器的控制12lM1和和M0:工作方式选择位:工作方式选择位13lC/T :定时方式或计数方式选择位:定时方式或计数方式选择位 C/T = 0 定时工作方式定时工作方式 C/T = 1 计数工作方式计数工作方式lGATE: 门控位门控位 GATE=0 以运行控制位(以运行控制位(TR0或或TR1)启动定时器)启动定时器 GATE=1 以外部中断请求信号(以外部中断请求信号(INT0 或或INT1)

9、启)启动定时器动定时器146.2.2定时器定时器/计数器控制寄存器:计数器控制寄存器:TCON字节地址:字节地址:88H 位地址:位地址:88H 8FH (可位寻址)(可位寻址)l 功能:功能:用于保存外部中断请求以及定时器的计数溢出。用于保存外部中断请求以及定时器的计数溢出。l TCON既有定时器既有定时器/计数器的控制功能,又有中断控制计数器的控制功能,又有中断控制功能,其中与定时有关的控制位共功能,其中与定时有关的控制位共4位:位:TF1、TR1、TF0、TR0。15l TF0和和TF1:计数溢出标志位:计数溢出标志位 当计数器产生计数溢出时,相应的溢出标志位由当计数器产生计数溢出时,相

10、应的溢出标志位由硬硬件置件置“1”。 计数溢出标志位的使用有两种情况:计数溢出标志位的使用有两种情况: 使用中断方式时,作中断请求标志位来使用,在使用中断方式时,作中断请求标志位来使用,在转转向中断服务程序时由硬件自动清向中断服务程序时由硬件自动清“0”。 使用查询方式时,作查询状态位来使用,使用查询方式时,作查询状态位来使用,查询有效查询有效后应以软件方法及时将该位清后应以软件方法及时将该位清“0”16lTR0和和TR1:运行控制位(软件置:运行控制位(软件置1或清或清0) TR0(TR1)=0 停止定时器停止定时器/计数器工作计数器工作 TR0(TR1)=1 启动定时器启动定时器/计数器工

11、作计数器工作17中断允许控制寄存器:中断允许控制寄存器:IE字节地址:字节地址:0A8H 位地址:位地址:0A8H 0AFH其中与定时器其中与定时器/计数器有关的控制位共计数器有关的控制位共3位:位:l EA:中断允许总控制位:中断允许总控制位l ET0和和ET1:定时器:定时器/计数器中断允许控制位计数器中断允许控制位 ET0(ET1)=0禁止定时器禁止定时器/计数器中断计数器中断 ET0(ET1)=1允许定时器允许定时器/计数器中断计数器中断186.3 6.3 定时器的定时器的4 4种模式及应用种模式及应用计数器工作方式选择计数器工作方式选择建议不采用该工建议不采用该工作方式!作方式!在精

12、确定时采用在精确定时采用该工作方式!该工作方式!19模式模式0模式模式0为为13位计数,由位计数,由TL0的低的低5位(高位(高3位未用)和位未用)和TH0的的8位组成位组成TL0的低的低5位溢出时向位溢出时向TH0进位,进位,TH0溢出时,置位溢出时,置位TCON中的中的TF0标志,标志,向向CPU发出中断请求。发出中断请求。1313位计数器位计数器计数计数/ /定时选择定时选择中断请求中断请求该方式计算不方便,该方式计算不方便,建议不采用!建议不采用!20TF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M01&110T0引脚INT0引脚10机器周期TH0TL08位8

13、位溢出TCONTMODD0D7D7D0申请中断TF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M01&110T0引脚INT0引脚10机器周期TH0TL08位8位溢出TCONTMODD0D7D7D0申请中断6.3.1 模式模式1及应用及应用 模式模式1的计数位数是的计数位数是16位,由位,由TL0(TL1)作为低作为低8位、位、TH0(TH1)作为高作为高8位,组成了位,组成了16位加位加1计数器计数器 。 1616位计数器位计数器21例例6-16-1 用定时器T1产生一个50Hz的方波,由P1.1输出。 方波周期为T=1/50=0.02s=20ms,用T1定时10ms,

14、单片机采用12MHZ晶振,一个机器周期是1us,即是计数器计数10000次。 TH1 = (65536-10000)/256; TL1 = (65536-10000)%256;注意定时器的初注意定时器的初值计算方法!值计算方法!22用查询方式编程用查询方式编程void main()void main() TMOD = 0 x10;/T1TMOD = 0 x10;/T1模式模式1,1,定时定时TR1 = 1; /TR1 = 1; /定时器开始计数定时器开始计数while(1)while(1) TH1 = (65536-10000)/256; TH1 = (65536-10000)/256; TL

15、1 = (65536-10000)%256; /TL1 = (65536-10000)%256; /装入计数初值装入计数初值while (TF1 != 1);while (TF1 != 1);TF1 = 0; /TF1 = 0; /清除清除T1T1溢出标志位溢出标志位P1_1 = P1_1;P1_1 = P1_1; 23用中断方式编程用中断方式编程初始化程序应该完成以下工作: 1.1.对对TMODTMOD赋值,以确定赋值,以确定T0T0和和T1T1的工作方式。的工作方式。 2.2.计算初值,并将其写入计算初值,并将其写入TH0TH0、TL0TL0或或TH1TH1、TL1TL1。 3.3.中断方

16、式时,则对中断方式时,则对IEIE赋值,开放中断。赋值,开放中断。 4.4.使使TR0TR0或或TR1TR1置位,启动定时计数器。置位,启动定时计数器。24程序流程:程序流程:开开 始始P1.1置置1T1模式设置模式设置T1初值设置初值设置(10ms)中断设置中断设置开中断开中断循环等待中断循环等待中断启动定时器启动定时器T1中断入口中断入口T1初值设置初值设置(10ms)中断返回中断返回P1.1取反取反主程序流程主程序流程中断服务子程序流程中断服务子程序流程25程序(主程序)程序(主程序)#include #define uchar unsigned char#define uint uns

17、igned intsbit P1_1 = P11;void main()TMOD = 0 x10;/T1模式1,16位计数器TH1 = (65536-10000)/256; TL1 = (65536-10000)%256; /装入计数初值EA = 1; /开总中断ET1 = 1; /开定时器1中断TR1 = 1; /定时器开始计数while(1);26程序(定时器程序(定时器1 1中断服务程序)中断服务程序)void timer1_int(void) interrupt 3TH0 = (65536-10000)/256;TL0 = (65536-10000)%256; /重新装入计数初值P1_

18、1 = P1_1;27书上例题6.4.1如何控制LED闪烁时间注意:计算初值的思路。28书上例题6.4.2计数器的应用控制LED闪烁。29例题6-2 用单片机和内部定时器来产生矩形波,要求频率为100Hz,占空比为0.25,设单片机的时钟频率为12MHz。占空比:占空比:在一串理想的脉冲周期序列中,在一串理想的脉冲周期序列中,正脉冲的持续时间与脉冲总周期的比值。正脉冲的持续时间与脉冲总周期的比值。 305.3.2 模式模式2及其应用及其应用模式模式2为自动重装初值的为自动重装初值的8位计数方式。位计数方式。 在模式在模式2下,当计数器计满下,当计数器计满255(FFH)溢出时,)溢出时,CPU

19、自动把自动把TH 的值装入的值装入TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。 8 8位计数器位计数器TH1TH1重装单元重装单元31二、模式 2 工作特点 可以自动重新装载的可以自动重新装载的8 8位定时器位定时器/ /计数器。计数器。 在程序初始化时,在程序初始化时,TL0TL0和和TH0TH0由软件赋予相同的初值。由软件赋予相同的初值。 用于定时工作方式时,定时时间为:用于定时工作方式时,定时时间为:t=(2t=(28 8TH0TH0初值初值) )振荡周期振荡周期1212 用于计数工作方式时,计数长度最大为:

20、用于计数工作方式时,计数长度最大为:2 28 8=256=256个脉冲个脉冲 该模式可省去软件中重装常数的语句,并可产生相当精确该模式可省去软件中重装常数的语句,并可产生相当精确的定时时间,适合于作串行口波特率发生器。的定时时间,适合于作串行口波特率发生器。32例例6-36-3 当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500us的同步脉冲,请编程实现该功能。 方法1(只用T0) 按照查询方式编程(请同学们自行编写)。 选择T0为模式2 电平发生负跳变采用外部计数方式。当P3.4引脚上发生负跳变时,T0计数器加1,溢出标志TF0置1,然后改变T0为500us定时方式,并使P1.0同

21、步输入一个500us脉冲。 同步脉冲输出后T0又恢复外部事件计数方式。33 方法2:计数用T0,采用查询方式,定时用T1中断,均采用模式2。 T0工作在外部事件计数方式,当计数达到0FFH时候,再加1计数器就会溢出。 T1工作在定时工作方式,设晶振频率为6MHz,500s相当于250个机器周期。因此,初值X为 (256X)2s=500s X=6=06H34电路电路 用脉冲信号源模拟外部事件,用示波器对照显示P3.4口的输入和P1.0口的输出,方波信号源的周期必须大于1000us即频率小于1000HZ,这里我们为了清楚在示波器上进行对比,方波信号源发生频率为500HZ。XTAL218XTAL11

22、9ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.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/A

23、1427U1AT89C52C122pFC222pFC310uFX1CRYSTALR910kABCDU1(P3.4/T0)35程序程序 主程序 设置T0,T1的模式; T0,T1装入初值; T0开始计数; 判断T0是否溢出,溢出后清溢出标志位。 P1.0清0 开T1开始计时 T1中断 P1.0拉高 关T1 36例例6-46-4 利用定时器T1的模式2对外部信号计数。要求每计满100次,将P1.0端取反。 外部信号由P3.5引脚输入,每发生一个负跳变计数器加1,输入100个脉冲后计数器发生溢出中断。 TH1 = TL1 = 28-100 = 0 x9C ; 采用信号发生器产生周期为0.01s,频率

24、为100Hz的方波信号,计数满100次即耗时1s,P1.0口接一发光二极管,现象为发光二极管每隔一秒闪烁。37电路电路XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2

25、.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52C122pFC222pFC310uFX1CRYSTALR910kU1(P3.5/T1)D1LED-REDR1220386.3.3 模式模式3及应用及应用 方式方式3只适用于定时器只适用于定时器/计数器计数器T0,定时器,定时器T1方式方式3时相当时相当于于TR1=0,停止计数,停止计数。 工作方式工作方式3将将T0分成为两个独立的分成为两个独立的8位计数器位计数器TL0和和TH0 。 396.4 定时器/计数器综合应用举例 例

26、6-5.以中断方式产生单片机秒、分脉冲发生器。为便于仿真,设计一能显示分和秒的计时器。p20p20p21p22p23p24p25p26p21p22p23p24p25p26XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.

27、7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52C122pFC222pFC310uFX1CRYSTALR910k40#include #define uchar unsigned char#define uint unsigned intuchar m=0;uchar s=0;uchar i=0;uchar code smg =0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X9

28、0;/0-9共阳级段码41分处理函数和秒处理函数分处理函数和秒处理函数/分钟处理函数void Increase_Minute()if(+m 9) m=0;P3 = smgm;/秒处理函数void Increase_Second()if(+s 59)s = 0; Increase_Minute();P0 = smgs/10;P2 = smgs%10;42主函数主函数void main() TMOD = 0 x10;/T1模式1TH1 = (65536-50000)/256; TL1 = (65536-50000)%256; /装入计数初值,12MHz晶振一次溢出为50msEA = 1; /开总中

29、断ET1 = 1; /开定时器1中断TR1 = 1; /定时器1开始计数P3=smg0;while(1);43定时器定时器1 1中断程序中断程序void timer1_int(void) interrupt 3TH1 = (65536-50000)/256; TL1 = (65536-50000)%256; /重新装入计数初值i+;if(i=20) /50ms*20=1s时间到i = 0;Increase_Second();44 例6-6 演奏一段音阶(共13个音符)要求音阶演奏由定时器控制完成。XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/A

30、D138P0.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/A1427U1AT89C51LS1SOUNDERC122pFC222pFC310uFX112MR110kD1DIODE45 例6-7 频率测量,按下K1按键后,数码管显示出外部所接入的信号源频率(外部信号源频率取值为0-99HZ的整数)p20p21p22p23p24p25p26p20p21p22p23p24p25p26p27XTAL21

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论