以下是我之前采用拿来主义得到的,只对判断后执行部分稍作修改,应用还不错。
/************************参数设置***************************/
void canshu() //EC11旋转编码器一定位一脉冲
{
static bit LastA = 0; //EC11旋转编码器的A引脚上一次的状态
static bit LastB = 0; //EC11旋转编码器的B引脚上一次的状态
if(KA != LastA) //判断EC11旋转编码器A引脚是否等于上一次的状态
{
if(KA == 0) //EC11旋转编码器旋转后,判断KA是否是低电平状态
{
if(KB) //判断KB引脚当前状态,高电平则为正转
{num++;}
else
{num--;}
}
LastA = KA; //更新编码器上一个状态暂存变量
LastB = KB; //更新编码器上一个状态暂存变量
}
}
现在看来LsaB变量似乎没有用,有空了去掉它试试。对于正反向不同的EC11,我是通过调换num变量的加减方向来解决的。 |