Ich dachte so in etwas könnte das aussehen:
Code:
#include <avr/io.h>
#include <inttypes.h>
#include <stdint.h>
#define F_CPU 8000000 // 8 MHz
void init_timer(void){
for(;;){ //Endlosschleife
TCCR0 |= (1<<CS00)|(1<<CS02); //Teilung 1024 des Taktes
if(TCNT0==255){ // alle 255 soll i eine Zahl erhöt werden
i=i++;}
}
}
int main(void){
DDRB &= (~ (1<<PB0)); /* Pin PB0 als Eingang */
PORTB |= (1<<PB0); /* Pull Up von PIN B0 aktivieren */
DDRB = (1<<DDB1); // PB1 Ausgänge
int i;
i=0;
while(1){
if (!( PINB & (1<<PINB0))) { /* mache was wenn PinB0 low ist */
init_timer(); // Timer starten
if (i < 6){ /* Wenn länger als ca.6 sec Taster gedrückt, dann aus */
PORTB|=(1<<PB1); // high
}
else{
PORTB&= ~(1<<PB1); // low
TCNT0=0; // Timer zurück setzten
}
}
}
return 0;
}
Lesezeichen