C语言判断引脚电平是否为设定时间
1、查询法(10us,24M晶振)
include <reg51.h>
include <intrins.h>
sbit inputPin = P1^0; // 假设输入引脚在P1.0
bit Check10usPulse()
{
unsigned char i;
if(inputPin) // 检测到高电平
{
for(i=0; i<10; i++) // 12MHz下约10us
{
_nop_(); _nop_(); _nop_(); _nop_(); // 调整nop数量精确延时
if(!inputPin) return 0; // 高电平持续时间不足10us
}
return 1; // 高电平持续超过10us
}
return 0;
}
void main()
{
while(1)
{
if(Check10usPulse())
{
// 检测到10us高电平脉冲的处理代码
}
}
}

浙公网安备 33010602011771号