51单片机 C语言 怎样测量高电平持续的时间

2025-02-27 21:54:22
推荐回答(2个)
回答1:

假设定时器不溢出,P1.0为高电平输入引脚:
while(P1^0==1);//等待眼前的高电平过去
while(P1^0==0);//等待下一个高电平来到
TR0=1;//启动定时器
while(P1^0==1);//等待高电平结束
TR0=0;//关闭定时器
HIGH=TL0+TH0*256;//读取时间

回答2:

设你的p0.0接入脉冲,用t0定时计数器计数:
tr0
=
0;
while(p0.0
==
0)
//当检测到高电平,开启计数器
tr0
=1;
while(p0.0
==
1)
//当脉冲变低,关闭计数器
tr0
=
0;
然后直接读取
th0和tl0中的计数数据,再乘以你的计数时间间隔(每计一个数的时间,跟你的时钟频率有关系)。