|
本帖最后由 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;
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|