Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Demoprogramm: PAUSE in Assembler Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 26.05.2026 0:51)
 Als Antwort auf "PAUSE" in Asm? von Christian - 26.05.2026 0:24
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini Station
Hallo Christian,

legst Du eine Nachtschicht ein?

Zu Deinen Fragen:

> Mir fällt dazu eine Art leere FOR-Schleife ein. Also Rechenzeit verbraten!

Das ist die simpelste Lösung. Sie hat aber den Nachteil, daß sie abhängig von der Taktrate des Controllers ist.

> Oder einfach den Assemblerbefehl WAIT ausführen?

Damit wird auf den nächsten Interrupt gewartet. Das ist nicht unbedingt ein TIMER-Interrupt. Aber intern im Betriebssystem der OM-Controller wird das beim PAUSE-Befehl so gemacht. Siehe OS.

> Oder kann man ins OS der OM´s zum "PAUSE"-Befehl springen? Die Adressen im OS sind ja dokumentiert.

Das ist auch wieder abhängig vom Controller. Bei jedem OM-Controller ergibt sich eine andere Adresse.

Aber es gibt auf den OM-Controllern die Möglichkeit, jeden BASIC-Befehl per Firmwareroutine "FwIntrprt" aufzurufen. Dieses Verfahren sollte auf allen OM-Controllern funktionieren ohne den Sourcecode anpassen zu müssen. Um unabhängig vom Speicherlayout zu sein, werden Firmwareroutinen bei den OM-Controllern über Funktionsnummern aufgerufen. Siehe Beispiel unten!

Freundliche Grüße

Dietmar



' ===========================================================================
' Demoprogramm: PAUSE im Assembler
' In OCBASIC 1.12a für alle OM-Controller von Dietmar Harlos am 26. Mai 2026
' ===========================================================================

' In diesem Demoprogramm wird mit Hilfe der Firmwareroutine "FwIntrprt" ein
' PAUSE-Befehl ausgeführt. Die Token der diversen BASIC-Befehle findet man im
' Kapitel "Unterstützter Befehlsumfang" in der Dokumentation:

' http://om.dharlos.de/doku_omax/html/COMPILED.HTM#unterst_tzter_befehlsumfang

' --- Definitionen ----------------------------------------------------------

'INCLUDE "om.def"         'Definitionen für die Open-Micro und Open-Mini
'INCLUDE "omid.def"       'Definitionen für die Open-Midi
'INCLUDE "omac.def"       'Definitionen für die Open-Macro
INCLUDE "omax.def"       'Definitionen für die Open-Maxi

' --- Hauptprogramm ---------------------------------------------------------

PrintSpc=ON              'SPACE vor einem dezimalen PRINT
End2Host=ON              'Bei Programmende gleich in den Host-Modus wechseln

PRINT "PAUSE in Assembler"

PRINT TIMER
PauseInAsm
PRINT TIMER

PRINT "Programmende."

END

' --- Subroutinen und Funktionen --------------------------------------------

' Die Token der diversen BASIC-Befehle findet man im Kapitel "Unterstützter
'   Befehlsumfang" in der Doku der Open-Macro und Open-Maxi.

PROCEDURE PauseInAsm INLASM

! lda #50                'PUSH 50
! jsr FwPush
! lda #2                 'PAUSE
! jsr FwIntrprt

! rts

END PROCEDURE

' ---------------------------------------------------------------------------
' Die Firmware-Routinen einbinden
' ---------------------------------------------------------------------------

INCLUDE "om_fw.pro"

' --- Programmende ---------------------------------------------------------


Passender Link: Infosite zu den OM-Mikrocontrollern

Meine Homepage: http://ccintern.dharlos.de/

 Antwort schreiben

Bisherige Antworten:

Re: Demoprogramm: PAUSE in Assembler (von Christian - 26.05.2026 1:11)