找回密码
 立即注册
楼主: kmile

打卡学习《STC32位8051单片机原理及C语言程序设计视频教程》

[复制链接]

1

主题

10

回帖

71

积分

注册会员

积分
71
发表于 2023-12-3 18:50:42 | 显示全部楼层
第十一集关于定时器相关知识梳理
1、认识到定时器是计数器和定时器的统称,本质都是加法器,对计数脉冲进行计数
(1)TMOD寄存器对T0、T1进行控制,T0_C/T为0则T0是定时器,为1则是计数器;T1_C/T为0则T1为定时器,为1则为计数器
(2)AUXR寄存器对T2进行控制,T2_C/T为0则T2是定时器,为1则是计数器;
(3)T4T3M寄存器对T3、T4进行控制,T3_C/T为0则T3是定时器,为1则是计数器;T4_C/T为0则T4是定时器,为1则是计数器;
2、针对脉冲,定时器存在分频(每个时钟得到一个脉冲)与十二分频(十二个时钟得到一个脉冲)两种模式。
不分频,所需时间短,精度高;系统默认为十二分频
3、对于工作模式,即计数后是否自动重载与计数bit位
针对T0、T1,此配置由TMOD寄存器的T0_M1/T0_M0与T1_M1/T1_M0参数控制。

工作模式

工作模式

系统默认为16位自动重载,即00,系统所进行时间更长,且会自动触发时钟脉冲后为TH0、TL0赋值
4、考虑定时器的中断

定时器

定时器

TF0置0,TR0置1使中断正常运行
截图202312031835234927.jpg
对总中断允许控制位置1,对定时器对应中断允许位置1,使能定时器中断
截图202312031837139357.jpg
此配置后,定时器可进行工作
5、定时器参数配置
截图202312031837492476.jpg
SYSclk为系统时钟频率,当前设置为24Mhz(中断频率设置越低越好)
TM0PS为定时器0时钟预分频寄存器,默认值为0
T为分频状态,默认为12
当前定时时间为1毫秒,即0.001s
根据上述公式可得出TH0,TL0的配置,TH0为十六进制高八位,TL0为十六进制低八位

定时器配置代码
void Timer0_Init(void)                //1毫秒@24.000MHz
{
        AUXR &= 0x7F;                        //定时器时钟12T模式
        TMOD &= 0xF0;                        //设置定时器模式
        TL0 = 0x30;                                //设置定时初始值
        TH0 = 0xF8;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                                //定时器0开始计时
        ET0 = 1;                                //使能定时器0中断
}
6、功能实现
调用定时器要参考中断号
当前使用T0定时器,对应使用中断号1
void Timer0_Isr(void) interrupt 1
{

}
功能函数加入函数内,即可实现每隔1毫秒的操作,不受外界因素影响
注:TH0,TL0相关数据配置可借助STC-ISP进行配置(最新版)
截图202312031846498813.jpg

同时,定时器相关操作必要时需要对比芯片手册进行调配
以上
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-7 14:39 , Processed in 0.138058 second(s), 46 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表