專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

也許是最簡(jiǎn)單的旋轉(zhuǎn)編碼器程序, 占用一個(gè)外中斷

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間: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);
}
 
 
//////////////////////////////////////////
 
占用一個(gè)外中斷,電平變化觸發(fā),CW是順時(shí)針轉(zhuǎn)過(guò)的脈沖,CCW是逆時(shí)針
 
每50ms處理一下數(shù)值,如果想要出錯(cuò),起碼脈沖時(shí)間要比50ms/256短才行,手指是沒(méi)可能達(dá)到這速度
關(guān)閉窗口

相關(guān)文章