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) ;
}
} 将程序如下改动试试:
void waitkey_release1(BYTE BitNum)
{
while(!(PIND&(1<<BitNum)));
}
如果可以的话,自己分析为什么(从C语言的角度)
页:
[1]