如何实现单片机实时测量输入中断口的脉冲宽度

 我来答
骑鹰的蜗牛
2019-06-12 · TA获得超过260个赞
知道小有建树答主
回答量:348
采纳率:0%
帮助的人:52.5万
展开全部
您好!可以分以下几步来解决这个问题!
1、首先设置一个定时器,1us中断一次,然后每次中断检测IO的电平。
2、在定时中断函数内定义一个static 的int类型静态变量 count;
3、每次检测到IO口为高电平(假设为高电平脉冲)的时候,count++;
4、在IO口重新回到低电平的时候,count的值就是时间了,比如count为1000,那么脉冲宽度就是1000*1us=1ms
5、在读取count的值之后,复位count为0;继续测量下一个脉冲宽度。
纯手打,给个采纳呗~
更多追问追答
追问
您的意思是给定时器计数器0设置1us的初值,然后当中断0为高电平时,开启中断,开启定时器,请问count怎么定义的EA=1;   
TMOD=0x01;
TH0=(65535-10)/256;
TL0=(65535-10)%256;
while(!P32)
ET0=1;
TR0=1; 然后count怎么计时啊?
追答
在定时器中断函数里设置一个静态变量

static int count = 0;
if(P10 ==1)//若高电平,count增加
{
count++;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式