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.
|