如何实现单片机实时测量输入中断口的脉冲宽度
1个回答
展开全部
您好!可以分以下几步来解决这个问题!
1、首先设置一个定时器,1us中断一次,然后每次中断检测IO的电平。
2、在定时中断函数内定义一个static 的int类型静态变量 count;
3、每次检测到IO口为高电平(假设为高电平脉冲)的时候,count++;
4、在IO口重新回到低电平的时候,count的值就是时间了,比如count为1000,那么脉冲宽度就是1000*1us=1ms
5、在读取count的值之后,复位count为0;继续测量下一个脉冲宽度。
纯手打,给个采纳呗~
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++;
}
深圳思驰科技有限公司_
2024-10-23 广告
2024-10-23 广告
深圳思驰科技是国内先进入芯片解密领域的公司,拥有数十年的丰富经验,成功帮助国内外企业、政府及知名科研机构攻克多个技术难题。在医疗电子、工控设备、军事航天、通信设备、广电设备、交通设备、汽车电子、家用电子等行业都成功推出了多款创新产品,熟悉这...
点击进入详情页
本回答由深圳思驰科技有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询