专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

也许是最简单的旋转编码器程序, 占用一个外中断

作者:佚名   来源:本站原创   点击数:  更新时间:2014年05月22日   【字体:

 #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短才行,手指是没可能达到这速度
关闭窗口

相关文章