【51单片机学习笔记】定时器/计数器、中断

一、定时器/计数器

        如果要对来自单片机外部的脉冲信号进行计数,或者利用单片机进行定时控制,就需要用到单片机的定时器/计数器。

1.基本概念

        计数:51单片机中有T0T1两个计数器,可以对单片机计数脉冲输入引脚上的脉冲计数,它们分别由两个八位计数单元构成。比如,T0TH0TL0两个八位特殊功能寄存器构成,所以T0T1都是十六位的计数器,最大计数量是65536T0T1既可以作为计数器用,又可以作为定时器用。当作为计数器用时,T0T1计数的脉冲分别从P3.4P3.5引脚输入,此时这两个引脚只能输入计数脉冲,不能作普通的I/O口用了。

        定时:51单片机的T0T1也可以作为定时器用。设为定时方式时,T0T1与外部输入断开,而与内部脉冲信号连通,对内部信号计数,这个内部信号就是单片机时钟振荡器12分频后的信号。假如单片机的时钟振荡器可以产生12MHZ的时钟脉冲信号,经12分频后得到1MHZ的脉冲信号,1MHZ的信号每个脉冲的持续时间(1个周期)为1μs。如果定时器T01MHZ的信号进行计数,当计到65536时,将需要65536μs,即65.536ms。此时,定时器计数达到最大值,也会溢出并送给CPU一个信号,通知CPU计数器已经计满了。所以定时器定时时间的长短,和单片机所使用的振荡器频率有关,振荡器频率越高,定时器每次加一的时间就越短,定时时间也越短。

2.结构及工作原理

        结构:51单片机中的定时器、计数器是对同一种结构进行不同的设置而形成的。定时器/计数器T0T1分别是由TH0TH1TL0TL1两个八位计数器构成的十六位计数器,两者均为加一计数器。

        工作原理:T0和T1用作计数器时,通过单片机的P3.4P3.5引脚对外部脉冲信号计数,当该引脚出现一个高到低的负跳变时,计数器加一,直到产生溢出。T0T1用定时器时,晶振产生的振荡信号12分频后作为输入,定时器以12分频后的脉冲周期为基本计数单位,对输入信号计数,直到产生溢出。无论它们工作于计数方式或计时方式,计数时都不占用CPU时间,因此定时器、计数器的工作并不影响CPU其他工作的执行,这就是采用定时、计数器的优点。因为CPU是顺序执行程序的,如果让它延时一段时间再执行某个定时任务,它在延时的时间里就无法进行其他工作,这样做就会让CPU定时之外的其他工作无法进行。

3.控制寄存器与功能设置

        定时、计数器必须在寄存器TCONTMOD的控制下才能准确工作,因此必须掌握好这两个寄存器的控制方法。

        方式控制寄存器(TMOD):TMOD属于单片机的特殊功能寄存器,功能是控制T0T1的工作方式。它的字节地址为89H,不能按位操作,只能对整个字节读或写,比如设定初值可以写为TMOD=0x01,在上电和复位时,TMOD的初值为00H

位序

B7

B6

B5

B4

B3

B2

B1

B0

位定义

GATE

C/T

M1

M0

GATE

C/T

M1

M0

        TMOD寄存器的高四位用来控制T1,低四位用来控制T0。
        
GATE门控制位,用来控制定时、计数器的启动模式。GATE=0时,只要使TCON中的TR0置高电平,就可以启动定时、计数器工作;GATE=1时,除了需将TR0置高电平外,还需要外部中断INT0也为高电平时,才能启动定时、计数器T0工作。
        C/T:定时、计数器模式选择位。该位为高电平,T0设置为计数器;该位为低电平,T0设置为定时器。
        M1、M0:定时、计数器工作方式设置位。这两位不同取值的组合,可以将定时、计数设置为不同的工作方式

M1

M0

工作方式

说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值