Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Einführung in Propeller-C

Was ist eigentlich Programmierung?

 

Ein Computerprogramm ist nichts weiter als eine Folge von Anweisungen, die in einer bestimmten Sprache geschrieben sind. Programme gibt es überall und sie begegnen uns täglich in Form von Wegbeschreibungen, Kochrezepten oder Reparaturanleitungen.
Wir starten vom Hauptbahnhof, begeben uns in Richtung Norden und folgen der Hauptstraße, bis wir an eine große Ampelkreuzung kommen. Wenn die Querstraße rechts wegen Bauarbeiten immer noch gesperrt sein sollte, dann gehen Sie weiter geradeaus, biegen an der ersten Querstraße rechts ab und sind am Ziel, im anderen Fall biegen Sie rechts ab und biegen nach 200 m links in die Kleinstraße , die Sie bis zum Ende durchgehen. Das Ziel ist erreicht.
Einer solchen Wegbeschreibung kann jeder, der lesen kann, folgen. Ein Computer kann das nicht, er spricht eine andere Sprache, die die Fachleute Maschinensprache nennen. Sie zu erlernen ist aufwändig und immer speziell auf eine Rechnerarchitektur abgestimmt. Mit Hilfe eines Übersetzers in Maschinensprache kann man mit dem Rechner in „Kontakt“ treten. Einer der elementarsten ist der Assembler; es gibt ihn für INTEL Prozessoren, für PIC und AVR Controller Architekturen und viele andere mehr. Ein x86-Assemblerprogramm wird also nicht auf einem PIC-Prozessor laufen können.

 

 

Abb. 1.1  Ausschnitt aus einem Assembler-Programm

Besserung schaffen hier sogenannte Compiler; sie wandeln eine höhere Programmiersprache in Maschinensprache um. Die Arbeit mit ihnen lässt sich leichter erlernen und die Ergebnisse sind in viele Maschinensprachen für unterschiedliche Prozessorarchitekturen übersetzbar.
C, C++, Fortran, PASCAL sind höhere Programmiersprachen. Programme, die in dieser Sprache geschrieben werden, sind um ein vielfaches leichter zu lesen als in Assembler oder Maschinensprache.

 

Höhere Programmiersprachen folgen klaren Regeln, die der Programmierer einhalten muss, denn sonst würde der Compiler den Text nicht verstehen. Um das Erlernen dieser Regeln für die Sprache C geht es in den folgenden Lektionen. Zusätzlich bedienen wir uns eines sogenannten Pseudocodes, mit dessen Hilfe sich manche Abläufe in einem Programm sprachlich einfacher erklären lassen.

 

Entscheidungen

 

Eine Folge von Anweisungen, die mit Entscheidungen (sog. Kontrollstrukturen) verbunden sind, verändert die Reihenfolge der Ausführungen in einem Programm. Aus einer sequentiellen Reihenfolge wird so ein komplexer Fluss.

if - else

 

  • … wenn die Straße rechts gesperrt sein sollte, dann gehen Sie …


ist eine solche Entscheidungsstruktur, die in einer Hochsprache wie C folgendes Aussehen bekäme:

 

1.    Folge der Straße
2.    If (Straße rechts gesperrt)
3.      {
4.        gehe weiter bis zur 1. Querstraße geradeaus;
5.        biege dort rechts ab;
6.      }
7.    else
8.      {
9.        biege rechts ab;
10.        gehe nach 200 m links in die Kleinstraße;
11.      }

Jede Anweisung in den Zeilen 4, 5, 9 und 10 wird mit einem Semikolon beendet; so lautet eine Regel für die Sprache C. Die verschiedenen Gruppen bedingter Anweisungen werden in geschweiften Klammern zusammengefasst (eine 2. Regel) und eingerückt (keine Regel, aber es erhöht die Lesbarkeit eines Programms).

 

In der Sprache PASCAL oder BASIC ist die Entscheidungsstruktur die gleiche, nur wird hier noch das Wort then eingefügt (if (Straße rechts gesperrt) then …) .
Entscheidungsstrukturen werden in Lektion 3 angesprochen.

Müssen Anweisung wiederholt ausgeführt werden, bedient man sich sogenannter Schleifen. Sie enthalten i.a. Bedingungen, die festlegen, wann die Schleife wieder verlassen wird.

