完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
单片机怎么嵌套定时(12MHz晶振)。 假设我想定时50 999 999us,我怎么利用T0和T1定时器嵌套定时? 例如:我想用T1定时9999us,再用T0定时5099ms(也就是50 990 000us),这能实现?能要怎样弄?不能可以用什么其他代替? 要求:如果有按键按下,定时才开始(到时间后就让静态数码管显示一个0好了)要不单片机什么都不做。 求思路或者具体的单片机C语言代码(最好带有注释)。 |
|
相关推荐
9个回答
|
|
这个你需要查单片机的手册,每一个单片机设置都不一样,你只需要按照手册里设置定时器T0,定时器T1的触发中断的时间就行,手册上会写着你怎么配置寄存器,会有相应的表格。
|
|
|
|
50999999us与51s有啥区别?晶振时基根本达不到这么高的精确度,写这个代码有实际意义吗?
|
|
|
|
有实际意义的,这个50999999只是举例,也可以是其他的值,例如50 555 555us。 12MHz单片机的定时器不是也可以定时1us的吗,那么9999us应该可以吧? 大概说一下你的思路,或者你觉得可以有其他什么可以代替?(无论是改晶振,还是有什么硬件可以定时到us的,或者什么其他) |
|
|
|
首先,你的单位转换有问题,你跟谁学的5099ms是50990000us? 999us再加1us就是1ms了。。。
关于定时器嵌套问题,其实用一个定时器就可以完成,你可以配置一个1us的定时器,然后另外定义ms数与us数的变量,进一次定时器中断us数加一,us数加到1000后清零,同时ms数加一,可以灵活计时任意数值。 如果你非要用两个定时器的话,你可以在T0定时5099ms(先按照你说的数举例吧),在T0进中断后初始化并启动T1,然后在T1进中断时就是你需要的时间了。 |
|
|
|
blust 发表于 2018-4-24 08:35 好吧,上面的举例确实错了,不是5099ms,应该是5099的10ms。 我用的是51单片机,晶振12M,这个好像不能定时us,百us的好像也不行。 要定时us的好像是说要改晶振还是改工作频率什么的? 你可以具体解释说明一下,要定时us级要用什么晶振或者什么单片机? |
|
|
|
可以用高频单片机,现在很多单片机内部都有倍频电路,晶振足够了。
或者如果你不需要很灵活的计时的话,你可以把定时器时间设成1ms或者任何合适的时间值。当然,肯定是单片机工作频率越高,定时精度越高。 |
|
|
|
blust 发表于 2018-4-25 08:13 就是要灵活计时,而且定时精度最好能达到1us及以上。 高频单片机?有哪些?具体用什么(常用,便宜)? |
|
|
|
这个有很多,现在大部分单片机都可以达到1us以上的精度,12M的晶振可以倍频到48M或者更高,论坛有很多单片机板块,你可以去看看了解下。
|
|
|
|
嵌套你就在T0计数完成后,开启T1,关闭T0.这个时候就可以了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
stm32f407+ksz8863rlli概率性ping不通
698 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-常见网络服务搭建之NFS服务搭建
374 浏览 0 评论
求助:辉芒微芯片 FDM B11GBMH 的信息及开发环境安装
375 浏览 0 评论
918 浏览 0 评论
嵌入式 学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之输入输出重定向
774 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11306 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 05:03 , Processed in 0.699674 second(s), Total 57, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号