请帮忙看看这个应该怎么改?
本帖最后由 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;
}
没人愿帮吗吗?知道的帮帮啊。 10元一行 程序不是自已改的好。 换个环境就搞不定了-_-! 大家都很忙 #define EA PIND&0x01 //旋转编码器管脚定义 不懂帮顶了{:smile:} 7楼正解,用&求与 就是说将原来的管脚定义:
#define EA PIND.0 //旋转编码器管脚定义
#define EB PIND.1
改成如下就行了?
#define EA PIND&0x01
#define EB PIND&0x02
是这样吗?
熟悉ICC AVR的说说啊!不胜感谢!
页:
[1]