51单片机检测IO口高低变化,3秒内有变化无动作。3秒无变化立即启动继电器?
我想做个电机保护装置,电机有磁铁有霍尔传感器,电机正常转动一圈会触发霍尔一次,霍尔模块会输出一次低电平,正常情况下1秒转一圈,我们设置3秒内检测若IO口(P2.0)电平若...
我想做个电机保护装置,电机有磁铁有霍尔传感器,电机正常转动一圈会触发霍尔一次,霍尔模块会输出一次低电平,正常情况下1秒转一圈,我们设置3秒内检测若IO口(P2.0)电平若不停的有变化则无任何动作,若没有变化,(可以确定电机卡主或者堵转了),这时P2.1输出低电平去控制继电器吸合断开电机电源,
怎么写代码,谢谢指教,,, 展开
怎么写代码,谢谢指教,,, 展开
1个回答
展开全部
sbit IN=P2^0;
sbit OUT=P2^1;
uint time ;
void main()
{
OUT=0;//继电器不动作
time=0;
while(1)
{
while(IN==1)//高电平
{
delayms(10);
time++;
if(time>300) OUT=1;//超过3S,动作
}
time=0;
while(IN==0)//低电平
{ delayms(10);
time++;
if(time>300) OUT=1;//超过3S,动作
}
time=0;
}
}
sbit OUT=P2^1;
uint time ;
void main()
{
OUT=0;//继电器不动作
time=0;
while(1)
{
while(IN==1)//高电平
{
delayms(10);
time++;
if(time>300) OUT=1;//超过3S,动作
}
time=0;
while(IN==0)//低电平
{ delayms(10);
time++;
if(time>300) OUT=1;//超过3S,动作
}
time=0;
}
}
追答
延时时间与晶振频率有关,你可以尝试一下更简洁的程序
while(1)
{
flag=IN;
delayms(10);
if(flag==IN)
{
time++;
if(time>300) OUT=1;//超过3S,动作
}
else time=0;
}
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询