也许是最简单的旋转编码器程序, 

 #define ROTATE_A PIND.2

#define ROTATE_B PIND.3
uchar CW=0;
uchar CCW=0;
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if(ROTATE_A!=ROTATE_B)
    {
        CW++;   
    }
        else CCW++;
}
void main(void)
{
        if ((CW|CCW)!=0)
            {
            DATA=DATA+CW-CCW;
            }
        CW=0;
        CCW=0;   
        delay_ms(50);
}
//////////////////////////////////////////
占用一个外中断,电平变化触发,CW是顺时针转过的脉冲,CCW是逆时针
每50ms处理一下数值,如果想要出错,起码脉冲时间要比50ms/256短才行,手指是没可能达到这速度
以上是也许是最简单的旋转编码器程序, 的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>