這段代碼用于STC15W系列單片機,在快慢手速操作下未見誤碼。你擴展成多個編碼器試試。
- void EC11(void)
- {
- static unsigned char traitA=0,traitB=0;
- //開關部分代碼略
- //......
- //順時針旋轉,每圈進階20
- if(EC11_B && !EC11_A && traitA==0) //第一特征碼
- {
- traitA=1;
- }
- else if(!EC11_B && !EC11_A && traitA==1)//第二特征碼
- {
- traitA=2;
- }
- else if(!EC11_B && EC11_A && traitA==2)//第三特征碼
- {
- if(count>0)count--;
- traitA=3;
- }
- else if(EC11_B && EC11_A && traitA==3)//第四特征碼
- {
- traitA=0;//清0
- }
- //逆時針旋轉
- if(!EC11_B && EC11_A && traitB==0) //第一特征碼
- {
- traitB=1;
- }
- else if(!EC11_B && !EC11_A && traitB==1)//第二特征碼
- {
- traitB=2;
- }
- else if(EC11_B && !EC11_A && traitB==2)//第三特征碼
- {
- if(count<250)count++;
- traitB=3;
- }
- else if(EC11_B && EC11_A && traitB==3)//第四特征碼
- {
- traitB=0;//清0
- }
- }
復制代碼
|