STC15系列单片机学习3:定时器、计数器

本文详细介绍了STC15W4K系列单片机的5个16位定时器/计数器(T0-T4)的使用,包括它们的工作原理、模式设置和特殊功能寄存器。重点讲解了模式0的16位自动重装载模式,并给出了定时器0作为定时器在1T模式下工作的示例代码。此外,提到了定时器1和2的应用,以及定时器2在串口波特率发生器中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STC15W4K系列单片机有5个16位的定时器/计数器,分别是T0,T1,T2,T3,T4;

一、定时器与计数器的区分

所谓定时器和计数器,它们本质上是一样的东西,它们的核心都是一个加法计数器,都是统计脉冲的个数,区别在于,定时器是在数单片机系统时钟的脉冲个数,而计数器是在数单片机外部引脚的脉冲个数。

二、与定时器/计数器相关的特殊功能寄存器

定时器/计数器T0和T1:使用特殊功能寄存器TMOD中控制位来选择T0或T1是定时器还是计数器;

定时器/计数器T2:使用特殊功能寄存器AUXR中的控制位来选择T2是定时器还是计数器;

定时器/计数器T3和T4:使用特殊功能寄存器T4T3M中的控制位来选择T3或T4是定时器还是计数器;

我们知道STC15W4K系列单片机号称是1T的单片机,比传统单片机运行速度快,而之前的89C51单片机是12T的单片机。1T和12T是什么意思?所谓1T就表示1个时钟周期就是一个机器周期,12T表示12个时钟周期就是一个机器周期。STC15W4K系列单片机既可以工作在1T模式,也可以工作在12T模式。

因此,定时器是使用1T还是12T模式,也需要设置,设置T0,T1,T2这三个定时器相关的特殊功能寄存器就是AUXR,定时器T3和T4,使用T4T3M寄存器来进行设置。

相关的寄存器太多,还是用在哪个定时器就说到哪里。

三、定时器/计数器的工作模式

关于定时器/计数器,它们的核心都是计数,我们得知道它们是怎么计数的。

向上计数:

STC15W系列单片机都只能向上计数,就是顺着数,比如1、2、3 ......,   不能倒着数,比如100,99,98......

定时器/计数器的位宽:

常说8位,16位定时器/计数器,指的是那个计数寄存器的位宽,每个定时器的计数寄存器有两个TH 和TL,它们都是8位的,TH与TL连起来就是16位的了,16位最多就能计数到65535。

自动重装载:

要计数我们可以从0开始计,也可以从100开始计,反正计数计到65535(16位定时器),就满了,要溢出,如果我们从100开始计数,溢出之后,有自动从100开始计数,一直循环着,这就是自动重装载,也叫自动重载,自动重载就是在计数溢出之后自动的添加计数初始值。

3.1 定时器/计数器0

模式0: 16位自动重装载模式(STC官方推荐学习的模式)

 

要让定时器/计数器工作,首先要确认是定时还是计数,前面说过定时是数系统时钟的脉冲,计数是数外部引脚的脉冲,这一块需要通过配置TMOD寄存器来实现。

因为STC15W系列单片机有12T和1T模式的设置 ,需要在AUXR寄存器种设置

定时器/计数器的模式设置好之后,只要设置好控制寄存器TCON 就行,控制寄存器可以位寻址

 

我们知道定时器工作在1T模式,11.0592MHz的时钟频率,16位定时器,最多只能计65535个数,总时间也不到6ms就溢出了,要想定时1s钟,就需要计1000次,让定时器溢出1000次,

定时器一般是与中断配合使用,牵扯到中断,那就有中断控制寄存器和中断优先级控制寄存器。

定时器0工作在定时模式、1T模式、中断模式,模式0的代码如下:

#include <STC15.H> 

#define FOSC  11059200L

unsigned int cnt = 0;

void main(void)
{
	AUXR |= 0x80;//定时器0为1T模式
    
    TMOD = 0x00; //设置定时器为模式0,16位自动重装载
    
    //定时器1ms
    TL0 = (65535- FOSC/1000);
    TH0 = (65535- FOSC/1000) >> 8;
    
    TR0 = 1;//开启定时器0,开始计数
    ET0 = 1;// 使能定时器0中断
    
    EA = 1;//中断总开关也要打开
    
    while(1);
}

void Timer0_ISR() interrupt 1
{
    cnt++; //每次定时溢出,cnt就加1
    if(cnt == 1000) //累计1000次就是1s
    {
        cnt = 0;
        P55 = !P55;
    }
}
//

3.2 定时器/计数器1

定时器1的工作原理与定时器0 基本相同

3.3 定时器/计数器2

定时器/计数器2的工作模式比较单一,只有16位自动重装载模式,T2除了用作基本的定时器和计数器外,更多的是用于串口的波特率发生器。

与T2相关的寄存器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值