基于蓝桥杯的单片机模块练习——定时/计数器

基于蓝桥杯的单片机模块练习——定时/计数器

定时/计数器相关知识点


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;
	
    //自定义中断里要处理的代码
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ღ 金龍戲水 ღ

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值