rjx 发表于 2014-10-10 16:39:46

请帮忙看看这个应该怎么改?

本帖最后由 rjx 于 2014-10-11 08:45 编辑

我一直用CV AVR,对ICCAVR 不太熟悉,下面一段旋转编码器的代码原来是用CV AVR写的,一直在用。现在想改成在ICC AVR下使用,请帮忙改一下,主要是管脚定义及在代码中如何表示比较困惑。在CVAVR中用EA表示PIND.0   EB表示PIND.1, 觉得很简单,在代码中用也很方便,可换成ICC,觉得很绕人,没想清楚怎么表示既简单又清楚。先谢谢了。

#define EA PIND.0    //旋转编码器管脚定义
#define EB PIND.1

uint getcode(uint t,uint minimum,uint maximum)   
{         
      static bit OLD_EA,OLD_EB;
      static bit st;   
      uchar EnDelay;
      
      if(( !EA )||( !EB ))
      {
            st = 1;
      }
      
      if(st)
      {   
            if(++EnDelay>3)
             {
                if(( EA )&&( EB ))
                {
                  if(OLD_EA)         //正转
                  {
                        st = 0;
                        if(t < maximum)
                        {
                            t=t++;         //增加                                             
                        }
                        else if (t >= maximum)
                        {
                            t = maximum;                                                   
                        }            
                  }
                  if(OLD_EB)         //反转
                  {
                        st = 0;
                         if(t> minimum)
                        {
                            t=t--;             //减少                  
                           }
                        else if(t <= minimum)
                        {
                            t =minimum;                                 
                        }            
                  }         
               }
             }   
      }               
      else
      {
            if( EnDelay )
            {
                if(--EnDelay == 0)
                {
                  st = 0;
                }
            }   
      }   
      OLD_EA = EA;
      OLD_EB = EB;
    return t;                     
}

rjx 发表于 2014-10-10 19:47:43

没人愿帮吗吗?知道的帮帮啊。

canspider 发表于 2014-10-10 19:53:20

10元一行

ZJSXHWL000000 发表于 2014-10-11 06:05:25

程序不是自已改的好。

DevLabs 发表于 2014-10-11 06:33:39

换个环境就搞不定了-_-!

avr9299 发表于 2014-10-11 06:49:03

大家都很忙

gallle 发表于 2014-10-11 07:33:13

#define EA PIND&0x01    //旋转编码器管脚定义

9v9v 发表于 2014-10-11 09:39:26

不懂帮顶了{:smile:}

richu 发表于 2014-10-11 10:18:18

7楼正解,用&求与

rjx 发表于 2014-10-11 10:31:24

就是说将原来的管脚定义:
#define EA PIND.0    //旋转编码器管脚定义
#define EB PIND.1
改成如下就行了?
#define EA PIND&0x01
#define EB PIND&0x02
是这样吗?
熟悉ICC AVR的说说啊!不胜感谢!
页: [1]
查看完整版本: 请帮忙看看这个应该怎么改?