读取单片机IO口的数据,连续读4次,如果四次都相同,就进行操作,每隔0.1S读取一次.这个函数怎么写啊.
答案:2 悬赏:70 手机版
解决时间 2021-11-08 19:19
- 提问者网友:寂寞撕碎了回忆
- 2021-11-08 03:37
读取单片机IO口的数据,连续读4次,如果四次都相同,就进行操作,每隔0.1S读取一次.这个函数怎么写啊.
最佳答案
- 五星知识达人网友:人间朝暮
- 2021-11-08 04:30
本来要说明具体在什么地方用,但是只按你的要求处理的话如下
假设IO的脚位是P1^0
int DELAY_CNT;
if(P1^0==X)
{
DELAY_CNT++;
if(DELAY_CNT>10000)
{
if(P1^0==X)
CNT++;
if(CNT>4)
{
FLAG_X=1;
}
}
}
在主函数里判断FLAG_X是否等于1如果是,那就处理你要处理的,如果不是,就说明没达到处理要求。
假设IO的脚位是P1^0
int DELAY_CNT;
if(P1^0==X)
{
DELAY_CNT++;
if(DELAY_CNT>10000)
{
if(P1^0==X)
CNT++;
if(CNT>4)
{
FLAG_X=1;
}
}
}
在主函数里判断FLAG_X是否等于1如果是,那就处理你要处理的,如果不是,就说明没达到处理要求。
全部回答
- 1楼网友:平生事
- 2021-11-08 05:06
可以使用定时器中断,定时0.1s。
int main(void)
{
while(1)
{
if(cnt==4)
{
//Operation();
//add your code here
}
}
}
////////////////////////////////////////////////////////////////
中断函数
Interrupt Timer()
{
Cur_Value = Read(GPIO);
if(Cur_Value==Pre_Value)
{
cnt++;
}
else
{
cnt=0;
}
Pre_Value = Cur_Value;
}
////////////////////////////////////////////////////////////
也可以用函数,定义数组Dat[4] ={0};
i =0;
for(i = 0;i<4;i++)
{
Dat[i] = Read(GPIO);
delay(0.1s);
}
//然后比较Dat[i]是否值一样
int main(void)
{
while(1)
{
if(cnt==4)
{
//Operation();
//add your code here
}
}
}
////////////////////////////////////////////////////////////////
中断函数
Interrupt Timer()
{
Cur_Value = Read(GPIO);
if(Cur_Value==Pre_Value)
{
cnt++;
}
else
{
cnt=0;
}
Pre_Value = Cur_Value;
}
////////////////////////////////////////////////////////////
也可以用函数,定义数组Dat[4] ={0};
i =0;
for(i = 0;i<4;i++)
{
Dat[i] = Read(GPIO);
delay(0.1s);
}
//然后比较Dat[i]是否值一样
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