Meine Schaltung hatte fehler, hab sie jetzt korrigiert.
Und jetzt funktioniert es auch.
Habe aber jetzt eine andere Problem, unswar wenn ich die Taste
einmal betätige soll die Anzeige eins und wenn ich es
zum zweiten mal bestätige 2 Anzeigen. Aber wenn ich es gedrückt halte zählt es weiter.
Wie kann ich es verhindern das es weiter zählt??
Code:
#include "avr/io.h"
#include <util/delay.h>
#ifndef F_CPU
#warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert"
#define F_CPU 4000000UL /* Quarz mit 3.6864 Mhz */
#endif
int main(void)
{
PORTD |= (1<<PD6);
DDRD &= ~(1<<PD6);
PORTB = 0xff;
DDRB = 0xff;
uint8_t i = 0;
while (1)
{
if (!( PIND & (1<<PIND6) )) //Wenn Taste betätigt
{
_delay_ms(50);
i= i + 1;
switch (i)
{
case 1 : PORTB = 0x4F;
break;
case 2 : PORTB = 0x12;
break;
case 3 : PORTB = 0x06;
break;
case 4 : PORTB = 0x4C;
break;
case 5 : PORTB = 0x24;
break;
case 6 : PORTB = 0x20;
break;
case 7 : PORTB = 0x0F;
break;
case 8 : PORTB = 0x00;
break;
case 9 : PORTB = 0x04;
i=0;
break;
}
}
}
}
Grüsse Ali
Lesezeichen