一、定时器
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)必须用直接寻址指令访问。
符号 | 描述 | 地址 |