Programmierung des Mikrocontrollers mit C
2. Digitale Ausgänge des Mikrocontrollers benutzenBetrachten wir einmal die
Pinbelegung eines Atmega8:
Als digitale Ausgänge können
wir all die Anschlußpins benutzen, die da heißen: PB0 bis PB7, PC0 bis
PC6 und PD0 bis PD7. Unser Atmega8 hat drei Ports,
nämlich Port B, Port C und Port D. So ein Port
hat gewöhnlich 8 Anschlüsse (nur beim Atmega8 hat der Port C wegen
Platzmangels lediglich 7 Anschlüsse). Mann kann
auch noch mehr damit machen. Wie Du siehst, sind dort an den
Anschlüssen noch Bezeichnungen in Klammern. Nehmen wir
einmal PB0 bis PB7.
Diese Beinchen gehören zum PORT B. Ein Register
ist im Prinzip eine Aneinanderreihung einiger Speicherzellen
(z. B. 8 bit).
Wenn PB0
(also Anschlußbeinchen 14 des Atmega8) ein Ausgang sein soll, dann muß
im Datenrichtungsregister DDRB das 0. bit gesetzt sein, so wie hier:
Das Datenrichtungsregister
legt fest, ob’s rein (Eingang) oder raus (Ausgang) gehen soll. Wenn PB0
ein Ausgang sein soll, muß im Datenrichtungsregister B das nullte Bit
gesetzt sein. In der Programmiersprache C geht das z. B. so: DDRB = 1;
Sollen PB0 und PB1 Ausgänge
sein, ginge es mit: DDRB = 3;
#include <avr/io.h> #define F_CPU 1000000UL // 1 MHz #include <avr/delay.h> int main(void){ DDRB=1; // damit ist
dann PB0 ein Ausgang while(1){
PORTB = 1; //0. bit im Port B setzen
PORTB = 0; //0. bit im Port
B löschen } return(0); } Was macht das Programm?
Damit Anschlußpin 14 des Atmega8 (also PB0) HIGH ausgibt (also 5V),
haben wir im Port B das nullte Bit (also PB0)
Dann haben wir 250 Millisekunden gewartet.
Dann haben wir wieder 250 Millisekunden gewartet. |