|
按照以前学习51时候的思路,写了一个独立按键的测试程序,发现PIND.6按键按下后,有时PA口输出没有反应。
用PROTEUS仿真和在试验板测试,都是这个现象。怀疑按键问题,但用万用表测量PD.6引脚的电压,每次按键按下都变为0,
说明按键没问题。请各位高手指点啊
#include <mega16.h>
#include <delay.h>
unsigned char da;
void main(void)
{
PORTA=0x00;
DDRA=0xff; //设置输出
PORTD=0xff;
DDRD=0x00; //设置为输入,
while (1)
{
if(PIND.6==0) //如果PIND.6按键按下
{
delay_ms(10); //10ms的消抖时间
if(PIND.6==0)//确认PIND.6按键按下
{ da++;
PORTA=da; //通过PA口的变化,检测按键是否按下
}
}
while(PIND.6==0); //等待按键松开
} ;
}
本贴被 wb5846410 编辑过,最后修改时间:2008-12-03,21:56:44. |
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|