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

Site Timeline

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.