while-Schleife


Eine while-Schleife legt fest, dass eine Gruppe von Kommandos ausgeführt werden soll, solange (while) eine Bedingung erfüllt ist. Das sieht im Pseudocode so aus:

 

1.    while (Tonne mit Wasser noch nicht voll)
2.    {
3.       fülle einen Eimer mit Wasser;
4.       entleere den Eimer in die Tonne;
5.    }

 

for-Schleife


Wenn ein Vorgang n-mal durchlaufen werden soll, bietet sich eine for-Schleife an.

for (4 Schleifendurchläufe)
  fülle einen Eimer Wasser in die Tonne;

Der entsprechende Pseudocode für die Sprache C sieht dann so aus:

1.    for (i = 0; i <= 4; i++)
2.       fülle einen Eimer Wasser in die Tonne;

Die for-Anweisung in C ist in drei durch Semikolon getrennte Abschnitte unterteilt:

  • im ersten Abschnitt wird der Anfangswert eines sogenannten Zählers festgelegt; in unserem Fall i = 0.
  • Im zweiten Abschnitt versteckt sich die Abbruchbedingung: solange i kleiner oder gleich 4 ist, wird die for-Schleife durchlaufen.
  • Im dritten Abschnitt wird beschrieben, was mit dem Zähler nach jedem Schleifendurchlauf passiert: i++. Dieses Kürzel steht für: erhöhe den Zählerwert um 1.

Schleifen werden wir im Kapiteln 4 genauer beschreiben.

Variable


Eine Variable ist ein Objekt, das Daten enthalten kann, die veränderbar sind. Der Zähler i in der for-Schleife ist eine Variable. Variable, die sich nicht ändern, bezeichnen wir als Konstante.


In der Sprache C muss jeder Variablen ein Typ zugeordnet werden. Die Größe i in der for-Schleife ist zum Beispiel vom Typ ganze Zahl oder integer.

In der Sprache C wird verlangt, dass jeder Variablen ein Typ zugewiesen wird. Das geschieht dadurch, dass man die Typbezeichnung vor die Variablengröße setzt, also zum Beispiel:

  • int a
    

Den Umgang mit Variablen und die Anwendung arithmetischer Operatoren sprechen wir in Lektion 2 an.

 

Arithmetische Operatoren

    +                  Addition
    -                  Subtraktion
    *                  Multiplikation
    /                  Division
    Modulo n           Rest bei Division durch n

In Schleifen- und Kontrollstrukturen werden häufig Vergleichsoperatoren benutzt. Die Syntax der Vergleichsoperatoren in der Sprache C sind wie folgt definiert:

 

Vergleichsoperatoren

Kleiner als             <
Größer als              >
Kleiner oder gleich     <=
Größer oder gleich      >=
Gleich                  ==
Ungleich                !=

 

Das Ausrufungszeichen steht für eine Verneinung.

Nach dieser kleinen Einführung kommen wir jetzt zu den praktischen Übungen. Sie sind mit der Software SimpleIDE von Parallax durchgeführt worden, die kostenlos heruntergeladen werden kann unter der

 

URL: http://learn.parallax.com/node/640 .

 

SimpleIDE ist speziell für den Propeller-Prozessor der Fa. Parallax entwickelt worden und läuft auf Windows-, Mac- und Linux-Rechnern sowie der Raspberry Pi.


Zur Durchführung der Lektionen werden benötigt:

  • SimpleIDE-Software
  • Propeller Board of Education oder Propeller Activity Board
  • ein Micro-USB-Kabel
  • ein 9V Batterieblock oder ein Steckernetzteil

 

Eine einfache Hallo-Meldung im Terminalfenster ausgeben

Mit diesem C Programm schreibt der Propeller Mikrocontroller das Wort Hallo! in das SimpleIDE Terminal.

  • Starte das Programm SimpleIDE mit New Projekt.
  • Gib das unten stehende Programm ein und starte es mit Run with Terminal.
  • In einem gesonderten Terminalfenster erscheint der Text Hallo!.

