80C51/52 kleines Programm

Hi, ein kleines Prgramm für einen 80C51/52 soll folgendes können: Akku auf Null setzen, anschließend inkremetieren bis der Akku den Wert

10 erreicht hat und dann in eine endlosschleife verzweigen. für den Vergleich is das Register R0 zu nehmen.

ich habe das folgenderweise gelöst:

MOV R0, #10 CLR A LOOP: INC A CJNE A, R0; LOOP ENDLOS: NOP JMP ENDLOS

In der Musterlösung steht das so drin: CLR A MOV R=,#10 LOOP: INC A DJNZ R0,LOOP ENDLOS: NOP JMP ENDLOS

Ist das prinzipiell egal wie das ausgeführt wird, oder gibt es gravierende Vor/Nachteile, oder ist ersteres schlichtweg falsch?

Danke schonmal, Timo

Reply to
Timo Gerber
Loading thread data ...

Hi

evtl. ist die zweite Lösung ein paar Takte schneller/Bytes kleiner. Schau mal ins Datenblatt wieviele Zyklen/Bytes djnz bzw. cjne haben. Ansonsten wäre da noch zu erwähnen das der 8051 der Befehl jmp garnicht kennt. D.h. es muß ein Assembler verwendet werden der aus dem jmp automatisch ermittelt ob es ein sjmp/ajmp/ljmp ist.

-- Matthias Weißer snipped-for-privacy@matwei.de

formatting link

Reply to
Matthias Weißer

Hallo Timo,

Diese Lösung entspricht der Aufgabe. Bei CJNE wird gesprungen, wenn der Akku ungleich R0 ist.

funktioniert zwar auch, entspricht aber nicht der Aufgabe. DJNZ dekrementiert R0 und springt, wenn 0. Nach verlassen von LOOP ist R0=0, bei Deiner Lösung bleibt R0=10 und wird gemäß der Aufgabe für den Vergleich verwendet.

Gruß Gerd

Reply to
Gerd Prien

Timo Gerber schrieb...

Nach Prozessorhandbuch geht aber "CJNE A,Rx,rel" nicht. Es geht nur "CJNE A,direct,rel". Es k=F6nnte sein, da=DF Dein Assembler aber unter=20 Kenntniss der aktuellen Registerbank daraus den 'richtigen' Befehl=20 generiert.

Das NOP k=F6nnte man sich noch sparen, damit die Endlosschleife noch ein=20 wenig schneller abgearbeitet wird ;-)

=20

W=FCrde so auch gehen. Wobei die erste L=F6sung IMO etwas eleganter ist,=20 wenn man =FCberhaupt von Eleganz sprechen kann. Die Eleganteste L=F6sung=20 w=E4re, A direkt mit 10 zu initialisieren und dann zu schleifen.

- Heinz

Reply to
Heinz Saathoff

Danke an alle Antworten, hat mir gut weitergeholfen. Timo

Reply to
Timo Gerber

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.