原创 软件正交编码器

2015-7-1 09:46 1132 17 17 分类: MCU/ 嵌入式
 
// 软件正交编码器
 
    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条评论)

登录后参与讨论
我要评论
0
17
关闭 站长推荐上一条 /2 下一条