单片机怎么嵌套定时(12MHz晶振)

2019-07-15 08:36发布

单片机怎么嵌套定时(12MHz晶振)。假设我想定时50 999 999us,我怎么利用T0和T1定时器嵌套定时?例如:我想用T1定时9999us,再用T0定时5099ms(也就是50 990 000us),这能实现?能要怎样弄?不能可以用什么其他代替?要求:如果有按键按下,定时才开始(到时间后就让静态数码管显示一个0好了)要不单片机什么都不做。求思路或者具体的单片机C语言代码(最好带有注释)。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
GreatDream
1楼-- · 2019-07-15 18:14
wulinwl 发表于 2018-4-21 07:40
50999999us与51s有啥区别?晶振时基根本达不到这么高的精确度,写这个代码有实际意义吗?

有实际意义的,这个50999999只是举例,也可以是其他的值,例如50 555 555us。
12MHz单片机的定时器不是也可以定时1us的吗,那么9999us应该可以吧?
大概说一下你的思路,或者你觉得可以有其他什么可以代替?(无论是改晶振,还是有什么硬件可以定时到us的,或者什么其他)
blust
2楼-- · 2019-07-15 21:28
首先,你的单位转换有问题,你跟谁学的5099ms是50990000us? 999us再加1us就是1ms了。。。
关于定时器嵌套问题,其实用一个定时器就可以完成,你可以配置一个1us的定时器,然后另外定义ms数与us数的变量,进一次定时器中断us数加一,us数加到1000后清零,同时ms数加一,可以灵活计时任意数值。
如果你非要用两个定时器的话,你可以在T0定时5099ms(先按照你说的数举例吧),在T0进中断后初始化并启动T1,然后在T1进中断时就是你需要的时间了。
GreatDream
3楼-- · 2019-07-16 00:14
 精彩回答 2  元偷偷看……
blust
4楼-- · 2019-07-16 00:33
可以用高频单片机,现在很多单片机内部都有倍频电路,晶振足够了。
或者如果你不需要很灵活的计时的话,你可以把定时器时间设成1ms或者任何合适的时间值。当然,肯定是单片机工作频率越高,定时精度越高。
GreatDream
5楼-- · 2019-07-16 05:55
blust 发表于 2018-4-25 08:13
可以用高频单片机,现在很多单片机内部都有倍频电路,晶振足够了。
或者如果你不需要很灵活的计时的话,你可以把定时器时间设成1ms或者任何合适的时间值。当然,肯定是单片机工作频率越高,定时精度越高。

就是要灵活计时,而且定时精度最好能达到1us及以上。
高频单片机?有哪些?具体用什么(常用,便宜)?
blust
6楼-- · 2019-07-16 09:41
这个有很多,现在大部分单片机都可以达到1us以上的精度,12M的晶振可以倍频到48M或者更高,论坛有很多单片机板块,你可以去看看了解下。

一周热门 更多>