本帖最后由 datouyuan 于 2009-10-20 09:52 编辑
我有段程序是定时执行,把我搞懵了,谁能帮帮我?
我把问题简化一下:假如P1口相应位在1S内有电平变化(不要考虑尖刺),并且只有一次,P2相应位的指示灯亮,这样是否好理解?
我要的效果是:
假如P10在n次里有并且只有一次电平变化,P20指示灯亮。
假如P11在n次里有并且只有一次电平变化,P21指示灯亮。
~
void abc()
{
uint8 i;
uint8 P1_temp; //P1此次电平,输入
uint8 P1_Old; //P1上次电平 输入
uint8 SignalOK; //假如P1相应位有且只有1次电平变化,相应位置1,否则为0.
for(i=0;i<100;i++)
{
P1_temp=P1;
//{请帮我在这里写出表达式,可以用临时变量}
P1_Old=P1_temp;
delay10mS();
}
P2=SignalOK;
}
我就需要这个表达式或算法(有并且只有一次变化),不要考虑其它问题。就是多用几个临时变量也没关系。
或者这么说:
有N(就算100吧)个8bit数据Data[100],从Data[0]开始判断,N次结束判断,假如后一个的数据和前一个的数据相比,相应位有变化并且只变化1次,Out的相应位置1,否则为0。
请把这算法搞出来。
非常谢谢大家的帮助!!!!
22楼和16楼的帖子已经解决了。 |