kramann.info
© Guido Kramann

Login: Passwort:










10.1 Digitale Ein- und Ausgänge

Nutzen des Beispiels

  • Drei verschiedene Programmzustände durchschalten durch Tastendruck.
  • Anwendbar, um auf Tastendruck unterschiedliche Programmteile ablaufen zu lassen.

Verwendete Befehle und ihre Bedeutung

Befehl Bedeutung
DDRB = 0b00010101; Mit DDRA, DDRB, DDRC, DDRD kann jedes Bit der Ports A,B,C,D einzeln auf Eingang (0), oder Ausgang (1) geschaltet werden.
while(true){} Endlosschleife, kann nur mit break verlassen werden.

Tabelle 10.1-1: Befehlsübersicht

Beispielprogramm

#include<avr/io.h>

using namespace std;

int main(void)
{ 
    //Bit 0 von PortB wird von einem Taster von außen gesetzt, ganzer Port wird als Eingang geschaltet.
    DDRB = 0b00000000;
 
    //PortC als Ausgang, um den Zustand zu sehen.
    DDRC = 0b11111111;

    //Hilfsvariable
    unsigned char akku;

    while(true)
    {
        //Phase0
        while(true)
        {
            PORTC = 0;
            akku = PINB;
            if( (akku & 0b00000001) > 0)
                break;
        }
        //Phase1
        while(true)
        {
            PORTC = 1;
            akku = PINB;
            if( (akku & 0b00000001) > 0)
                break;
        }
        //Phase2
        while(true)
        {
            PORTC = 2;
            akku = PINB;
            if( (akku & 0b00000001) > 0)
                break;
        }
    }

	return 0;
}
 

Code 10.1-1: Beispiel

Projekt herunterladen
Aufgabe
  • Schreiben Sie ein Programm, mit dem durch wiederholtes Drücken des Tasters bei PINB0 eine der direkt angeschlossenen LEDs kontinuierlich ein und wieder ausgeschaltet werden kann.
  • Schreiben Sie ein Programm, dass die gleiche LED von alleine blinken läßt.