yarak_ma 发表于 2007-3-7 09:12:33

Avr的一个怪问题,请马老师及各位高手指点

我的电路是在键盘按下的时候为低电平,释放后为高电平。我在按键释放检查采用如下代码:

void waitkey_release1(BYTE BitNum)

{

while(~(PIND&(1<<BitNum)));

}

表示如果PIND的某一个引脚如果一直为低电平,则表明键盘未释放,一直循环直到释放。事实是我的按键释放了,已变为高电平,但一直循环下去。

代码改为如下则可以正常执行。请马老师指点问题在哪里?

void waitkey_release2(BYTE BitNum)

{

BYTE t;

   

t= PIND&(1<<BitNum) ;

while(t==0)

{

   t= PIND&(1<<BitNum) ;

}

}

machao 发表于 2007-3-10 11:08:52

将程序如下改动试试:



void waitkey_release1(BYTE BitNum)

{

while(!(PIND&(1<<BitNum)));

}



如果可以的话,自己分析为什么(从C语言的角度)
页: [1]
查看完整版本: Avr的一个怪问题,请马老师及各位高手指点