我现在的做法是设RB0为脉冲的下降沿触发中断,根据A与B的脉冲有90度的相位差原理,在中断中判定RB1的电平状态,如果RB1为高电平则是正转,如果RB1为低电平,则是反转,以下是我的程序,现在的问题是,在高速旋转时不会有错误识别正反转的情况,但在低速旋转的时候会错误识别正反转的情况,我估计是我的算法不对,不知道大家有更好的算法没有,多谢
if(INTF)
{
INTF=0;
if((IO_A==0)&&(IO_B==1)) { delay(10); if((IO_A==0)&&(IO_B==1)) AA++; if(AA>2) {AA=1;SD++;}}
if((IO_A==0)&&(IO_B==0)) { delay(10); if((IO_A==0)&&(IO_B==0)) BB++; if(BB>2) {BB=1;SD--;}}
}
|