liwang 发表于 2012-12-2 18:55:36

旋转解码器程序实验

//反转 11->10->00->01->11   3 2 0 1 3
//正转 11->01->00->10->11   3 1 0 2 3
old_data 前一次引脚状态
new_data 当前引脚状态

void decode_round(void)//旋转解码
{
unsigned char new_data;

new_data=读当前引脚状态;

switch(old_data)
{
case 0: if(new_data==2) 数值++;
      else if(new_data==1) 数值--;
      break;

case 1: if(new_data==0) 数值++;
      else if(new_data==3) 数值--;
      break;

case 2: if(new_data==3) 数值++;
      else if(new_data==0) 数值--;
      break;

case 3: if(new_data==1) 数值++;
      else if(new_data==2) 数值--;
      break;

default:break;
}
old_data=new_data;
}

以上在ATmage8中通过
页: [1]
查看完整版本: 旋转解码器程序实验