
第6章定时器计数器和串行通信课件.ppt
119页第6章 定时器/计数器和串行通信,6.1 定时器/计数器的结构及工作原理 6.2 定时器/计数器的应用 6.3 串行口的结构及工作方式 6.4 串行口的应用 6.5 RS-232C串行通信接口,6.1 定时器/计数器的结构及工作原理,MCS-51单片机内部有两个16位的可编程的定时器计数器,称为定时器0、定时器1,分别用T0、T1表示它们均可独立编程,具有四种工作方式 6.1.1 定时器/计数器的结构,6.1.1 定时器/计数器的结构,6.1.1 定时器/计数器的结构,在作定时器使用时,是对内部的机器周期进行计数 每个机器周期包含12个振荡周期,即定时器的输入脉冲是对外部晶振进行12分频后得到的例如,外部晶振频率为12MHz,则定时器的输入时钟脉冲频率为1MHz,即每隔1us接收到一个脉冲,计数值加1所以,实际上是通过对机器周期的计数实现计算时间的功能当定时器用作为外部事件计数时,是对引脚T0或T1上外部输入的负脉冲信号做加法计数 将外部输入信号接到T0(P3.4)或T1(P3.5)引脚,当检测到的电平由高跳变到低时,计数器就加1因此,为了确保得到可靠的采样值,需要2个机器周期来识别一个从“1”到“0”的跳变,这就要求外部计数脉冲的高电平与低电平保持时间至少为一个完整的机器周期。
所以最高计数频率为晶振频率的1/246.1.1 定时器/计数器的结构,不管是定时还是计数,T0或T1在对内部时钟或外部事件计数时都不占用CPU时间,只有定时器计数器产生溢出时,才会向CPU发出中断请求CPU也可重新设置定时器计数器的工作方式和计数初值,以改变定时器的操作 设计数的最大值为M,所需的计数值为N,则初值X的计算方法如下: 计数状态: X=MN 定时状态: X=M定时时间/T 其中,T=12晶振频率,6.1.1 定时器/计数器的结构,6.1.2 工作方式和控制寄存器,1. 工作方式寄存器TMOD 寄存器TMOD是可编程的特殊功能寄存器,字节地址为89H,不可位寻址其中低4位控制T0,高4位控制T1 GATE:控制方式选择位,用来控制定时器启动操作方式 当GATE=0时,只能由软件控制TR0或TR1位来控制定时器的启停TRi(i=0,1)位为1,定时器启动;TRi(i=0,1)为0时,定时器停止工作; 当GATE=1时,定时器的启动要由外部中断引脚和TRi(i=0,1)位共同控制只有当外部中断引脚为高时,TRi(i=0,1)置1才能启动定时器工作6.1.2 工作方式和控制寄存器,C/T:计数/定时方式选择位,当C/T=0时设置为定时器工作方式;当C/T=1时设置为计数器工作方式。
M1、M0:工作方式控制位,对应于4种工作方式 例 要设定T1为定时器,方式2,T0为计数器,方式1,并由内部TRi控制启停则TMOD=25H,可用下面指令赋值: MOV TMOD, #25H,6.1.2 工作方式和控制寄存器,2. 控制寄存器TCON TCON字节地址为88H,位地址为88H8FH TF1和TF0:定时器T1和定时器T0的溢出标志位 TR1和TR0:定时器T1和定时器T0的启动控制位 IE1和IE0:外部中断INT1和外部中断INT0的中断请求标志位 IT1和IT0:外部中断INT1和外部中断INT0的触发方式选择位 TCON中低4位是与外部中断有关的位,高4位为定时器控制位对T0的启、停控制可以通过以下位操作指令完成: SETB TR0 ;启动T0计数 CLR TR0 ;停止T0计数,,,,,6.1.3 定时器/计数器的工作方式,1. 工作方式0 TMOD中M1M000时,定时/计数器被选为工作方式0,计数器长度为13位由TLi(i=0,1)的低5位(TL的高3位未用)和THi(i=0,1)的8位构成13位计数器(对T0、T1都适用)当C/T=0为定时方式时,T0对机器周期进行计数。
设定时时间为t,则计数初值 例6-1设T0工作方式0,定时时间t=1ms,fosc=12MHz,计算T0的计数初值 7192=11100000 11000B= E0H 18H 高8位 低5位 TH0计数初值为E0H,TL0计数初值为18H6.1.3 定时器/计数器的工作方式,,,,,,6.1.3 定时器/计数器的工作方式,当C/T=1为计数方式时,外部计数脉冲由T0引脚输入当外部信号电平发生由1至0的跳变时,计数器加16.1.3 定时器/计数器的工作方式,2. 工作方式1 TMOD中M1M001时,定时计数器设定为工作方式1,工作方式1是16位定时计数器,其结构和工作过程几乎与方式0完全相同,唯一的区别是计数器的长度为16位 设定时时间为t,则计数初值X为:,,,6.1.3 定时器/计数器的工作方式,3. 工作方式2 方式2为能自动重装初值的8位计数器6.1.3 定时器/计数器的工作方式,3. 工作方式2 方式2优点:省去了由软件重新赋初值的麻烦,所以它常用于定时控制或串行口的波特率发生器 方式2缺点:定时/计数长度短 设定时时间为t,则计数初值X为:,,,6.1.3 定时器/计数器的工作方式,工作方式3只适用定时器T0,而T1无此工作方式,若将T1设置为方式3,相当于TR1=0,T1停止工作。
此时,T0被拆成两个独立的8位计数器TH0和TL06.1.3 定时器/计数器的工作方式,其中TL0使用原来T0的一些控制位和引脚,他们是C/T、GATE、TR0、TF0和T0(P3.4)引脚及 (P3.2)引脚此方式下的TL0作为8位计数器,其功能和方式0、方式1一样,可以实现定时和计数两种功能,只不过是一个8位的计数器;而TH0只能完成定时功能,对机器周期进行计数它借用原定时器T1的控制位TR1和溢出标志位TF1,同时占用了T1的中断请求信号 工作方式3为定时器T0增加了一个8位的定时器,此时的T1仍可以设置为工作方式0、1、2,用在任何不需要中断的场合T0工作于模式3 时,T1一般用作串行口波特率发生器6.2 定时器/计数器的应用,1. 工作方式0的应用 例6-2设单片机晶振频率fosc=6MHz,使用定时器T1以方式0产生周期为600s的等宽方波脉冲,并由P1.7输出,以查询方式完成 (1)计数初值 欲产生周期为600s的等宽方波脉冲,只需在P1.7端交替输出300s的高低电平即可,应此定时时间为300s设待求计数初值为N,则 将低5位0AH写入TL1,将高8位FBH写入TH1中。
6.2 定时器/计数器的应用,(2)工作方式寄存器TMOD初始化 因定时计数器1为工作方式0,所以应使M1M0=00为实现定时功能应使当C/T=0,为实现定时器的软件控制启动应使GATE=0,因此控制寄存器TMOD=00H (3)TR1=1为启动,TR1=0为停止 程序如下:,ORG 0000H LJMP START ORG 0030H START: MOV TCON, #00H ;清TCON MOV TMOD, #00H ;工作方式设定 MOV TH1, #0FBH ;计数初值设定 MOV TL1, #0AH MOV IE, #00H ;关中断 SETB TR1 ;启动定时器 LOOP0: JBC TF1, LOOP1 ;查询是否溢出 SJMP LOOP0 LOOP1: MOV TH1, #0FBH ;重新设值 MOV TL1, #0AH CPL P1.7 ;输出取反 SJMP LOOP0 END,法2:采用中断方式 ORG 0000H LJMP START ORG 001BH LJMP T1INT ORG 0100H START: MOV SP, #30H MOV TCON, #00H MOV TMOD, #00H MOV TH1, #0FBH MOV TL1, #0AH ,SETB TR1 SETB ET1 SETB EA MAIN: AJMP MAIN T1INT: MOV TH1, #0FBH MOV TL1, #0AH CPL P1.7 RETI,6.2 定时器/计数器的应用,2. 工作方式1的应用 例6-3设单片机晶振频率fosc=12MHz,使用定时器T0以方式1产生周期为3ms、占空比为1:2的脉冲波,并由P1.7输出,以查询方式完成。
(1)计数初值 欲产生周期为3ms、占空比为2:3的脉冲波,可设定定时时间为1ms,在程序中加入P1.7口的状态判断,当P1.7为高电平时,需溢出两次才对端口取反设待求计数初值为N,则 将低8位18H写入TL0,将高8位FCH写入TH0中6.2 定时器/计数器的应用,(2)TMOD初始化 因定时计数器T0为方式1,所以M1M0=01为实现定时功能应使当C/T=0,为实现定时器的软件控制启动应使GATE=0,因此设定工作方式控制寄存器TMOD=01H (3)由TR0启动和停止定时器TR0=1为启动,TR0=0为停止 程序如下: ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV TMOD,#01H ;T0为16位定时模式 MOV TL0, #18H ;定时器赋初值 MOV TH0, #0FCH ;定时器赋初值,6.2 定时器/计数器的应用,MOV R2, #02H ;R2赋初值 SETB TR0 ;开启定时器 LOOP: JBC TF0, CPLP ;定时时间到,转CPLP并将TF0清零 AJMP LOOP ;TF0为0则转LOOP循环等待 CPLP: MOV TL0, #18H ;定时器重装初值 MOV TH0, #0FCH ;定时器重装初值 JB P1.7,CPLP1 ;P1.7为1则转CPLP1 CPL P1.7 ;P1.7为0则取反 MOV R2, #02H ;R2重新赋值 AJMP LOOP ;转LOOP等待定时时间到 CPLP1: DJNZ R2, LOOP ;2ms未到转LOOP CPL P1.7 ;2ms到对P1.7口取反 AJMP LOOP ;转LOOP等待定时时间到 END ;程序结束,【练习1】 已知某生产线的传送带上不断地有产品单向传送,产品之间有较大间隔。
使用光电开关统计一定时间内的产品个数假定红灯亮时停止统计,红灯灭时才在上次统计结果的基础上继续统计,试用单片机定时器/计数器T1的方式1完成该项产品的计数任务1) 初始化: TMOD=11010000B=0D0H (GATE=1, C/T=1, M0M1=01) TCON=00H (2) T1在方式1时, 溢出产生中断, 且计数器回零, 故在中断服务程序中, 需用R0计数中断次数, 以保护累积计数结果3) 启动T1计数, 开T1中断 程序清单如下:,ORG 0000H AJMP START ; 复位入口 ORG 001BH AJMP T1INT ; T1中断入口 ORG 0100H START: MOV SP, 60H ; 初始化程序 MOV TCON, 00H MOV TMOD, 0D0H MOV TH1, 00H,MOV TL1, 00H MOV R0, 00H ; 清中断次数计数单元 MOV P3, 28H; 设置P3.3,P3.5第二功能 SETB TR1 ; 启动T1 SETB ET1; 开T1中断 SETB EA ; 开总中断 MAIN: ACALL DISP ; 主程序, 调显示子程序 。












