各位高手请了,用TMR0计数器采集20khz-30khz的频率

[复制链接]
 楼主| cnlgm 发表于 2016-5-21 10:25 | 显示全部楼层 |阅读模式
各位高手请了,用TMR0计数器采集20khz-30khz的频率,每变化1Khz输出一个结果,用if语句还是用swicth语句还是用do...swicth语句,采用何种算法更简洁有效?
f=count*256+TMR0
tmr0分频1:256,count:TMR0中断次数寄存器
兰天白云 发表于 2016-5-23 13:20 | 显示全部楼层
用分频不行,,if语句就可以
 楼主| cnlgm 发表于 2016-5-25 09:16 | 显示全部楼层
多谢兰天白云,如果不用分频器,TMR0溢出255+1脉冲,如何计数21Khz的脉冲?是不是计数TMR0溢出中断次数?
兰天白云 发表于 2016-5-25 17:16 | 显示全部楼层
TMR0溢出有中断,一次中断计256个,从FF变00也算一个,你的计数时间用1秒还是0.5秒?假设用1秒,那数到21K个脉冲就是21KHz喽
 楼主| cnlgm 发表于 2016-5-28 07:32 | 显示全部楼层
多谢兰天白云!用1秒计时,如果不用分频器的话:f=count(中断次数)+TMR0(当前计数),用if、else if,多向分支语句进行判断。是这样吗。
 楼主| cnlgm 发表于 2016-5-28 07:50 | 显示全部楼层
刚才检测通过了,f=count*256+TMR0,多谢兰天白云。
Rain_King 发表于 2016-5-28 09:09 | 显示全部楼层
可以使用捕捉的嘛...当然你要说常扫描,然后用定时器计数,也是可以的..............
MOn51 发表于 2016-5-28 12:19 | 显示全部楼层
cnlgm 发表于 2016-5-28 07:50
刚才检测通过了,f=count*256+TMR0,多谢兰天白云。

这只是一个计算方法,它并不能测量出频率!关键是如何精确测频问题:可以用一个定时器定时100毫秒或者1秒。用另一个定时器记脉冲个数。频率高的话最好用带扑捉的片子。计算一次频率与上次比较大于1K就输出。
MOn51 发表于 2016-5-28 12:21 | 显示全部楼层
本帖最后由 MOn51 于 2016-5-28 12:22 编辑

PIC12F683 有门控功能,可以借助这个功能测量频率。程序简单,硬件更简单。只使用一个定时器。
 楼主| cnlgm 发表于 2016-6-13 16:17 | 显示全部楼层
多谢各位回复的朋友,好人一生平安。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

90

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

24

主题

90

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部