Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wer kann Assembler (Microcontroller) ? (https://www.delphipraxis.net/12299-wer-kann-assembler-microcontroller.html)

MrKnogge 24. Nov 2003 18:14


Wer kann Assembler (Microcontroller) ?
 
Servus miteinander !

Ich schreib morgen ne Arbeit, und da ich so meine
Probleme mit Assembler habe (es lebe Delphi !),
wollte ich euch fragen, ob mir nicht jemand n bissl Erklären kann.

Ich meine natürlich nicht den kompletten Befehlssatz, sondern nur
Standardbefehle wie mov, cjne etc.


Beispielaufgabe:

Ein Sägeblatt soll solange nach links fahren, sobald
es eine Lichtschranke durchbricht soll es nach rechts
fahren, und umgekehrt.

Wenn ein Schalter betätigt wird, oder beide
Lichtschranken (gleichzeitig) durchbrochen werden.
soll die Säge stehen bleiben.

Eingänge
P1.0-P1.7
Ausgänge
P2.0-P2.7


Nun, wie gehe ich am besten an so eine Aufgabe ran ?
Woher weis ich wohin ich bestimmte Stände specihern soll (Register o. Accu)?


Ich hoff Ihr könnt mir helfen.

Vegeto19 24. Nov 2003 22:23

Re: Wer kann Assembler (Microcontroller) ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Befehlserklärung:

Sprungbefehle:
lcall = ein Unterprogramm wird aufgerufen
lcall ms100 = ein Unterprogramm das 100ms wartet
CJNE Rn,#data,rel = Sprung nach rel, wenn Akku ungleich Konstante ist
rel = + - 7-Bit-Sprungdistanz für Sprungbefehle z.B.: M1
SJMP rel = Sprung mit + - 7-Bit-Sprungdistanz
JB bit,rel = Sprung wenn Bit-Adresse = 1
JNB bit,rel = Sprung wenn Bit-Adresse = 0

Datentransferbefehle:
mov dptr,#data16 = Die 16 Bit-Konstante wird in den Datenpointer geladen
mov Rn,#data = Konstante wird in ein Register geladen
mov A,#data = Konstante wird in den Akku geladen
ret = vom Unterprogramm, Sprung zurück ins Hauptprogramm
mov A,Rn = Register wird in den Akku geladen
movc A,@A+DPTR = Datenpointer wir mit dem Akku addiert und in den Akku geladen
mov direct,A = Der Akku wird in das Direkt-Byte geladen

Arithmetische Befehle:
inc Rn = erhöht das Register um 1
dec Rn = erniedrigt das Register um 1

Logische Befehle:
RR A = Akku rotiert nach rechts
RL A = Akku rotiert nach links


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz