STC89C51RC系列定时器和寄存器的简单说明

本文详细介绍了STC89C51RC单片机中的定时器工作原理、计数模式、如何利用定时器T0和T1实现10ms定时,并重点讲解了特殊功能寄存器如TMOD和TCON的配置。

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

一、定时器

1、什么是定时器

定时器就是通过其内部晶振的振荡来定时或者计数,让单片机某个部件数数。

1.1、定时器计数模式

定时器每经过一个周期就加1 ,STC89C51RC 系列单片机计数模式有两种,一种是12T模式,每12个时钟加1,与传统89C51单片机相同,另一种是6T模式,每6个时钟加1,速度是传统89C51单片机的两倍。STC89C51RC/RD+系列单片机的定时器1和定时器0,当定时器1做波特率发生器时,定时器0可以当两个8位定时器用。

1.2、 定时器如何计算

  时钟周期也称为振荡周期,定义为时钟脉冲的倒数,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us,是计算机中最基本的、最小的时间单位。

机器周期也成CPU周期,在计算机中,为了便于管理,常把一条指令执过程分为若干阶段,每一阶段完成一个基本操作所需要时间称为机器周期。

当晶振频率是(11.0592MHz=11059200Hz)时,跳一次等于一个机器周期,一个机器周期等于12个时钟周期,一个时钟周期等于晶振的倒数:1/11059200秒,跳一次就是一个机器周期。12/11059200=1.085微秒。

定义一个10ms的定时器,用TL0和TH0加1计数,都是8bit,一共是16位,总共可以数65536下,累计时是 71ms ,数一次是1.085微秒,10ms/1.085us=9216 ,65536 - 9216=  56320, 从56320数数数到65536,经过的时间刚好是10ms,转化为16进制是DC00,00赋值给TL0,DC赋值给TH0。

下图是定义定时器T0一个10ms的代码:

void Timer0Init(void)        //10毫秒@11.0592MHz
{
    AUXR &= 0x7F;       //定时器时钟12T模式
    TMOD &= 0xF0;      //设置定时器模式
    TMOD |= 0x01;       //设置定时器模式
    TL0 = 0x00;           //设置定时初值
    TH0 = 0xDC;         //设置定时初值

    TF0 = 0;                //清除TF0标志
    TR0 = 1;               //定时器0开始计时
}

二、寄存器 

1、什么是寄存器 

寄存器的功能是存储二进制代码

1.2、特殊功能寄存器(SFRs)

特殊功能寄存器(SFR)是用来对片内各功能模块进行管理、控制、监视的控制寄存器和状态寄存器,是一个特殊功能的RAM区。STC89C51RC/RD+ 系列单片机内的特殊功能寄存器(SFR)与内部高128字节RAM貌似共用相同的地址范围,都使用80H-FFH,但特殊功能寄存器(SFR)必须用直接寻址指令访问。

符号 描述 地址
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值