单片机定时的时间怎么改变(单片机定时的时间怎么改变时间格式)

单片机定时的时间怎么改变(单片机定时的时间怎么改变时间格式)

首页综合大全更新时间:2025-06-07

单片机定时的时间怎么改变,单片机定时的时间怎么改变时间格式

定时器实质是计数器。当计数脉冲周期一定时,就有定时功能。

雅帆用水桶给你打个比方吧!

一、向上计定时数器举例

当一个255毫升的烧杯,提前放入155毫升水后,此烧杯最多容纳100毫升水。生活常识大家都明白。

同理,对于八位定时计数器来说,提前存入一个数(比如说155),那么当计到FF时益处,相当于能计数101个脉冲(这点和烧杯例子不同之处)。所以我们只要计算出需要计数的数,用定时计数器的最大值减去该值即可。现在很多单片机有溢出自动赋初值功能,比较方便。

二、向下定时计数器举例

当放入155毫升水时,就能流出155毫升水。放入200毫升水,能流出200毫升水。水越多定时越长。

同理,在单片机当中只要把我们想要计数的脉冲数放入计数器寄存器即可。减到0再减到0xFF时置位中断标记。在中断里重新赋值。自动重装载的功能省去赋值这一步。

三、比较型定时计数器

这种类型结合了向上定时计数器和向下定时计数器的优点。用实物举例就是开口可以移动。如下图所示。开口在155毫升处就只能装155毫升,在50毫升处就只能装50毫升。

同理,我在只要在单片机当中设置计数的最大值即可。到达此值再加1溢出,置位定时计数器中断标记。

四,对于长定时的处理

由于定时计数器的位数一定,最大定时时间也一定,超过使用范围的可使用软件计时。既增加一个全局变量,来一次中断加1,加到想要的值后赋值0。

单片机定时器定时计算方法

对12MHz 1个机器周期 1us 12/fosc = 1us

方式0 13位定时器最大时间间隔 = 2^13 = 8.192ms

方式1 16位定时器最大时间间隔 = 2^16 = 65.536ms

方式2 8位定时器最大时间间隔 = 2^8 = 0.256ms =256 us

定时5ms,计算计时器初值 M = 2^K-X*Fosc/12 12MHz

方式0: K=13,X=5ms,Fosc=12MHz 则 M = 2^13 - 5*10^(-3)*12*10^6/12= 3192 = 0x0C78

THx = 0CH,TLx = 78H,

方式1: K=16,X=5ms,Fosc=12MHz 则 M = 2^16 - 5*10^(-3)*12*10^6/12= 60536 = 0xEC78

THx = ECH,TLx = 78H,

50ms 12MHz THx = 3CH,TLx = B0H,

10ms THx = D8H,TLx = F0H,

方式2: 最大时间 2^8Fosc/12 = 0.256ms

十进制数是怎么来的?

6MHz 一个机器周期 12/6 = 2us

定时1ms 计数初值x

(2^16-x)*2us = 1000us

x = 2^16 - 500 ,TH,TL 可置 -500

12MHz 一个机器周期 12/12 = 1us

12MHz 一个机器周期 12/12 = 1us

定时50ms 计数初值x

(2^16-x)*1us = 50000us

x = 2^16 - 50000 ,TH,TL 可置 -500

定时器 计内部晶振频率

计数器 计外部输入CPU脚上的脉冲个数 P3.4(T0) P3.5(T1) 负跳变加一

当晶振为6MHz时,最高计数频率500KHz

寄存器

1 TH TL

2 TCON

TR0 TR1 其他位是中断控制位

TMOD

GATE C/T1 M1 M0 GATE C/T0 M1 M0

C8051F00X

定时器:每个时钟加1 时钟可为系统时钟或系统时钟的1/12

CKCON

当引脚上出现电平时启动T0 当不满足时,停止T0,读出以后清零 。

大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved