单片机的旋转编码编程

我用C语言写了个旋转编码开关的程序,运行起来有点问题啊!
在我的程序思路里面,当是顺时针转的时候应当给变量加1的,逆时针转的时候应当减1的。但出现的问题是逆时针能正常减1,但顺时针就不能正常加1了,就是顺时针转的反而减了一下,与我要的效果刚好相反。
各位高人:出现这种现象是什么回事呢?
程序我写得很乱,所以就没贴出来~~~~

附图是编码开关输出的波形图,可以看出任何方向的旋转发生时,A或者B的波形都是在另一方电平稳定的时候转换电平,不知道你的单片机是否支持电平变化中断。

下边是我用PIC单片机的编码开关检测中断处理程序,希望能对你有参考。

  if(RAIE&&RAIF)   //中断标志检测

  {

   unsigned char port_temp1,port_temp2;

   port_temp1=PORTA;  //读取端口参数

   port_temp2=PORTC;

   if(port_temp2&0x04)

   {          //检测其中一个端口的值

    if(port_temp1&0x10) //检测另外端口的值

    {key_flags|=0x30;} //顺时针旋转

    else

    {key_flags|=0x10;} //逆时针旋转

   }

   else

   {;}      //非正常波形,不做操作

   asm("movf _PORTA,w");  // 清除中断标志

    RAIF=0;

  }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-13
楼主能不能解释一下旋转编码的意思? 最终的表现形式是什么呢?
第2个回答  2010-05-13
自己去看程序啊,谁知道你怎么写的啊
第3个回答  2010-05-13
发出来帮你看看!
相似回答