12- 定时器介绍和定时器0定时1ms

本文详细介绍单片机定时器0如何实现1ms定时,包括手动重装模式的原理、代码实现步骤(设置分频系数、模式选择、中断申请)以及自动重载模式的比较。通过寄存器控制位操作和外部晶振频率计算,探讨了定时精度和初始化值的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定时器介绍和定时器0定时1ms

1. 定时/计数器的概念

image-20210828160516608

.

2. 定时/计数器的模式

image-20210822215756856

16位手动重装模式1

即定时时间到,重新为TL0,TH0赋值

3. 任务:定时1ms

3.1 细谈原理

由下方定时器工作图,可总结出涉及的寄存器控制位:

  1. AUXR.7:分频系数设置,不同分频值使产生单个脉冲的速度不一
  2. TMOD.2:定时/计数模式设置
  3. TR0与其相关的“与”逻辑
  4. TMOD.3:在定时模式下,=0并取反再经过“或”逻辑,确保最终结果=1

附:若TMOD.3=1,取反=0,则外部输入INT0=1/=0,两者“或”逻辑运算结果=0/=1,将控制定时器开关,得到运行时间(使用案例:超声波测距)

  1. TH0,TL0:定时值设置

  2. ET0:中断允许位

  3. EA:总中断开关

注:

图中INT0仅仅是单片机INT0的脚,定时器运用与外部中断INT0无关,仅仅是引脚重合

image-20210822222207402

image-20210822222428805

除了打开应打开的位,手动重装定时1ms还需在定时器T0的中断服务函数给TL0,TH0赋初值

外部晶振执行时间0.4us,1ms即是产生2500个脉冲

TL0,TH0共16位,最大值65535

故应赋初值=65536-2500=63036

image-20210822222904158

则TH0=0xf6;TL0=0x3c

每个脉冲来时+1,当定时器值到65536时溢出,向CPU申请中断

3.2 代码实现过程:

3.2.1 定时器0设置并申请中断

image-20210822222428805

  1. AUXR.7

image-20210822224414256

使用按位与操作,仅b7位写0,其余位写1

  1. TMOD.GATE

定时器0低4位清0 TMOD&=0xf0;

image-20210822225132705

  1. 定时器 0模式选择

M0写1 TMOD|=0x01;

image-20210822225533044

  1. TR0

image-20210829105639261

  1. TH0,TL0装初值

初值从63036++,时钟每个脉冲进入便+1

image-20210828172529909

  1. ET0=1;EA=1;

image-20210828172834498

image-20210822232627630

至此,定时器0已经可以向CPU申请中断

3.2.2 CPU处理中断

image-20210822230820205

有些单片机只有1个中断号,要判断是串口中断,还是定时器中断,则需要判断中断标志位

image-20210822230723309

定时器T0的中断服务函数 void Timer0_Rountine(void) interrupt 1

本次测试是手动重装,需要在函数里重装初值

测试1

image-20210823092019064

image-20210823092005574

测试2

image-20210823091813229

image-20210823092145375

测试3

image-20210823092435209

image-20210823092608453

定时器0模式1非自动重装

不重装初值,定时器从0开始计数,计到65536溢出清0,申请中断,定时器再从0开始计数

image-20210823092415372

测试4

16位自动重装

image-20210823093002340

image-20210823093137275

image-20210823093119747

image-20210823093206036

省去重装初值时间,则精准1ms定时

手动重装赋初值,定时时间不精确,有误差

注:STC-ISP软件内置定时器计算器

可根据相应要求选择自动计算给出设置值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值