www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kleines mathematisches Problem


Autor: MK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es handelt sich dabei um einen 80c515 Mk, ich hab dazu ein kleines 
assembler Programm, welches lediglich eine warteschleife darstellt:

http://codepad.org/SouBVBdC

(den Output einfach nicht beachten Zunge raus ).

Hier ist der Programm Ablaufplan(als Link):

http://img440.imageshack.us/my.php?image=papjb4.jpg

Ich bräuchte die Formeln für T1, T2, T3 und T4, ich weiss das es etwas 
mit: T1=4
T2= 5+T1*R1(R1 kann eine Zahl zwischen 0 und 255 sein) war, bin mir aber 
nicht sicher...



Mit den besten wünschen für ein schönes Wochenende

Autor: Matthias Larisch (matze88)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simulator?

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde die T's als Sprungmarken interpetieren.

Falls du die Schleifendurchlaufzeiten meinst:

T1 = R2_i * 4

T2 = R1_i * T1 + 1

T3 = R0_i * T2 + 1

gesamt
   = T3 + 1

der Index _i bezeichnet den Initialwert des Registers.

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moin

warum nimmst nicht djnz????

Warten : Mov Ro, # 4    ;Lade Register R0 mit 4 Bit
Marke 1: Mov R1, # 255          ;Lade Register R1 mit 255 Bit
Marke 2: Mov R2, # 255          ;Lade Register R2 mit 255 Bit
Marke 3: Djnz R2,Marke3
         Djnz R1,Marke2
         Djnz Ro,Marke1
         ;ret oder jump was immer du willst

gruss chris

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, da braucht mal wieder jemand Hausaufgabenhilfe? Dein Ansatz ist 
schon richtig...
Das Programm beinhaltet 3 ineinandergeschachtelte Schleifen.
Die innere Schleife benötigt 4 Takte pro Durchlauf: zweimal einen und 
eimal zwei (für den Vergleich A!=0).
Das ganze wird 255 mal augeführt, da R2 mit dieser Zahl initialisiert 
wird. Pro Durchlauf des T2-Loops haben wir also 255*T1 zzgl. einmal 5 
Extra-Takte.
T3-Loop analog: T3=255*T2+5
T4 sehe ich nicht, dürfte aber 4*T3+1 sein.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Programm könnte etwas kompakter so beschrieben werden:
Warten: 
      Mov R0, # 4    
M1:   Mov R1, # 255          
M2:   Mov R2, # 255          
M3:   djnz R2,M3
      djnz R1,M2
      djnz R0,M1
dann ergibt sich die Anzahl der Schleifendurchläufe an M3 zu 4*255*255.
Aber diese Berechnung ist noch das allerkleinste Problem, das du hast.


Schlimmer sieht es da aus:

> Marke 1:
Labels dürfen keine Leerzeichen enthalten.

> Warten : Mov Ro, # 4    ;Lade Register R0 mit 4 Bit
Ro  abcdef...klmn o pqr...xyz.

> Marke 1: Mov R1, # 255  ;Lade Register R1 mit 255 Bit
> Marke 2: Mov R2, # 255  ;Lade Register R2 mit 255 Bit
In R0..2 passen immer nur 8 Bit.

> Dec R2          ;Vom Inhalt des Registers R2 wird 1 abgezogen
> Mov A,R2        ;Lade Akkumulator mit Inhalt von Register R2
> JNZ Marke 3     ;Springe zu Marke 3 wenn Akkumulator ungl. 0
Dafür gibt es den Befehl  djnz (decrement and jump if not zero).

> Jnz Marke 2     ;Springe zu Marke 2 wenn Akkumulator ungl. 0
> Dec R1          ;Vom Inhalt des Registers R1 wird 1 abgezogen
> Mov A,R1        ;Lade Akkumulator mit Inhalt von Register R1
> JNZ Marke 2     ;Springe zu Marke 2 wenn Akkumulator ungl. 0
Da wird 2 mal an die Marke 2 gesprungen, das ist so sicher nicht 
beabsichtigt.

>T1, T2, T3 und T4
tauchen im Code nirgends auf.

Spare dir die ganzen Kommentare. Das was da steht, steht vorne im Code 
schon wesentlich kompakter und leserlicher... ;-)

EDIT: Schade, zweiter...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.