STC8F系列单片机定时器学习
本篇文章介绍STC8F系列单片机。具体型号是STC8F2K08S2,主要介绍定时器的使用。
由于STC8F添加了很多特殊寄存器,所以请先按下图操作

然后写程序时,不需要写#include <reg51.h>
而是写#include <stc8.h>
,这个头文件已经将特殊功能寄存器全部定义好了。
Timer4
Timer4,定时器/计数器。
控制寄存器-T4T3M
不支持位寻址,复位值[0000,0000],详细定义请看下图。

中断标志辅助寄存器-UXINTIF
不支持位寻址,详细定义请看下图。

中断使能寄存器-IE
可位寻址,详细定义请看下图。

中断使能寄存器2-IE2
不支持位寻址,详细定义请看下图。


工作模式
定时器/计数器4的工作模式固定为 16 位重载模式。
T4L和T4H组合成为一个16位寄存器,T4L为低字节,T4H 为高字节。当[T4H,T4L]中的16 位计数值溢出时,系统会自动将内部16 位重载寄存器中的重载值装入[T4H,T4L]中。

定时器初值计算
计算公式:

65536:16位定时器,216+1=65535+1=65536
T:想要设置的中断时间。
Fosc:单片机晶振频率。
A:根据控制寄存器-T4T3M中T4x12
:定时器4速度控制位。12T模式,即CPU时钟12 分频(FOSC/12),所以A=12;1T模式,即CPU时钟不分频分频(FOSC/1),所以A=1。
THx:高八位初值。把N对256求模。
TLx:低八位初值。把N对256求余。
例如:24M晶振,12分频,定时10ms。计算得到THx=177,TLx=224。转换为十六进制是THx=0xB1,TLx=0xE0

范例程序
1 | #include <STC8.H> |
测试效果有些误差。
