JAL - Just Another Language ... history menue Letztmalig dran rumgefummelt: 12.07.21 17:32:27
PIC-Mikrocontroller können in unterschiedlichen Sprachen programmiert werden. Die vermutlich am häufigsten angewendete Methode ist das Programmieren in Assembler (ASM). Assembler-Programme laufen auf dem Mikrocontroller zwar äußerst effizient, doch das Schreiben ist schwierig und kostet viel Zeit. Schon einfache Programmfunktionen können aus sehr vielen Befehlen und Anweisungen bestehen. Zum Einstieg in die Welt der Mikrocontroller ist die Assembler-Sprache weniger geeignet.
Für die Realisierung unserer Projekte haben wir die Sprache JAL („Just Another Language") gewählt. JAL ist eine Hochsprache, die gewisse Ähnlichkeit mit Pascal hat. Eine international aktive Benutzergruppe, der zahlreiche Mitglieder aus aller Welt angehören, unterstützt die Sprache JAL. Just Another Language gehört zu den wenigen etablierten Programmiersprachen, die kostenlos und frei zugänglich sind. JAL ist konfigurierbar, die Sprache kann durch so genannte Bibliotheken (englisch: libraries) erweitert werden. Ferner sind JAL-Programme mit Assembler-Unterprogrammen kombinierbar. Dadurch können zum Beispiel die im Internet kursierenden Assembler-Snippsets (kleine, oft universell verwendbare Programmfragmente („Schnipsel"), die mit anderen Mitgliedern ausgetauscht werden) in JAL-Programme eingebaut werden.
JAL ist eine höhere Programmiersprache, die nicht an starre Textformatierungen gebunden ist. Kommandos können beliebig über Programmzeilen verteilt werden, dabei werden Tabulator-Zeichen und Zeilenschaltungen wie Leerzeichen behandelt. Es existieren keine Trennungszeichen zwischen den Kommandos. Auch lange Programme könnten theoretisch als eine einzige Zeile geschrieben werden, in der Praxis würde allerdings die Lesbarkeit stark leiden.
JAL gehört zu den wenigen höheren Programmiersprachen, die nichts kosten, und ferner wird JAL von einer großen, weltweit verbreiteten Anwendergemeinde unterstützt. JAL ist durch Einbinden von Bibliotheken und Assembler-Modulen im Prinzip beliebig erweiterbar. Ein JAL-Programm beginnt typischerweise mit dem Aufruf einer Bibliothek, die mindestens die Eigenschaften des zu programmierenden Mikrocontrollers beschreibt:

include 16f877 bert

Anschließend werden die Variablen definiert:

var Byte a

JAL wurde ursprünglich von Wouter van Ooijen als frei zugängliche höhere Programmiersprache entwickelt, ungefähr vergleichbar mit Pascal. Nach einigen Jahren ging die Entwicklung in ein Open-Source-Projekt über. Den Anstoß zur Entwicklung der zweiten Version gab Stef Mientki im Jahr 2006. Verantwortlicher Programmierer der zweiten Version ist Kyle York, er wird tatkräftig von einer vielköpfigen internationalen Anwendergemeinde unterstützt (in alphabetischer Reihenfolge: Bert van Dam, Sunish Issac, Dave Lagzdin, Javier Martinez, Stef Mientki, Wouter van Ooijen, Michael Reynolds, Andre Steenveld, Joep Suijs, Vasile Surducan und Michael Watterson). Der Inhalt dieses Buchs bezieht sich auf die zur Zeit aktuelle Version der Sprache JAL. Unser kostenloses Software-Download-Paket enthält möglicherweise bereits eine neuere Version.
Dies ist ein Beispiel für ein Programm in JAL, es lässt eine an PIC16F877-Mikrocontroller-Pin 23 (c4) angeschlossene LED blinken:

... wobei für andere Controller-Typen die eingebundene Bibliothek sowie die Portbelegung entsprechend der Möglichkeiten zu ändern sind.

  1. Bezug und Installation - weitere Möglichkeiten
  2. Kommentare, Konstanten, Variablen & Bibliotheken
  3. Mathematische sowie logische Operatoren
  4. Port-Operationen
  5. Zeitverzögerung und Zufallswerte
  6. Zufallszahlen
  7. Verzweigungen
  8. Zyklen oder auch Schleifen
  9. Subroutinen (Unterprogramme)
