这段代码用于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
- }
- }
复制代码
|