Hallo!
wie würdet ihr ein Programm schreiben, das 2 LED s an und ausschaltet
durch 2 Taster. LED1 ist an PD5 und LED2 an PD6 bzw. Taster1 an PD2 und Taster2 an PD3 angeschlossen.
ich brauche das Programm zum Vergleichen!
Danke
Hallo!
wie würdet ihr ein Programm schreiben, das 2 LED s an und ausschaltet
durch 2 Taster. LED1 ist an PD5 und LED2 an PD6 bzw. Taster1 an PD2 und Taster2 an PD3 angeschlossen.
ich brauche das Programm zum Vergleichen!
Danke
so etwa:
MfG MarkCode:#include <avr/io.h> #define LED1 PD5 #define LED2 PD6 #define T1 PD2 #define T2 PD3 int main() { DDRD=(1<<LED1)|(1<<LED2); while(1) { PORTD=(PIND&~((1<<T1)|(1<<T2)))>>(LED1-T1); } }
Danke!
hat aber leider nicht funktioniert!
Das hier aber:
Das '~' nach 'PIND&' musste weg.Code:#include <avr/io.h> #define LED1 PD5 #define LED2 PD6 #define T1 PD2 #define T2 PD3 int main() { DDRD=(1<<LED1)|(1<<LED2); while(1) { PORTD=(PIND&((1<<T1)|(1<<T2)))<<(LED1-T1); } }
MfG Mark
Danke! dies mal hat das funktioniert!
kannst du mir bitte diese Zeile erklären!Danke!PORTD=(PIND&((1<<T1)|(1<<T2)))<<(LED1-T1);
ich habe es nämlich so gelöst:
#include <avr/io.h>
#define T1 0x04
#define T2 0x08
#define LED1 0x20
#define LED2 0x40
int main()
{
DDRD |= 0x60;//PD5 und PD6 als Ausgänge setzen
while(1)
{
if (PIND & T1)
{
PORTD |= LED1;
}
if (PIND & T2)
{
PORTD |= LED2;
}
else
{
PORTD &= 0x00;
}
}
return 0;
}
Die Zeile "PORTD=(PIND&((1<<T1)|(1<<T2)))<<(LED1-T1);" könnte man etwa so auseinander nehmen:
"PORTD=(PIND&((1<<T1)|(1<<T2)))<<(LED1-T1);" ist einfach nur eine Zusammenfassung davon.Code:unsigned char temp; temp=PIND; //temp hat jetzt den Wert von PIND temp=temp&((1<<T1)|(1<<T2)); //alle bits in temp, ausser T1 und T2 sind auf 0 temp=temp<<(LED1-T1); //verschiebt den Inhalt vom temp um so viele Stellen nach //links, wie LED1 von T1 entfernt ist. In Deinem Fall 3. Der Zustand von T1 ist //jetzt im 5ten bit, der Zustand von T2 in 6ten. Also genau da, wo auch die //beiden LEDs sind PORTD=temp; //Jetzt hat LED1 den Zustand von T1 und LED2 den Zustand von T2
MfG Mark
Danke!
findest du mein Programm zu lang ?
Lesezeichen