ringpuffer in assembler mit pic18f2550

(Firma: JDCC) #2514531
Lesenswert?
• ▲
▼
Der Entwickler schrieb:
> Ringspeicher hat Grösse x
>
> Schreiben (sz ist der Schreibzeiger)
>
> ringspeicher[sz]=wert
> sz = sz + 1
> if sz > x sz = 0
>
> Lesen (lz ist der Lesezeiger):
>
> wert=ringspeicher[lz]
> lz = lz + 1
> if lz > x lz = 0

"ringspeicher" muß die Größe x+1 haben bzw die Bedingung um lz wieder
auf 0 zu setzen: if lz >= x.

Welche Sprache wird das ?
Gast #2514553
Lesenswert?
• ▲
▼
ich brauche den puffer für eine messung bei der ich impulse zähle. die 
gezählten impulse sollen in den ringpuffer geschrieben werden, damit ich 
einen mittelwert aus meinen impulsen bekomme. reicht das?

jan
#2514609
Lesenswert?
• ▲
▼
Joachim Drechsel schrieb:
> Der Entwickler schrieb:
>> Ringspeicher hat Grösse x
>>
>> Schreiben (sz ist der Schreibzeiger)
>>
>> ringspeicher[sz]=wert
>> sz = sz + 1
>> if sz > x sz = 0
>>
>> Lesen (lz ist der Lesezeiger):
>>
>> wert=ringspeicher[lz]
>> lz = lz + 1
>> if lz > x lz = 0
>
> "ringspeicher" muß die Größe x+1 haben bzw die Bedingung um lz wieder
> auf 0 zu setzen: if lz >= x.

Stimmt, sorry.

>
> Welche Sprache wird das ?

Eine PseudoSprache, an C angelehnt ;-)
Gast #2514646
Lesenswert?
• ▲
▼
Ich verstehe es nicht, in einigen Foren lese ich etwas von LPM und LDI 
oder auch von ZH und ZL die die Register R30/31 sein sollten aber dies 
klappt nicht. Kurz gesagt bräuchte ich nur mal ein Beispiel wie ich ein 
Ringpuffer beschreibe.

Dankeschön
#2514652
Lesenswert?
• ▲
▼
Z-Pointer Register auf r30 und r31 hört sich nach avr an... du kannst 
natürlich nicht erwarten, daß fertiger Code für avr auf dem pic läuft.
Heißt: der pic wird auch Pointer Register haben und einen leicht anderen 
Assempler Syntax. Das musst du anpassen - die Funktionsweise des avr 
Beispiels hat aber zum Glück weiterhin Gültigkeit.

P.S. Oder haben die Pics inzwischen auch so viele Register und zufällig 
auch auf r30/31 den Z-Pointer? Ist über 10 Jahtre her daß ich mal einen 
pic ausprobiert habe.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.