Hi to @ll,
ich habe folgendes for:
Eine Led (PB1) geht über einen Taster (PB0) an und aus. Wenn ich jetzt aber den Taster (PB0) länger als z.B. 6sec gedrückt halte, soll die Led (PB1) auch aus gehen.
Ich habe schon mal ein Programm geschrieben, aber ich weiß nicht wie ich die Zeitmessung (Zeit_Starten) machen? <.. Über eine For - Schleife?
Hier meine Code:
Code:
#include <avr/io.h>
#include <inttypes.h>
#define F_CPU 8000000 // 8 MHz
int Zeit_Starten(void) { //Hier Startet die Zeit, von 0sec bis 1 min
for(i;1<60;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 Zeit_Abfrage;
int i;
while(1){
if (!( PINB & (1<<PINB0))) { /* mache was wenn PinB0 low ist */
Zeit_Starten(); // Wenn Taste gedrückt wird, dann Anfangen mit der Zeitmessung
if(Zeit_Abfrage > 6){ /* Wenn länger als 6 sec Taster gedrückt, dann Led aus */
PORTB|=(1<<PB1); // high
}
else{
PORTB&= ~(1<<PB1); // low
}
}
}
return 0;
}
Lesezeichen