在单片机(SCM)的开发中,我们会涉及到使用定时器(Timer)来进行时间相关的操作,定时器有很多的寄存器,其中一个非常重要的寄存器就是tmod寄存器。
tmod寄存器是定时器的模式寄存器,它的作用是配置定时器的工作模式以及时钟源,可以设置8个不同的工作模式。
tmod寄存器的结构比较简单,它是一个8位的寄存器,其二进制的位控制着定时器的工作模式。其中高4位为定时器1的模式设置位,低4位为定时器0的模式设置位。
tmod寄存器的工作模式涉及到定时器的工作方式,主要有4种模式:
模式0是16位定时器/计数器的工作方式,对应tmod寄存器的低4位是0000,高4位无所谓。在模式0下,定时器的计数范围是0-65535,在定时器溢出时,定时器值会清零,同时会触发定时器中断。
模式1是16位定时器/计数器的工作方式,对应tmod寄存器的低4位是0001,高4位无所谓。在模式1下,定时器的计数范围是0-65535,在定时器溢出时,定时器值不会清零,而是会接着上一次计数继续计数,同时会触发定时器中断。
模式2是8位自动重装定时器的工作方式,对应tmod寄存器的低4位是0010,高4位无所谓。在模式2下,定时器的计数范围是0-255,在定时器溢出时,定时器值会自动重装成一个初始值,同时会触发定时器中断。
模式3是8位定时器/计数器的工作方式,对应tmod寄存器的低4位是0011,高4位无所谓。在模式3下,定时器的计数范围是0-255,在定时器溢出时,定时器值会清零,同时会触发定时器中断。
tmod寄存器不仅可以设置定时器的工作模式,还可以设置时钟源,有两种时钟源可供选择:
当设置tmod寄存器的低2位为00时,定时器将使用内部时钟源作为时钟。这个时钟源是定时器的时钟频率。例如,使用11.0592MHz的外部晶振,定时器的时钟频率一般会被设置为1MHz。
当设置tmod寄存器的低2位为01、10或11时,定时器将使用外部时钟源作为时钟。在这种情况下,定时器的时钟信号将来自于外部输入引脚(T0或T1)。
tmod寄存器作为定时器的重要寄存器,对于实现各种时间相关的功能至关重要,因此,程序员必须深刻理解tmod寄存器的作用和使用方法。