RT
接线很简单,公共端接地,其他两个引脚A,B分别接到P3.2和P3.3通过10K电阻上啦,因为这个小编码器中午被我拆开了一次,所以有点不大灵敏,不过调调音量这类的功能应该没问题,回头在对火个废鼠标试试。
只发中断程序吧,显示用的12864
//定义了一个char全局变量b最大计数到255
//AA--P3.2
//BB--P3.3
void ini0() interrupt 0
{
IE0=0;
EX0=0;
delayms(15);
if (AA==0)
{
if(BB==0) //如果旋转方向和计数方向相反修改此处
{
b++;
if(b>255){b=0;}
}
else
{
b--;
if(b<0){b=0;}
}
}
EX0=1;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
-----------------------------------------------------------------------
回复【8楼】millwood0
first of all, your solution is wrong: you should never ever use "delay" in an interrupt routine.
2ndly, there are much simpler solutions out there. google "state machine".
-----------------------------------------------------------------------
首先,你的方案是错的:绝不应该在中断例程中使用“延时”
其次,在其他地方有许多更简便的方案,请google“状态机”
一周热门 更多>