基于蓝桥杯的单片机模块练习——定时/计数器
定时/计数器相关知识点
1.STC15F2K60S2系列的定时/计数器类型
2.定时/计数器相关的寄存器
(1)TCON寄存器
IE和IT位已在中断一节介绍,在此不做赘述。
(2)TMOD寄存器
(3)AUXR辅助寄存器
(4)IE寄存器
(5)IE2寄存器
3.有关定时/计数器2的一些知识
4.定时/计数器实际应用需注意的问题
该问题的应对方法可在需要时参考用户手册学习
相关C函数
1.初始化函数
//初始化定时器0或1
void Init_TimerX()
{
TMOD = 0xXX;//对照TMOD寄存器配置
THX = (65536 - 所需计数值) / 256;
TLX = (65536 - 所需计数值) % 256;
EA = 1;//开总中断
ETX = 1;//开定时器中断
TRX= 1;//开始计数/计时
//AUXR未进行配置,则默认定时/计数器工作在12T模式下
}
//初始化定时器2
void Init_Timer2()
{
//AUXR |= 0x08;//计数模式,若想要定时模式,则不需要此步骤
T2H = (65536 - 所需计数值) / 256;
T2L = (65536 - 所需计数值) % 256;
EA = 1;//开总中断
IE2 |= 0x04;//开定时器中断
AUXR |= 0x10;//开始计数/计时
}
1.中断服务函数
void Service_TimerX() interrupt A/*A == 1对应T0
A == 3对应T1
A == 12对应T2*/
{
//如果不是工作在自动重装模式下,则应该在该函数开头重新配置
//THX = (65536 - 所需计数值) / 256;
//TLX = (65536 - 所需计数值) % 256;
//自定义中断里要处理的代码
}