Proog

Version 0.02 des EMTI Compilers steht nun zum Download bereit.

Neu in dieser Version:

Es gibt nun eine experientelle Unterstützung für weitere Mikrocontroller.

Inspiriert von objektorientierter Programmierung (OOP) besteht nun die Möglichkeit, Daten und Subroutinen zu einem Objekt zusammen zu fassen.

Experimentelle Unterstützung für weitere Mikrocontroller

Neben dem ATmega8 werden nun folgende Typen unterstützt: ATmega16, ATmega32, ATmega48 und ATmega88.

Objekte

Version 0.02 unterstützt "Objekte", mit denen eine bessere Strukturierung des Quelltextes möglich ist. Objekte dienen zur Kapselung von Daten und Subroutinen, es handelt sich jedoch nicht um vollständige Objekte im Sinne von OOP (Objektorientierter Programmierung), da nur der Aspekt der Kapselung implementiert ist.

Objekte können beispielsweise sinnvoll bei der Teriberentwicklung eingesetzt werden, um die Daten und Subroutinen, die mit den Daten arbeiten sollen, zu einer logischen Einheit zusammen zu fassen.

Der Zugriff von außen auf Daten oder Subroutinen (Methoden) eines Objekts ist möglich, wenn diese als "public" deklariert sind.

Beispiel:

{codecitation}

 Object LCD
 Private
  Byte cursorx, cursory

 Public
  Sub locate(byte x, y)
   cursorx=x
   cursory=y
  EndSub
EndObject

Begin
 lcd.locate(1,2)   'Rufe die Public-Methode "locate" auf
End

{/codecitation}

Will man aus einem Objekt heraus auf globale Variable oder Subroutinen zugreifen, muss man diese mit "Import" zunächst importieren.

Beim importieren spielt es keine Rolle, ob die angegebenen Namen tatsächlich existieren, es wird lediglich eine Positivliste für erlaubte globale Variable oder Subroutinen erstellt, damit Präprozessor-Funktionen weiterhin sinnvoll nutzbar sind.

Beispiel:

{codecitation}

Const LEDPin="B2"

Object Blink
 Import LEDPin   'Ermögliche den Zugriff auf die globale Konstante

 Private
  Byte count
 Sub delayms100
  delay.ms(100)
 EndSub

 Public
  Sub times(byte c)
   For count=1 To c
   Pin LEDPin.Low   'on
   delayms100
   Pin LEDPin.High   'off
   delayms100
  Next count
  EndSub
EndObject

begin
 blink.times(2)
end

{/codecitation}

Das ZIP-File des Compilers (Siehe Download-Bereich) enthält ein ausführlicheres Beispiel in der Datei "t_obj.txt".

Viel Spaß beim Testen.