《单片机原理及应用(第6章-)-89C51的定时器课件.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用(第6章-)-89C51的定时器课件.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第6 6章章 89C5189C51的定时器的定时器/计数器计数器&两个可编程的定时器两个可编程的定时器/计数器计数器T1T1、T0T0。&2 2种种工作模式工作模式:。(1 1)计数器计数器工作模式工作模式(2 2)定时器定时器工作模式工作模式&4 4种种工作方式工作方式(方式方式0-0-方式方式3 35.1 5.1 定时器定时器/计数器的结构与工作原理计数器的结构与工作原理加一计数器加一计数器 2 2、4 4种工作方式种工作方式 方式方式0 0 M1M1、M0M0为为00 00,定时器,定时器/计数器的框图:计数器的框图:方式方式1 1 M1M1、M0M0=0101,1616位位的计数器的
2、计数器 方式方式2 2 M1M1、M0=M0=1010 计数满后自动装入计数初值计数满后自动装入计数初值 ,等效框图如下:等效框图如下:1 1)工作方式工作方式3 3下的下的T0T0 T0T0分为两个独立的分为两个独立的8 8位计数器位计数器:TL0TL0、TH0TH0 4 方式方式3T0T0为方式为方式3 3时时 F T1T1可定为方式可定为方式0 0、方式、方式1 1和方式和方式2 2 F 用作串行口的波特率发生器用作串行口的波特率发生器(Baud rate generator),即作为串口数据传送时的时钟信号。F 或不需要中断的场合(因为或不需要中断的场合(因为TF0TF0、TF1TF1
3、 均被均被T0T0占用)。占用)。(1 1)T1T1工作在方式工作在方式0 0 2 2)工作在方式工作在方式3 3下的下的T1T1 (2 2)T1T1工作在方式工作在方式1 1(3 3)T1T1工作在方式工作在方式2 2 INT0INT1T0T1和中断系统的连接P3.4 T0P3.5 T1TR0TR1P3.2 INT0P3.3 INT15.3 5.3 定时器定时器/计数器的编程和应用计数器的编程和应用1 1)、编程步骤:)、编程步骤:(1 1)设置工作方式)设置工作方式(2 2)装入计数)装入计数初值初值(3 3)开中断)开中断(4 4)启动计数)启动计数1、初始化、初始化(1)计数时的初值计
4、算:)计数时的初值计算:X=M(模值)(模值)-要计数的值要计数的值(2)定时时的计数初值计算:)定时时的计数初值计算:X=M(模值)(模值)-定时时间(要计数的时间)定时时间(要计数的时间)/定时脉冲周期定时脉冲周期(每计一次数的时间)每计一次数的时间)*注:定时脉冲周期注:定时脉冲周期=12/fosc 定时、计数的初值计算:定时、计数的初值计算:举例说明计数初值的计算假设系统时钟频率采用假设系统时钟频率采用6 6MHzMHz,要求产生要求产生10ms10ms定时,试定时,试分别计算定时器在方式分别计算定时器在方式0、1、2时的初值。时的初值。X=X=2 21 13 3 10ms10ms(1
5、2126Mhz)=2 21 13 3-5000-5000 =3192D=3192D X X=2 28 8 10ms10ms(12126Mhz)=2 28 8 -5000-5000 =-4744=-4744 说说明明不不能能采采用用方方式式2 2产产生生10ms10ms 定定时。时。X=216 10ms(126Mhz)=216-5000 =60536D =0EC78 (1)方式方式0的初值的初值X(2)方式方式1的初值的初值X(3)方式)方式2的初值的初值X 2)、最大定时时间的计算假设系统时钟频率采用假设系统时钟频率采用6 6MHzMHz,试分别计算定试分别计算定时器在方式时器在方式0 0、1
6、 1、2 2时的最大定时时间。时的最大定时时间。分析分析 X=M(模值)(模值)-定时时间定时时间/定时脉冲周期定时脉冲周期,式中式中X=0.即:定时时间即:定时时间max=M定时脉冲周期定时脉冲周期,故:故:(1)方式)方式0的最大定时时间:的最大定时时间:T=2 21 13 3 12126Mhz=16.384msms(2)方式)方式1的最大定时时间:的最大定时时间:T=2 21 16 6 12126Mhz=131.027msms(3)方式)方式2的最大定时时间:的最大定时时间:T=2 28 8 12 126Mhz=512us512us 4 4)、)、初始化编程举例例例5-15-1 T1T1
7、、方式方式1、定时定时50ms,50ms,软件启动、允许中断(设软件启动、允许中断(设fosc=12MHZ),fosc=12MHZ),编写初始化程序段编写初始化程序段P3.4 T0P3.5 T1TR0TR1P3.2 INT0P3.3 INT11 1、编程步骤:、编程步骤:(1 1)设置工作方式)设置工作方式(2 2)装入计数)装入计数初值初值(3 3)开中断()开中断(位编位编程或字节编程)程或字节编程)(4 4)启动计数)启动计数例例5-25-2 计数器计数器T0T0对对T0T0引脚(引脚(P3.4)P3.4)出现的脉冲计数,每计出现的脉冲计数,每计数数100100个脉冲向个脉冲向CPUCP
8、U中断一次、中断一次、设用软件启动,设用软件启动,编写初始编写初始化程序段。化程序段。P3.4 T0P3.5 T1TR0TR1P3.2 INT0P3.3 INT11 1、编程步骤:、编程步骤:(1 1)设置工作方式)设置工作方式(2 2)装入计数)装入计数初值初值(3 3)开中断()开中断(位编位编程或字节编程)程或字节编程)(4 4)启动计数)启动计数计数时的初值计算:计数时的初值计算:X=M(模值)(模值)-要计数的数值要计数的数值 分配存储空间分配存储空间 主程序主程序 中断服务程序中断服务程序 X X=2 21616 10ms10ms(121212Mhz)=2 21616 -10000
9、-10000 =55536=55536 =0D8F0H=0D8F0H 所以所以:T0T0的初值为的初值为:TH0=D8TH0=D8H H TL0=TL0=F0HF0H 例例5-3(定时):(定时):T0定时,在定时,在P1.7输出输出50HZ(20ms)方波,方波,设晶振频率设晶振频率12MHZ(分别(分别 采用中断采用中断、查询方式编程)查询方式编程)主程序:主程序:设置工作方式设置工作方式 装入计数初值装入计数初值 开中断开中断 启动计数启动计数 等待中断请求等待中断请求 2、定时、定时/计数应用举例计数应用举例(定时定时/计数举例)计数举例)(1)计算初值计算初值X(2)程序设计(观察下
10、页图)程序设计(观察下页图)ORG 0000H ORG 0000H AJMP AJMP MAIN MAIN ORG 000BHORG 000BH AJMPAJMP IT0PIT0P ORGORG 0100H0100HMAINMAIN:MOV SP,#60HMOV SP,#60H MOV TMOD,#01H MOV TMOD,#01H MOV TL0 MOV TL0,#0F0H,#0F0H MOV TH0MOV TH0,#0D8H,#0D8H SETB SETB TR0 TR0 SETB ET0 SETB ET0 SETB EA SETB EA HERE:AJMP HEREHERE:AJMP H
11、ERE ITOP:ITOP:MOV TL0 MOV TL0,#0F0H,#0F0H MOV TH0MOV TH0,#0D8H,#0D8H CPL CPL P1.7P1.7 RETIRETI ENDENDP3.4 T0P3.5 T1TR0TR1P3.2 INT0P3.3 INT1TL0 TH0TF0设置设置T0工作方式工作方式装入计数初值装入计数初值开中断开中断启动计数启动计数 000BPC跳转到主程序跳转到主程序0000 0001 跳转到跳转到INT00003跳转到跳转到T1 001B跳转到跳转到T0000B 跳转到跳转到INT10013 串口中断串口中断0023 例例5-4(计数):(计数)
12、:计数计数/定时器定时器T1对对T1引脚计数,引脚计数,每计数每计数100个脉冲,个脉冲,在在P1.0输出一个正脉冲输出一个正脉冲。X X=2 28 8 100100 =156 156 =9CH=9CH 主程序:主程序:设置工作方式设置工作方式 装入计数初值装入计数初值 开中断开中断 使使P1.0P1.0输出输出0 0电平电平 启动计数启动计数 等待中断请求等待中断请求 分配存储空间分配存储空间 主程序主程序 中断服务程序中断服务程序(1)计算初值计算初值X(2)程序设计程序设计 ORG 0000H ORG 0000H AJMP AJMP MAIN MAIN ORG ORG 001BH001B
13、H AJMPAJMP IT1PIT1P ORGORG 0100H0100HMAINMAIN:MOV SP,#60HMOV SP,#60H MOV TMOD,#01H MOV TMOD,#01H MOV TL0 MOV TL0,#9CH,#9CH MOV TH0MOV TH0,#9CH,#9CH SETB SETB ET1ET1 SETB EA SETB EA CLR P1.0CLR P1.0 SETB TR1 SETB TR1 HERE:AJMP HEREHERE:AJMP HERE IT1PIT1P:SETB P1.0SETB P1.0 NOPNOP NOPNOP CLR P1.0CLR P
14、1.0 RETIRETI END END (2)程序设计程序设计(1)计算初值计算初值X 分配存储空间分配存储空间 主程序主程序 中断服务程序中断服务程序 例例5.5(5.5(定时扩展):定时扩展):利用软件扩展方法实现利用软件扩展方法实现1s1s定时,使得定时,使得P1P1口控制口控制8 8各发光二极管轮流点亮(低电平点亮),设各发光二极管轮流点亮(低电平点亮),设fosc=6MHZ.fosc=6MHZ.ORG 0000H LJMP MAIN ORG 000BH LJMP DVT0 ORG 0030H 主程序:主程序:设置工作方式设置工作方式 装入计数初值装入计数初值 开中断开中断 设置中断
15、次数设置中断次数 使使P1P1口口D0D0灯亮灯亮 启动计数启动计数 等待中断请求等待中断请求 MAIN:MOV SP,#60H MOV TMOD,#01H MOV TH0,#9EH MOV TL0,#58HSETB ET0 SETB EA R2,#20H MOV A,#0FEHMOV P1,ASETB TR0 SJMP$DVT0:DJNZ R2,RTN RL AMOV P1,A MOV R2,#20RTN:MOV TH0,#9EH MOV TL0,#58HRETI END 例例5.6(5.6(扩展外部(引脚)中断源):扩展外部(引脚)中断源):扩展外部(引脚)中断源):扩展外部(引脚)中断源
16、):利用利用利用利用T0T0扩展一个外部扩展一个外部扩展一个外部扩展一个外部中断源。将中断源。将中断源。将中断源。将T0T0设置为计数方式,按方式设置为计数方式,按方式设置为计数方式,按方式设置为计数方式,按方式2 2工作,工作,工作,工作,TH0TL0TH0TL0的值均为的值均为的值均为的值均为0FFH,T00FFH,T0允许中断,允许中断,允许中断,允许中断,CPUCPU开放中断,只写初始化开放中断,只写初始化开放中断,只写初始化开放中断,只写初始化程序。程序。程序。程序。设置工作方式设置工作方式 装入计数初值装入计数初值开中断开中断 启动计数启动计数 (2)程序设计程序设计(1)计算初值
17、计算初值X=0000H 分配存储空间分配存储空间 主程序主程序例例5.7(GATE5.7(GATE位应用):位应用):位应用):位应用):利用利用利用利用T0T0的的的的GATEGATE位。位。位。位。测量测量测量测量INT0INT0引引引引脚上出现的脉冲宽度,并将结果存于片内脚上出现的脉冲宽度,并将结果存于片内脚上出现的脉冲宽度,并将结果存于片内脚上出现的脉冲宽度,并将结果存于片内30H31H30H31H处。试处。试处。试处。试编程实现上述功能。编程实现上述功能。编程实现上述功能。编程实现上述功能。T0P3.4INT0 TF1主程序:主程序:设置工作方式设置工作方式 装入计数初值装入计数初值
18、开中断开中断(无需开中断)(无需开中断)设置存储脉冲宽度的地址指针设置存储脉冲宽度的地址指针 等待等待INT0INT0变低变低 开启开启TR0(TR0(并未启动计数)并未启动计数)INT0 INT0一旦变高,则启动计数一旦变高,则启动计数 INT0 INT0一旦变低,则停止计数一旦变低,则停止计数 INTO=0 INTO=0则将计数器则将计数器TL0TH0TL0TH0存于指定存储单元存于指定存储单元查询查询INT0=0实例 设89C51单片机的工作频率为6Mhz,利用T0中断扩展方式产生1s定时,当1s定时到,从P1.0输出低电平点亮发光二极管,每产生一次中断,P1.7取反一次。电路图程序 O
19、RG 0000H ;复位入口LJMPMAIN ;转到主程序ORG 000BH ;T0中断入口LJMPTT0 ;转到T0中断服务程序ORG 0030H ;主程序入口MAIN:MOV SP,#60H ;设置堆栈指针MOV 20H,#0AH ;设置中断次数MOV TMOD,#01H ;设置T0工作方式MOV TH0,#3CH ;装入T0初值MOV TL0,#0B0HSETB TR0 ;启动T0 SETB EA ;开中断SETB ET0 ;允许T0中断SJMP$;等待中断TT0:MOV TH0,#3CH ;重装T0初值MOV TL0,#0B0HDJNZ 20h,LOOP ;中断次数未到 CLR TR0 ;1s定时时间到,停止T0CLR P1.0 ;从P1.0输出高电平LOOP:CPL P1.7 RETI ;中断返回ENDprojectP98-99:12356