先要看懂这段话:
T0_C/T:控制定时器0用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作计数器
(对引脚T0/P3.4外部脉冲进行计数)。
TMOD的第三位,我们要定时器功能就要置0!
其实定时器/计数器的核心部件是一个加法计数器,其本质是对脉冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,
则为定时方式,此时定时器/计数器每12个时钟或者每1个时钟得到一个计数脉冲,计数值加1;如果计数脉冲来自单片机外部引脚,
则为计数方式,每来一个脉冲加 1。
2.2、如果在定时器模式下,设置不分频或者12分频
新版的手册,没有详细介绍分频问题:
看看冲哥的讲解:
当定时器/计数器T0、T1及T2工作在定时模式时,特殊功能寄存器AUXR中的T0x12、T1x12和T2x12分别决定是系统时钟/12还是系统
时钟/1(不分频)后让T0、T1和T2进行计数。当定时器/计数器T3和 T4工作在定时模式时,特殊功能寄存器T4T3M中的T3x12和
T4x12分别决定是系统时钟/12还是系统时钟/1(不分频)后让T3和T4进行计数。当定时器/计数器工作在计数模式时,对外部脉冲计
数不分频。
定时方式,此时定时器/计数器每 12 个时钟或者每 1 个时钟得到一个计数脉冲,计数值加 1:
冲哥用单车把分频解释的好清楚:
脚踏板转12圈,后轮转1圈就是12分频
脚踏板转1圈,后轮转1圈就是不分频!
接着介绍AUXR:
这个AUXR不是只控制分频,还和UART、EXTRAM有关:
EXTRAM:片外用户实际扩展的 XRAM 访问控制
0:不能访问用户实际在外部用并行总线扩展的XRAM或外设,这部分用户可以实际在外部并行扩展的XRAM 或外设地址范围在:特殊的地址 7F:0000H~7F:FFFFH
1:可以访问用户实际在外部用并行总线扩展的XRAM或外设,这部分用户可以实际在外部并行扩展的XRAM 或外设地址范围在:特殊的地址 7F:0000H~7F:FFFFH。当 EXTRAM 设置为 1 后,必须目标地址在 7F:0000H-7F:FFFH范围之内,PO/P2/ALE/WR/RD才会送出控制信号。
注:STC32系列MCU芯片内部的扩展RAM/XRAM/xdata的访问不受任何其他特殊功能寄存器的影响控制,用户随时都可以进行读写。片内的 XRAM 的访问不受任何 SFR 限制。
我们先看控制分频部分:
先研究一下刚上电开机AUXR的初始值:
除了最低1位,都是0!
就是说开机默认AUXR的B7位T0x12=0 是12T模式(FOSC/12)
接着设置定时器的工作模式:
总共是5个定时器:
大致总结:
最后就是定时器0/1的控制寄存器
TF0: 该位软件清0
TR0: 该位软件写1
如果要用定时器中断,还要开启中断使能:
那么如何改变一个寄存器的值?
或者如何给一个寄存器赋值?