10. Prozeduren & Funktionen
11. Funktionen sowie Verfahren nutzen - externe Bausteine steuern
12 Verwandte Themen

PIC-Schaltungen

Just Anather Lanuage  - das Logo

inhaltlich auf korrektem Stand - evtl. partiell unvollständig ;-)

Informatik-Profi-Wissen

Short-Cuts alphabetisch:

[Alternativen] [Ausgabe eines Bits] {Einfache unvollständige Verzweigung] {Einfache vollständige Verzweigung] [Einlesen eines Bits] [Enlosschleife] {Delays} [Konstante] [Logische Operationen] [Mehrfache Verzweigung] [Solange-Schleife] [Variablen] [Variablen-Datentypen] [Variablen-Deklaration] [Vergleichsoperatoren] [While-Schleife] [Zählschleifen] {Zeitverzöderung} [Zufallszahlen]

Quellen:

1. Bezug und Installation - weitere Möglichkeiten history menue scroll up Letztmalig dran rumgefummelt: 12.07.21 17:32:27

Es ist zu empfehlen, sich von den unten genannten Bezugsquellen die aktuellste Version zu beschaffen und zu installieren. Wir bieten mit der Version 0.5.6.0. einen Einstieg, welcher leicht ein Update eigenständig über die Help-Funktion bereitsetellt.
Entpacken Sie das Archiv und kopieren oder installieren Sie in den Ordner C:\PICdev\

Website JAL-Homepage

Website JAL-Entwickler

wenn ich das noch nicht habe oder nicht weiß, wie ich sonst dazu kommen soll ... ;-)

dieses Archiv bringt eigentlich alles mit, was man für den Anfang braucht ...

 

Was man beachten muss: Vorgaben und Möglichkeiten sind abhängig von der Wahl des Schaltkreises sowie seiner gewählten externen Beschaltung
... aus vielen Gründen (u. a. Preis - Leistungsverhältnis) haben wir uns für diesen entschieden, wobei von außen gesehen der Grund- zum A-Typ keinen Unterschied macht    

PIC16F628

Digitaler Eingang - aktiv High

Portkonzept Mikrocontroller

... weitere Möglichkeiten zur Programmierung

nicht zu unterschätzen - vor allem in der Einfachheit der Grundlagen-Programmierung - Flowcode

tolle kleine Tesumgebung mit allem Kofort und zurück - besonders viel Software aus dem Hause VELLEMANN - MPLAB

vollständiges Spielzeug für große Kinder mit umfangreicher Profi-Software - Micro-ICD

Mikromedia Workstation V7


2. Kommentare, Konstanten, Variablen & Bibliotheken - die Bibliothek „16f877 bert"

Bibliotheken (libraries) erweitern die Programmiersprache JAL, indem sie Funktionalität hinzufügen. Mit Hilfe von Bibliotheken können Sie Programme schreiben, die zum Beispiel Daten seriell übertragen, analoge Signale messen und noch vieles mehr.
An den Projekten dieses Buchs mit dem P1C16F877 ist immer die Standard-Bibliothek „16f877 bert"' beteiligt. Diese Standard-Bibliothek ist eine Sammlung populärer einzelner Bibliotheken, die sich in perfekter Weise ergänzen. Die Bibliothek„ 16f877 bert" gehört zum Software-Paket, das Sie kostenlos von unserer Website
www.boekinfo.tk herunterladen können. Durch die Bibliothek„ 16f877 bert" erhält JAL zusätzlich folgende Funktionalitäten:
Programmkommentare:

-- ich bin ein Programmkommentar

... Programmkommentare

  • werden nicht mit compiliert (übersetzt in Maschinensprache) und belasten somit nicht den Controller mit seinem geringen Speichervermögen
  • sollten englisch notiert werden - sind eh meist Standards
  • sollen an allen wichtigen Strukturteilen eines Programmes gesetzt werden
  • sollten das "Verstehen" eines Programmes theoretisch einfach machen

einfache Portdeklaration digital

digitale Eingabe digitale Ausgabe
pin_c4_direction = Input - Pin C4 arbeitet als Eingabe-Bit (es muss eine externen Spannung über einen Verbraucher zugeführt werden!!!) pin_c4_direction = Output - Pin C4 arbeitet als Ausgabe-Bit (es dürfen also keine externen Spannungen ohne Verbraucher zugeführt werden!!!)

