// 软件正交编码器
sbit Coder_A = P2^0; // 正交编码器入口
sbit Coder_B = P2^1;
sbit Coder_Z = P2^2;
bool Accelerate1 = TRUE; // TRUE FALSE
bool Accelerate2 = TRUE; // TRUE FALSE
bool Accelerate3 = TRUE; // TRUE FALSE
bool Accelerate4 = TRUE; // TRUE FALSE
void QuadratureEncoder(void)
{
/* ----------------------------------------------- */
if(!Coder_A == 1 && Accelerate1 == TRUE)
{Accelerate1 = FALSE;
if(Coder_B == 1){Coder_Value ++;}
if(Coder_B == 0){Coder_Value --;}
}
if(Coder_A == 1)Accelerate1 = TRUE;
/* ----------------------------------------------- */
if(Coder_A == 1 && Accelerate2 == TRUE)
{Accelerate2 = FALSE;
if(Coder_B == 0){Coder_Value ++;}
if(Coder_B == 1){Coder_Value --;}
}
if(!Coder_A == 1)Accelerate2 = TRUE;
/* ----------------------------------------------- */
if(!Coder_B == 1 && Accelerate3 == TRUE)
{Accelerate3 = FALSE;
if(Coder_A == 0){Coder_Value ++;}
if(Coder_A == 1){Coder_Value --;}
}
if(Coder_B == 1)Accelerate3 = TRUE;
/* ----------------------------------------------- */
if(Coder_B == 1 && Accelerate4 == TRUE)
{Accelerate4 = FALSE;
if(Coder_A == 1){Coder_Value ++;}
if(Coder_A == 0){Coder_Value --;}
}
if(!Coder_B == 1)Accelerate4 = TRUE;
/* ----------------------------------------------- */
if(Coder_Value > 4000)Coder_Value = 1;
if(Coder_Value < 1)Coder_Value = 4000;
/* ----------------------------------------------- */
return;
}
文章评论(0条评论)
登录后参与讨论