程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 編碼開關測試OK陳

編碼開關測試OK陳

編輯:關於C語言

[plain]
    BMA    = P4^2;//編碼開關A引腳1       //必須接上拉電阻680歐 
sbit     BMB    = P4^3;//編碼開關B引腳3       //必須接上拉電阻680歐 
                       //編碼開關引腳2 接地                          
sbit     BMC    = P1^6;//編碼開關c 按下引腳 
unsigned int  counter = 0;     //編碼器脈沖計數  
/**********************************************************                              
掃描編碼器子函數  by陳                              
正轉(時鐘方向) 
11 
10 
00 
01 
 
11   //開始第二角度 
10 
…… 
 
反轉(時鐘反方向) 
11 
01 
00 
10 
 
11   //開始第二角度 
01 
…… 
 
程序從00開始   
 
如果還是00 則等待 如果在延時這麼長時間0ffff*yans(1)還是00  則返回  (如果轉的速度非常快,則可使減小;相反亦然) 
如果收到01 則正轉加1 返回 
如果收到10 則反轉減1 返回 
如果收到11 則錯誤    返回 
                                                           
**********************************************************/ 
void scan_encoder() 

    unsigned int i; 
    while(1) 
    { 
        if(BMA==0&&BMB==0)       //收到0 0 後開始判斷 
        { 
            for(i=0;i<0xfff0;i++) 
            { 
                if(BMA==0&&BMB==0)      //狀態未變,等待 
                { 
                    yans(1); 
                } 
                else if(BMA==0&&BMB==1) //正轉 
                { 
                     
                    counter++;   
                    return; 
                } 
                else if(BMA==1&&BMB==0) //反轉 
                { 
                    counter--;   
                    return; 
                } 
                if(BMA==1&&BMB==1)      //錯誤 
                { 
                    return; 
                } 
            } 
        } 
        else if(0==BMC) 
        { 
            counter=0; 
            return; 
        } 
        else  
        { 
            return; 
        } 
    }    

void xszs() 

    unsigned int code db[]={ 
        0,0,}; 
        fsfont55(); 
        fsszxy(4,db); 
        printf("%5u\n",counter); 
        txjs(); 
         

void testmain() 

    yans(3000); 
    while(1) 
    { 
        //tisy(); 
        xszs(); 
        scan_encoder();  
    } 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved