Du benötigste - wie schon vorher gepostet - eine Schleife, innerhalb der Dein Taster abgefragt wird, sonst geschieht die Abfrage nur einmal:
Code:
#include <avr/io.h>
#include <stdint.h>
int main(void)
{
DDRA &= ~( 1 << PA0 ); /* PIN auf Eingang (Taster) */
PORTA |= ( 1 << PA0 ); /* Pullup-Widerstand aktivieren */
DDRC = (1 << DDC0); // pin c0 als ausgang
PORTC |= (1<<PC0); // CPort C0 auf high
for( ;; )
{
if ( !(PINA & (1<<PINA0)) ) // Port A0 = 0 dann mache was
{
PORTC &= ~(1<<PC0); // Port C0 auf low
}
}
return 0;
}
Wenn jetzt der Taster gedrückt wird, geht PortC.0 auf low. Danach bleibt der Pin auf 0, egal was passiert. Du musst natürlich dafür sorgen, dass PinA.0 bei nicht gedrücktem Taster auf High-Potenzial liegt.
Lesezeichen