打印

两个或两个以上编码器同时工作的问题,请大家帮帮忙!

[复制链接]
1949|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dizhu|  楼主 | 2007-1-31 10:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现正在做一个键盘,有一系列按键和四个旋转编码器。当其中任意一个编码器处于旋转的临界状态时,其余的按键和编码器都不能正常工作了。我采用的是查询方式来做的。其中一个编码器的处理程序如下:
void judge_D1B(void)
{           
    delay(12);
    if((D1_A==0)&&(D1_B==1))
        {
    timer_flag=0;
    num_timer=0;
    TR0=1;                      //启动定时器0
    while((D1_A==0)&&(timer_flag==0)) ;
    TR0=0;
    if(timer_flag==1)return;
    delay(12);
    if(D1_A==1&&D1_B==1)
       {
        timer_flag=0;
        num_timer=0;
             TR0=1;                    //启动定时器0
        while((D1_A==1)&&(timer_flag==0)) ;
        TR0=0;
        if(timer_flag==1) return;
        P1=0x23;
        delay(12);
        P1=0x80;
        }
    }
}

void timer0(void) interrupt 1 using 1
{
    TH0=-(46080/256);
    TL0=-(46080%256);
    num_timer++;
    if(num_timer==8)
        {
    num_timer=0;
    timer_flag=1;
        }
}

在主程序里面检测编码器的状态if((D1_A==0)&&(D1_B==1)),如果该条件成立则执行上面的编码器处理程序。临界状态就是指编码器停留在((D1_A==0)&&(D1_B==1))这个状态上。还请各位指点下,谢谢!!!

相关帖子

沙发
dizhu|  楼主 | 2007-1-31 15:17 | 只看该作者

都没有人理我呢?!谢谢大家了,帮帮忙

使用特权

评论回复
板凳
xinking500| | 2007-1-31 15:22 | 只看该作者

看不懂`~

使用特权

评论回复
地板
dizhu|  楼主 | 2007-1-31 16:10 | 只看该作者

晕!

使用特权

评论回复
5
ocon| | 2007-1-31 18:28 | 只看该作者

实现方法有误,

应该用A或B相的信号跳变触发中断来判断编码器的状态。
水平有限,我看不出你的程序想完成什么功能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

39

帖子

0

粉丝