einfache Portdeklaration analog

analoge Eingabe analoge Ausgabe
pin_c4_direction = Input - Pin C4 arbeitet als Eingabe-Bit (es muss eine externen Spannung über einen Verbraucher zugeführt werden!!!) pin_c4_direction = Output - Pin C4 arbeitet als Ausgabe-Bit (es dürfen also keine externen Spannungen ohne Verbraucher zugeführt werden!!!)
Variablen und Auflistung von Variablen

die Definition erfolgt mit  var datentyp variablenname

Beispiel:

-- definition

var bit is flag

Auswahl möglicher Datentypen

var byte variable1
var word variable2, variable3, variable4
var bit variable5

Typbezeichner Definitionsbereich
bit 1 bit unsigned boolean value (0 oder 1) --ohne vorzeichen
byte 8 bit unsigned value (0 bis 255) --ohne vorzeichen
sbyte 8 bit signed value (-128 bis127) --mit vorzeichen
word 16 bit unsigned value (0 bis 65535) --ohne vorzeichen
sword 16 bit signed value (-32768 bis 32767) --mit vorzeichen
dword 32 bit unsigned value (0 bis 4294967296) --ohne vorzeichen
sdword 32 bit signed value (-2147483648 bis 2147483647) --mit vorzeichen
Außerdem sind Variablentypen „nach Maß" definierbar, wie dieses Beispiel zeigt:
 
var bit*2 demo

In vorstehendem Beispiel hat die Variable „demo" die Länge 2 Bit, sie kann folglich die dezimalen Werte 0, 1, 2 oder 3 annehmen. Wenn dieser Variablen ein Wert zugewiesen wird, muss der Wert nicht unbedingt 2 Bit lang sein. Die Variable übernimmt nur die beiden niederwertigen Bits, allen übrigen Bits werden abgeschnitten (In diesem Fall kann der Compiler eine Warnung ausgeben. Wenn das Abschneiden der höheren Bits absichtlich geschah, darf die Warnung ignoriert werden. Die Ausgabe dieser Warnung ist in der Compiler-Konfiguration normalerweise abgeschaltet).

Die Zuweisung
demo = 99

hat zur Folge, dass die 2-Bit-Variable „demo" den dezimalen Wert 3 erhält. Dezimal 99 entspricht binär 1100011, die beiden letzten Bit sind 11, was der dezimalen Zahl 3 entspricht. außer dem dezimalen Zahlenformat sind in JAL zwei weitere Zahlenformate erlaubt, sie müssen durch die Präfixe „Ox" beziehungsweise „Ob" gekennzeichnet werden:

23
Ox1F
Ob01
dezimales Zahlenformat
hexadezimales Zahlenformat
binäres Zahlenformat

Natürlich ist auch die Verwendung von Zeichenketten (Strings) möglich, sie müssen in Anführungszeichen gesetzt werden:

„Hello" Zeichenkette

Zur besseren Lesbarkeit der Zahlen können zwischen die Ziffern an beliebigen Stellen Unterstriche eingefügt werden. Die Schreibweisen „100" und „10_0" sind für den Compiler identisch. Im folgenden Beispiel wird einer Variablen ein binärer, mit Unterstrichen geschriebener Wert zugewiesen:

a = 0b_1001_1110
Variablendeklaration

Bevor das Zuweisen oder Abrufen von Werten möglich ist, müssen Variablen definiert werden. In JAL gibt es für das Definieren der Variablen folgende Möglichkeiten:

var byte a
var byte a = Ox1F
var byte a at 0x06
var byte volatile a
var byte a is b
a ist als Byte definiert
wie vorstehend, a erhält den jedoch den hexadezimalen Wert 1FH
a ist als Byte auf Speicherplatz 0x06 definiert
a ist als Byte definiert und darf vom Compiler nicht optimiert oder eliminiert werden
a ist ein Synonym oder Alias für b (zuerst muss b definiert werden)
... mit der zuletzt genannten Definition können Sie den Mikrocontroller-Anschlüssen treffendere Namen geben. Wenn beispielsweise Anschluss cl eine rote LED steuert, kann folgende Anweisung sinnvoll sein:
 
var bit redled is pin_ci

