上了一个选择编码开关,照抄了一段代码,结果出大事鸟,求解
先声明楼主论坛菜鸟一枚
AVR16 中断0接了一个旋转编码器,抄的网上的代码,旋转编码开关转动的时候后反映正常,就是结果不正常,上代码先
ISR(INT0_vect)
{
GICR =0x00;
if (Bit_Get(PIND,2)==1)
{
if (Bit_Get(PIND,1)==0)
{
sumx++;
}else
{
sumx--;
}
}else
{
if (Bit_Get(PIND,1)==0)
{
sumx++;
}else
{
sumx--;
}
}
GIFR |= (1 << INTF1) | (1 << INTF0);
GICR =0xC0;//0xC0 */
}
main函数里面这样处理的
itoa(sumx,strr,10);
display_string_5x7(5,1,strr)
变量定义这样的
uint sumx =1;
uchar strr[25]={0};
然后奇怪的事情就来了,选择编码开关的时候数字会变,但是哪个结果啊,变化的也太大了吧,按理应该是转一下加或者减一的,结果差了十万八千里,实在搞不明白了,上坛子请教,
个人感觉是 int 转uchar不对,但是不知道该怎么处理
|