Im Com Port Fenster rechts oben in der IDE wird der aktuell gewählte Com-Port angezeigt. Kann keine Verbindung hergestellt werden, öffne die Com- Port Dropdownliste und wähle einen anderen Anschluss.

  • Speicher das Programm über Save Project as unter dem Namen Hallo_Nachricht auf der Festplatte.

 

Wie arbeitet Hallo_Nachricht.c?

 

Die Zeile print("Hallo!") wird mit einem Semikolon abgeschlossen. Es signalisiert dem Compiler, dass die Anweisung dort endet.
Die print-Anweisung befindet sich innerhalb eines Blocks, der durch geschweifte Klammern gleich unterhalb von main() symbolisiert wird. Er wird auch Codeblock der Funktion main genannt.

Ein C-Programm beginnt stets mit einer Anweisung innerhalb des Codeblocks.


Hinter der Anweisung print verbirgt sich ebenfalls eine Funktion, die in den library files abgespeichert ist. Später werden wir Bibliotheken nach nützlichen Funktionen für unsere jeweiligen Projekte durchsuchen. 

 

Vorerst dürfen wir nicht vergessen die Zeile

  • #include “simpletools.h”
    

in unsere Programme einzufügen, da dort Informationen zu der Funktion print und weiteren Funktionen  hinterlegt sind.

 

 

Versuch mal dies

Speicher das Projekt jetzt unter einem neuen Namen ab und füge eine zweite print-Anweisung in das Programm ein.

  • Klick auf Save Project As.
  • Gehe in das Verzeichnis deiner Beispielprogramme.
  • Gib als neuen Dateinamen ein: Hallo Again.
  • Beende die Eingabe mit Save .
  • Starte das Programm mit Run with Terminal
  • Welchen Effekt hat \n? Lösche \n und starte das Programm erneut. Wie verändert sich die Terminalausgabe?

TIPP: Bei jedem Kompilierungsvorgang speichert SimpleIDE das Programm auf der Festplatte des Rechners ab. In den Übungen werden wir darauf achten müssen, dass jedes Mal, wenn Änderungen an einem Programm vorgenommen werden sollen, vorher das Programm unter einem neuen Namen abgespeichert wird, um ein bereits laufendes altes Programm nicht zu verlieren.

Was man weiß, was man wissen sollte

 

Die Sprache C unterscheidet Groß- von Kleinschreibung - Bei einem Schreibfehler reagiert SimpleIDE mit einer Fehlermeldung. Wird zum Beispiel Print statt print geschrieben, erscheint der Hinweis:

newline
\n ist das Steuerzeichen für einen Zeilensprung im SimpleIDE Terminal und ebenso das Steuerzeichen für einen Zeilensprung auf einem seriellen Terminal.

int (main)
die Vorsilbe int bei int main() ist eine Compilerdirektive.

Kommentare  
sind Bemerkungen oder Hinweise innerhalb eines Programmcodes, die mithelfen, ein Programm für Außenstehende lesbar zu machen, und sie dienen dem Programmierer als Gedächtnisstützen.
Zeilenkommentare  
beginnen stets mit //. Alles was innerhalb der Zeile rechts von dem Doppelzeichen steht, wird vom C-Compiler ignoriert.

Blockkommentare  
können sich über mehrere Zeilen erstrecken und werden stets mit /* eingeleitet und mit */ beendet. Alles was sich innerhalb dieser beiden Symbole befindet, wird vom Compiler übergangen.

Gib das unten stehende Programm ein und speicher es mit Save as Project unter dem Namen Hello again_komm ab. Starte das Programm und überzeuge dich, dass die Kommentarzeilen keinen Einfluss auf den Ablauf des Programms haben.

Kommentar schreiben

Kommentare

  • olaf (Sonntag, 10. Dezember 2017 08:35)

    wow...die mit Abstand beste Site, die ich bisher zu diesem Thema gesehen habe :-))
    Vielen Dank dafür. Hilft super beim Erklären!!

  • David Eisenblätter (Sonntag, 11. Februar 2018 13:38)

    Sehr schön erklärt, und zufällig heute, wo ich nochmal nach einer detailierten Gedankenstütze diesbezüglich gesucht habe!

    Vielen vielen Dank!

    David.

Bitte geben Sie den Code ein
* Pflichtfelder
Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf