大佬们好!我用ATTINY24A做一个按键控制IO输出的功能。
原理图如下:
目前的问题是:
1、我的按键消抖好像没作用(调不同的DELAY时间,有变化,但不解决问题)
2、在我PA0按键按下不松手时(也就是按键输入一直为0)。这个时候,PB1口输出为0.4V,只有我松开按键以后,PB1口才会变为0V或3.3V。
原代码如下:
#include <avr/io.h>
void delay (unsigned int ms);
int main(void)
{
unsigned char temp=0;
while(1)
{
temp = (PINA & (_BV(DDA0))); //KEY
if (!temp)
{
delay(200);
if(!temp)
{
DDRB = 0x0F;
PORTB = 0x00;
}
}
temp = (PINA & (_BV(DDA0))); //KEY
if (!temp)
{
delay(200);
if(!temp)
{
DDRB = 0x0F;
PORTB = 0x02;
}
}
}
return 0;
}
void delay (unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<1000;j++);
}
}
请各位大佬帮忙看看是什么问题,谢谢!
|