|
Umsetzung in den Quelltext
"ganz dicht am Mikrocontroller"
#include <avr/io.h>
// io.h einbinden, Header-bzw. Bibliotheksdatei
int
main ( void
)
// jedes C-Programm hat eine main-Funktion
{
// beim Aufrufen der main-Funktion wird nichts
// (engl. void) übergeben
DDRD = 0b01000000;
// Daten-Richtung einstellen, Bit 6 auf 1 (Ausgang)
PORTD = 0b00000000;
// Port ausschalten, Port D6
// Zählung von rechts beginnend mit Bit 0
long zaehler;
// long ist Datentyp long (dt. lang)
// ganze Zahlen von -??? bis +???
// => 8 Byte = 64 Bit
while ( 1 )
{
PORTD =
0b01000000;
// FrontLED EIN, 1. Blitzen
for ( zaehler=0 ; zaehler<=6977
; zaehler++ ) // for-Schleife 6977 mal durchlaufen
{
// ein Schleifendurchlauf 4,38 µs
asm
volatile ( "nop":: ) ;
// "tue nichts", no Operation
}
// ergibt 4,38 µs x 6977 = 0,030 s
PORTD =
0b00000000;
// FrontLED AUS, kurze Pause
for ( zaehler=0 ; zaehler<=13954
; zaehler++ ) // for-Schleife 13954 mal durchlaufen
{
// ein Schleifendurchlauf 4,38 µs
asm
volatile ( "nop":: ) ;
// "tue nichts", no Operation
}
// ergibt 4,38 µs x 13954 = 0,060 s
PORTD =
0b01000000;
// FrontLED EIN, 2. Blitzen
for ( zaehler=0 ; zaehler<=6977
; zaehler++ ) // for-Schleife 6977 mal durchlaufen
{
// ein Schleifendurchlauf 4,38 µs
asm
volatile ( "nop":: ) ;
// "tue nichts", no Operation
}
// ergibt 4,38 µs x 6977 = 0,030 s
PORTD =
0b00000000;
// FrontLED AUS, lange Pause
for ( zaehler=0 ; zaehler<=348837
; zaehler++ ) // for-Schleife 348837 mal durchlaufen
{
// ein Schleifendurchlauf 4,38 µs
asm
volatile ( "nop":: ) ;
// "tue nichts", no Operation
}
// ergibt 4,38 µs x 348837 = 1,5 s
}
// an den Anfang von while(1)zurück
return 0;
}
|
|