Im Anschluss an diese Definition können Sie die LED mit „redled = 1" einschalten. Diagramm gewinnt nicht nur an Verständlichkeit, auch ein eventuell notwendiges Übertragen auf einen anderen PIC-Mikrocontroller-Typ wird vereinfacht. Falls beim anderen PIC der Anschluss c1 nicht vorhanden ist, müssen Sie nur die Programmzeile ändern, in welcher die Definition steht:

var bit redled is pin_a1

Alle übrigen Zeilen des Programms, in denen die LED eingeschaltet oder ausgeschaltet wird bleiben unverändert.

Trickprogrammierung für "Erfahrene"

Wenn Sie einer Variablen einen bestimmten Speicherplatz zuordnen, müssen Sie die Folgen im Auge behalten. Durch Zuordnen eines Speicherplatzes können Sie eine Variable auf geschickte Weise unterteilen. Im folgenden Beispiel wird dem Array „dem" der gleiche Speicherplatz ~~ .Variablen „demo" vom Typ „word" zugeordnet:
 
var word demo
var byte dem[2] at demo

Da die Variable „demo" vom Typ „word" ist, hat sie die Länge 2 Byte. Das Arrav „dem" ist ebenfalls 2 Bytes lang, so dass das erste Element des Arrays „dem" mit dem unteren Byte von „demo" und das zweite Element des Arrays „dem" mit dem oberen Byte von „demo" identisch ist.

für bestimmte Zwecke gibt es Funktionsgebundene und somit reservierte Bezeichner (sie werden von den Bibliotheken vordefiniert) - im Sinne des Systems sollte man sie einhalten, muss dies jedoch nicht zwingend tun. So lauten die Standardbezeichner:
  • counter für eine Zählvariable
  • value für einen Zufallswert
  • resist für einen Widerstandswert

vollständige Variablendeklaration mit verschiedenen Datentypen, Auflistung sowie Startwwert-Zuweisung

Konstanten:

Wenn von vornherein feststeht, dass der Wert einer Variablen niemals verändert wird, handelt es sich um eine Konstante. Einer Konstanten kann n Wert wie folgt zugewiesen werden:
 
const byte demo = 5

Im Gegensatz zu Variablen belegen Konstanten keinen Platz im Arbeitsspeicher (RAM). Bei n meisten PIC-Typen ist der Arbeitsspeicher relativ knapp bemessen. Durch den Einsatz von Konstanten anstelle von Variablen (sofern möglich) wird der Arbeitsspeicher entlastet. allerdings macht sich dieser vorteilhafte Effekt bei kurzen Programmen nur wenig bemerkbar, deshalb werden Konstanten in den Programmen dieses Buchs nur selten verendet.


3. Mathematische & logische Operatoren

