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高电平脉冲的处理代码
}
}
}

posted @ 2025-04-16 15:29  AH-syqlg  阅读(22)  评论(0)    收藏  举报