#include (avr/io.h>;
int main (void)
{
//Ports schalten
DDRA = 0b00000000; //LEDs auf Eingang (Anode an VCC)
PORTA = 0b11111111; //Pullups aktiv. (=LEDs aus)
DDRB = 0b00000000; //Taster auf Eingang
PORTB = 0b00000000; //Pullups aus Taster "aus"
//Variablen definieren
while(1)
{
if( ! (PINB & (1 << PB0) ))
{
PORTA &= ~(1 << PA0);
}
else if( ! PINB & (1 << PB1) ))
{
PORTA &=~(1 << PA1);
}
else if( ! PINB & (1 << PB2) ))
{
PORTA &=~(1 << PA2);
}
else if( ! PINB & (1 << PB3) ))
{
PORTA &=~(1 << PA3);
}
else if( ! PINB & (1 << PB4) ))
{
PORTA &=~(1 << PA4);
}
else if( ! PINB & (1 << PB5) ))
{
PORTA &=~(1 << PA5);
}
else if( ! PINB & (1 << PB6) ))
{
PORTA &=~(1 << PA6);
}
else if( ! PINB & (1 << PB7) ))
{
PORTA &=~(1 << PA7);
}
}
return 0;
}
#include <avr/io.h>
int main (void)
{
//Ports schalten
DDRA = 0b00000000; //LEDs auf Eingang (Anode an VCC)
PORTA = 0b11111111; //Pullups aktiv. (=LEDs aus)
DDRB = 0b00000000; //Taster auf Eingang
PORTB = 0b00000000; //Pullups aus Taster "aus"
//Variablen definieren
while(1)
{
if( ! (PINB & (1 << PB0) ))
{
PORTA &= ~(1 << PA0);
}
if( ! (PINB & (1 << PB1) ))
{
PORTA &=~(1 << PA1);
}
if( ! (PINB & (1 << PB2) ))
{
PORTA &=~(1 << PA2);
}
if( ! (PINB & (1 << PB3) ))
{
PORTA &=~(1 << PA3);
}
if( ! (PINB & (1 << PB4) ))
{
PORTA &=~(1 << PA4);
}
if( ! (PINB & (1 << PB5) ))
{
PORTA &=~(1 << PA5);
}
if( ! (PINB & (1 << PB6) ))
{
PORTA &=~(1 << PA6);
}
if( ! (PINB & (1 << PB7) ))
{
PORTA &=~(1 << PA7);
}
}
return 0;
}
das glaube ich auch ...Probiert hast du es aber sicher noch nicht!!! Ich hab ein Tutorial geschrieben! Extra für dich, denn andere Anfänger machen sich nämlich selbstständig die Mühe es zu verstehen. Les dir das durch und ignorier die Rechtschreib und Grammatik -fehler. Versuche zu verstehen was es mit diesem ganzen |= << & ~ auf sich hat. Danach schaust du dir die DDR PORT und PIN Register in einem anderen Tutorial oder dem Datenblatt genauer an!!!
@Kani : Spiel den Quellcode im Kopf durch so als ob du ihn ausführenWenn du wieder ein Programm postest das nicht funktionieren KANN, mach ich nicht mehr mit ...
Trotzreaktionen helfen niemandem. Vor allem Dir nicht. Aber das wirst DuIch bin hier nicht erwünscht. Wo kann man seinen Account löschen?
Ich werd mich vllt irgendwann mal wieder. Ich habe geraden nichts zu testen. Ich bin hier nicht erwünscht. Wo kann man seinen Account löschen?
#include <avr/io.h> //Damit er DDRA und PORTB usw kennt
int main (void) //Hauptschleife, (void) = undefiniertes Ende
{
//Ports schalten
DDRA = 0b00000000; //LEDs auf Eingang (Anode an VCC)
PORTA = 0b11111111; //Pullups aktiv. (=LEDs aus)
DDRB = 0b00000000; //Taster auf Eingang
PORTB = 0b00000000; //Pullups aus Taster "aus"
//Variablen definieren
while(1) //Hauptschleife (immer wahr)
{
if( ! (PINB & (1 << PB0) )) //Wenn Taster an PB0 gedrückt.
{
PORTA &= ~(1 << PA0); //LED an PA0 anschalten
}
if( ! (PINB & (1 << PB1) )) //Wenn Taster an PB1 gedrückt
{
PORTA &=~(1 << PA1); //LED an PA1 anschalten
}
if( ! (PINB & (1 << PB2) ))
{
PORTA &=~(1 << PA2);
}
if( ! (PINB & (1 << PB3) ))
{
PORTA &=~(1 << PA3);
}
if( ! (PINB & (1 << PB4) ))
{
PORTA &=~(1 << PA4);
}
if( ! (PINB & (1 << PB5) ))
{
PORTA &=~(1 << PA5);
}
if( ! (PINB & (1 << PB6) ))
{
PORTA &=~(1 << PA6);
}
if( ! (PINB & (1 << PB7) ))
{
PORTA &=~(1 << PA7);
}
}
return 0;
}
Du hättest es auch im Simulator ausprobieren können, der eignet sich für solche Bit-Spielereien an Ausgangsregistern recht gut.Naja, in der Schule meinen viele Lehrer, dass man erst Theoretisch etwas machen soll. Das habe ich gemacht.
kann ich bestätigen. Sol lange man keine Zeitschleifen oder irgendwelcheDu hättest es auch im Simulator ausprobieren können, der eignet sich für solche Bit-Spielereien an Ausgangsregistern recht gut.
DDRB &= ~(1<<PB0); // Direction PB0: Eingang (Bit=0)
PORTB |= 1<<PB0; // Pullup-Widerstand aktivieren (Bit=1)
das sehe ich auch so Der erste Schritt zur Besserung ist die Selbsterkenntnis.Ich glaube ich habe Probleme bei dem verstehen der Register.
Also DDR verstehe ich: Ein/-Ausgang
PIN: Wenn DDR auf Eingang =>Pin: Ausgang an/-aus
PORT: Wenn DDR auf Ausgang => Ausgang an/-aus.
Wenn DDR auf Eingang => Pull-Ups aktivieren/-deaktvieren.
Dann frag ich mich wofür PIN da ist?