单片机/MCUwilliam hill官网
直播中

訾存贵

7年用户 920经验值
私信 关注
[问答]

怎样用51单片机定时器测一个高电平的持续的时间?

怎样用51单片机定时器测一个高电平的持续的时间?谢谢

回帖(3)

马占云

2023-3-6 14:14:47
给你提供个思路,以12M晶振为例,
如果高电平时间比较短(大概35ms以内)可以使用外部中断的下降沿中断,当外部中断发生时关闭定时器,记录定时器TH0TL0的值,记录的定时器TH0TL0的值就是高电平的时间、等待中断输入引脚电平为高电平,清零TH0TL0并启动定时器,反复循环。
如果高电平的时间大于35ms,则需要打开定时器中断,定时器溢出一次中断溢出次数Count++,用外部中断的下降沿中断,当外部中断发生时关闭定时器,记录定时器TH0TL0的值、计算高电平时间(高电平时间=定时器的值+Count*定时器的溢出时间),清零Count,等待中断输入引脚电平为高电平,清零TH0TL0并启动定时器,反复循环。
举报

贾飞小

2023-3-6 14:15:19
用一个IO口检测电平,同时打开定时计数器进行计时。
一直到高电平变低,然后关闭定时计数器。
例如,你用12M时钟,那么计数器每计一个数,用时1us。假如计时器关闭时数据为250,
那么高电平时间就是250*1us=250us。
举报

韩刚龙

2023-3-6 14:15:27
想用数码管显示出来?
还只是想中断时间?
想中断时间的话用Proteus的虚拟仪器模式里的第一个可以测
举报

更多回帖

发帖
×
20
完善资料,
赚取积分