望得到大家的解答~~先谢了~
程序很简单,每检测到一次按键后数码管显示的数字加1,但是按键按下之后有时检测不到(数码管显示数字不变),有时候又一直在加(像秒表的低位那样狂加)……还有我增加延时的时间(大概50ms),按键被检测到的几率会增大,找了一天的原因了都还不知道为什么。
程序如下:
void KeyRead( void )
{
uchar ReadData;
DDRD=0XFF;
PORTD=0XFF; //D口输出高电平
DDRD=0; //D口输入
if(PIND!=0XFF)
{
delay(20); //因为只是想测试下这个程序,用的软件延时
ReadData= PIND^0xff;
Trg = ReadData & (ReadData ^ Cont);
Cont = ReadData;
}
这是按键被检测到之后的程序:
if(Trg&key) //key是我定义的某一个按键
{
m++; //m直接送到数码管显示程序里显示
if(m>15)
m=0;
}
这个按键程序是我在网上看到的一篇**里的,相信大家也都有见过吧,这里有个地址,没看过的可以看看,然后希望帮我解答解答。http://wenku.baidu.com/view/cd09693231126edb6f1a1004.html |