Zu berechnen gibt es auf einem Computer immer etwas - und Mikrocontroller sind kleine Computer. Ergo beherrschen sie auch die "kleine" Mathematik sowie die grundlegenden Gesetze der Aussagenlogik (Bool'sche Logik).
Die Programmiersprache JAL erlaubt die Anwendung vergleichsweise vieler Operatoren. Die wichtigsten Operatoren sind nachfolgend zusammen mit einer kurzen Beschreibung aufgeführt:
Mathematische Operatoren
Operation Operator Bemerkungen Beispiele
Addition

+

  • bildet die Summe aus Variablen-Inhalten sowie auch aus Konstanten
  • die Grenzen der vereinbarten Datentypen sind zu beachten
a = 3
b = 7
c = a + b
-- c enthält nun den Wert 10
Subtraktion

-

  • bildet die Differenz aus Variablen-Inhalten sowie auch aus Konstanten
  • der zweite Wert wird vom ersten Wert subtrahiert
  • die Grenzen der vereinbarten Datentypen sind zu beachten
  • negative Zahlen werden kritisch
a = 7
b = 3
c = a - b
-- c enthält nun den Wert 4
Multiplikation

*

zwei Werte werden ganzzahlig miteinander multipliziert 9 ' 2 = 18
Ganzzahlige Division

/

ein Wert wird ganzzahlig ohne Rest durch einen anderen Wert dividiert 9 / 2 = 4
Modula-Operation

%

ein Wert wird ganzzahlig durch einen anderen Wert dividiert, das Ergebnis ist der Rest 9 % 2 = 1
Logische Operatoren
Operation Operator Bemerkungen Beispiele
ZERO-Test

!!(numerischer_ausdruck)

... dieser Operator gibt an, ob ein Wert gleich 0 oder oder nicht gleich 0 ist. !!5 = 1 ergibt falsch, und !!0 = 0 ergibt im Wahrheitswert "wahr"
Logische Negations-Verknüpfung NOT-

siehe dazu auch ...

!(numerischer_ausdruck)

der Wert wird nicht mit negativem Vorzeichen versehen - alle Bits werden invertiert!!! Beispiel: !5 = 250, denn !Ob 0000 0101 = Ob 1111 1010 es gilt:

1 = 0
0 = 1

 
Logische Konjunktion - AND-Verknüpfung

siehe dazu auch ...

(ausdruck1) & (ausdruck2)

  • der Gesamtausdruck ist nur dann wahr, wenn beide Teilausdrücke zum Zeitpunkt der Zusammenfassung wahr sind
  • die Grenzen der vereinbarten Datentypen sind zu beachten
es gilt:

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

Logische Disjunktion - OR-Verknüpfung

siehe dazu auch ...

(ausdruck1) | (ausdruck2)

  • der Gesamtausdruck ist nur dann wahr, wenn einer der beteiligten Teilausdrücke zum Zeitpunkt der Zusammenfassung wahr ist
  • die Grenzen der vereinbarten Datentypen sind zu beachten
Bitweise OR-Verknüpfung, es gilt:

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

Logische Exclusiv - XOR-Verknüpfung

 

siehe dazu auch ...

(ausdruck1) ^ (ausdruck2)

  • der Gesamtausdruck ist nur dann wahr, wenn beide Teilausdrücke zum Zeitpunkt der Zusammenfassung ungleich sind
  • die Grenzen der vereinbarten Datentypen sind zu beachten
es gilt:

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

Bitweises Schieben eines Werts nach rechts

siehe dazu auch ...

»

Achtung: Das Vorzeichen (+ oder -) eines Variablenwerts wird durch die Schiebeoperation nicht beeinflusst
Bitweises Schieben eines Werts nach links

siehe dazu auch ...

«

Achtung: Das Vorzeichen (+ oder-) eines Variablenwerts wird durch die Schiebeoperation nicht beeinflusst
Vergleichsoperatoren
Operation Operator Bemerkungen Beispiele
kleiner als

<

... der links stehende Wert ist kleiner als der rechts stehende Wert a < 3 (wahr, wenn der Wert von a kleiner als 3 ist, ansonsten falsch!)
kleiner oder gleich wie

<=

... der links stehende Wert ist kleiner oder gleich dem rechts stehenden Wert a <= 3 (wahr, wenn der Wert von a kleiner oder gleich 3 ist, ansonsten falsch!)
 
identisch mit

==

... der links stehende Wert ist identisch mit dem rechts stehenden Wert - dieser Operator besteht aus zwei aufeinander folgenden Gleichheitszeichen a == 3 (wahr, wenn der Wert von a genau gleich 3 ist, ansonsten falsch!)
 
ungleich != ... der links stehende Wert ist nicht identisch (ungleich) mit dem rechts stehenden Wert a != 3 (wahr, wenn der Wert von a nicht genau gleich 3 ist, ansonsten falsch!)
 
größer oder gleich wie >= ... der links stehende Wert ist größer oder gleich dem rechts stehenden Wert a >= 3 (wahr, wenn der Wert von a größer oder gleich 3 ist, ansonsten falsch!)
größer als > ... der links stehende Wert ist größer als der rechts stehende Wert. a > 3 (wahr, wenn der Wert von a größer als 3 ist, ansonsten falsch!)


4. Zeitverzögerungen und Zufallswerte

Als Basisbefehle müssen hier vorerst die Anweisungen und Kommandos sowie Vereinbarungen verstanden werden, welche uns in die Lage versetzen, unter Nutzung der Bibliotheken minimale Programme zu schreiben, die auch schon etwas "tun"! Zum Programmieren von Verzögerungen im Programmablauf stehen folgende Kommandos zur Verfügung:
Zeitverzögerung

delay function(zeitkonstante)

als function sind sind zugelassen die Bezeichner:
extrem-Kuzzeitbereich bis Kurzzeitbereich Technischer "Langzeitbereich"
  • delay_1µs --genau eine Mikrosekunde
  • delay_lµs (byte in N) --genau N Mikrosekunden
  • delay_2µS
  • delay_3µS
  • delay_4µS
  • delay_5µS
  • delay_6µS
  • delay_7µS
  • delay_8µS
  • delay_9µS
  • delay_l0µS (byte in N) --genau N •  10  Mikrosekunden
  • delay_20µs (byte in N) --genau N •  20  Mikrosekunden
  • delay_50µs (byte in N) --genau N •  50  Mikrosekunden
  • delay_100µs (byte in N) --genau N •  100  Mikrosekunden
 delay_200µs (byte in N) --genau N •  200  Mikrosekunden
 delay_500µs (byte in N)
--genau N •  500   Mikrosekunden
 delay_1ms (byte in N)
--genau N •  1  Millisekunden
 delay_10ms (byte in N)
 delay_20ms (byte in N)
 delay_50ms (byte in N)
 delay_l00ms (word in N)
 delay_200ms (byte in N)
 delay_500ms (byte in N)
 delay_ls (byte in N)
 delay_2s (byte in N)
 delay_5s (byte in N)

das uS im Kurzzeitbereich steht für "Mikrosekunden"

Zufallszahlen
 
Allgemeine Notation:

random (Zufallswerte)

 Mit diesen Kommandos werden quasi-zufällige Zahlenwerte generiert:

number = dice wählt willkürlich eine Zahl zwischen 1 und 6 (das sagt ja die Anweisung "dice" eigentlich bereits)
number = random_BYTE wählt willkürlich eine Zahl zwischen 0 und 255
number = random_WORD wählt willkürlich eine Zahl zwischen 0 und 65025 (255 × 255)


4. Port-Operationen

Als Basisbefehle müssen hier vorerst die Anweisungen und Kommandos sowie Vereinbarungen verstanden werden, welche uns in die Lage versetzen, unter Nutzung der Bibliotheken minimale Programme zu schreiben, die auch schon etwas "tun"!
... wir arbeiten digital

alles schon drin: Deklaration, Richtung, Befehle und Programmstrukturen

  • include 16f877_bert - schließt die Bibliothek für den Controller PIC 16F877 ein
  • pin_c4_direction = Output - Pin C4 arbeitet als Ausgabe-Bit (es dürfen also keine externen Spannungen ohne Verbraucher zugeführt werden!!!)
  • pin_d3 = high - aktiviert Bit 3 an Port D des Controllers PIC 16F877 auf hohe Spannung (5 Volt)

... die hier und so angegebenen Kommandos beziehen sich auf den Baustein PIC 16F877 -  der PIC 16F628 hat gar keinen Port C oder gar D!!!

... ein entsprechendes Portkonzept wird hierfür natürlich vorausgesetzt!

Portkonzept Mikrocontroller


5. Zufallszahlen

Zufallszahlen sind auf der Ebene der Microcontroller genauso wichtig, aber auch genau so "sensibel" wie ihre großen Brüder in den Hochsprachen der modernen Programmiertechnik. Für unsere kleinen Projekte bemerken wir das allerdings nicht.
number = dice wählt willkürlich eine Zahl zwischen 1 und 6 (das sagt ja die Anweisung "dice" eigentlich bereits)
number = random_BYTE wählt willkürlich eine Zahl zwischen 0 und 255
number = random_WORD wählt willkürlich eine Zahl zwischen 0 und 65025 (255 × 255)


7. Verzweigungen - Alternativen

Verzweigungen von Programmen sind die eigentlich wichtigste Grundstruktur der Programmierung und machen den Unterschied zwischen einer Abfolge sowie einem Programm aus. Bei einer einfachen Abfolge wird zwangsläufig ein Schritt nach dem anderen abgearbeitet, ein Programm jedoch hinterfragt vor Abarbeitung des nächsten Schrittes das Ergebnis des gerade erledigten Teils.
 

unvollständige Alternative:

if bedingung then
  anweisungsblock
end if

Beispielprogramm mit einer unvollständigen einfachen Verzweigung

vollständige Alternative:

if bedingung then
  anweisungsblock
else
  anweisungsblock
end if

Beispielprogramm mit mehreren vollständigen einfachen Verzweigung

mehrfache Alternative:

if bedingung then
  anweisungsblock
else
  anweisungsblock
end if

Beispielprogramm mit mehreren vollständigen einfachen Verzweigung


8. Schleifen - Zyklen

Zyklen sind wiederholt komplett identisch auszuführende Programmsequenzen, welche erst durch das Eintreffen einer vorab definierten logischen Bedingung nicht mehr ausgeführt werden bzw. in einem Fall bei zutreffen der Bedingung vor Schleifeneintritt überhaupt nicht erst ausgeführt werden.

Endlosschleifen - forever loop:

Mit dieser Schleifenkonstruktion wird der dazwischen stehende Programmteil endlos wiederholt. In vielen Programmen ist die Forever-Schleife eingebaut, damit das Programm jemals stoppt, müssen andere Konstrukte eingebaut werden - diese Schleife läuft ansonsten wie eine Art Betriebssystem für den Controller.

Allgemeine Notation:

forever loop
  [anweisungsblock]
end loop

 

Wiederhole Solange-Schleifen - loop while:

Die Loop-while-Schleife wird nur so lange durchlaufen, bis eine bestimmte Bedingung ermittelt ist oder ein bestimmtes Ereignis eintritt.

Allgemeine Notation:

while bedingung loop
  [anweisungsblock]
end loop

 

Wiederhole bis ... -Schleifen:

while bedingung loop
  [anweisungsblock]
end loop

Zählschleifen - for loop:

Wenn die Anzahl der Wiederholungen einer Schleife einen festen Wert haben soll, wird die for-schleife Schleife angewendet.

Allgemeine Notation:

for anzahl loop
  [anweisungsblock]
end loop

Im folgenden Beispiel werden die in der Schleife stehenden Kommandos genau zehn mal wiederholt:

for 10 loop
  [anweisungsblock]
end loop


10. Subroutinen (Unterprogramme)
Sollen gleiche Programmelemente in sich komplett gleich abgearbeitet, jedoch die angewandten Werte jeweils verschieden sein, so heißt das universelle Lösungsmittel Prozeduren - und auch JAL kennt diese.

 


11.  Funktionen sowie Verfahren nutzen - externe Bausteine steuern

Hier nun öffnet sich für eigentlich jede physikalische Größe die Option auf einen entsprechenden Signalwandler, welcher auch über die Mikrocontroller ausgewertet werden kann. Darüber hinaus existieren ganze Bauteil-Paletten, welche in sich bereits komplexe Funktionen verfügbar machen.
Aber auch der Controller selbst sowie einige rafinierte Verfahren bieten sich hier zur Anwendung an.
Blue-Line Dot-Matrix W162B-BNLW Serielle Kommunikation mittels RS 232 1,5 A MOSFET-Treiber für Gleichstrommotoren

BlueLine LCD Dotmatrix EA W162B-BNLW

RS-232-Schnittstelle

1,5 A MOSFET Motoren-Treiberbaustein TC4427A

1kByte serielles EEPROM PWM-Steuerungen Duty-Cycle-Steuerungen

1 kByte serielles EEPROM  24XX256

Puls-Width Modulation

Duty-Cycle-Steuerungen


12. Verwandte Themen history menue scroll up

Was ist alles mit dem Betriebssystem eines Microcomputers verwandt? Antwort: faktisch der gesamte Bereich der Digitalelektronik und sowieso die gesamte Technik der Software-Technologie der Vergangenheit, Gegenwart sowie zumindest der nächsten Zukunft.

Der LC-80 Simulator

POLYCOMPUTER

Z80-CPU

Mnemonic-Code-Notation

höhere Programmierwerkzeuge

... und so funktioniert ein Computer

 

die beliebte alphabetisch sortierte Schnell-Liste

die beliebte numerisch sortierte Schnell-Liste

Allgemeine FLAG-Wirkung

FLAG-Wirkung auf OP-Code-Gruppen

Alphabetisch sortierte Dokumentation

FLAG Teile I

FLAG Teile 2

Allgemeine Funktionssymbolik

Aktuelles sowie weiterentwickeltes Betriebssystem

Blockschaltbild eines Einchiprechners

   

Projekt Assemblerprogrammierung

   


zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost am 21. Juli 2009

... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-)

„Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“

Diddi Hallervorden, dt. Komiker und Kabarettist

Diese Seite wurde ohne Zusatz irgendwelcher Konversationsstoffe erstellt ;-)