cgboard - classic games

Normale Version: jemanden, der ein wenig Mikrocontroller programmieren kann
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
So erstmal Entschuldigung, dass ich mich so lange nicht meldete, aber ich hatte die letzte Zeit zuviel um die Ohren.

Ich habs mir mal angesehen und Code + Schaltplan machen es doch etwas einfacher. Zur klärung des Problemes:
Also Richtig war schonmal wie du von PB0 ließt und das in eine Variable speicherst. Beim schreiben ist aber leider etwas schief gelaufen. Du hast nicht an PB1 und PB2 geschrieben, sondern leider in PB0, deswegen ist auch nichts passiert.

Ich habe dir mal eine Tabelle gebastelt (und angehängt), in der du sehen kannst welcher Pin auf High steht in Abhängigkeit vom Inhalt von Port B. Vorrausgesetzt diese Pins sind als Ausgänge geschalten.


PORTB | PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
----------------------------------------------------
0x0000000 | 0 0 0 0 0 0 0 0
0x0000001 | 0 0 0 0 0 0 0 1 <-- das schreibst du in Port B
0x0000010 | 0 0 0 0 0 0 1 0
0x0000011 | 0 0 0 0 0 0 1 1
0x0000100 | 0 0 0 0 0 1 0 0
0x0000101 | 0 0 0 0 0 1 0 1
0x0000110 | 0 0 0 0 0 1 1 0 <-- das willst du in Port B



Code:
#include <avr/io.h>

int main(void)
{
    DDRB = 0x06; /* 0x06 Hex für Pb0 Eingang, Pb1+2 Ausgang*/    
    int result; /* Zwischenspeichern des wertes zur vereinfachung */

    while (1)
    {
        result = PINB & 0x01; /* 0x01 Hex für 0b00000001 */
        if(result) /* PB0 wurde auf High gezogen => Taster gedrückt */
        {
            PORTB =0x06; /* PB1 und PB2 auf High */
        }
        else /* PB0 wurde auf Low gezogen => Taster nicht gedrückt */
        {
            PORTB=0x00; /* Alle Lämpchen aus */
        }
    }
}

Ich hoffe das Hilft so weiter.
Seiten: 1 2