www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik Register zusammenfügen im PIC mit Assembler

Autor: Wolf Retlaw (Firma Monster AG) (ik-student)
Datum: 30.04.2008 14:32

Hallo,

habe mal eine Anfängerfrage. Ich möchte in meinem PIC 12F683 mehrere
Register zusammenfügen, damit ich zum Beispiel größere Bitströme in
einer Art Array zusammenfügen kann.

Beispiel:

Mein 12F683 Pic besitzt 8Bit-Register, ich möchte einen Bitstrom von 27
Bits (ein gesendetes Frame) entgegen nehmen. Also benötige ich ungefähr
4 Register.

Ich habe mich schon mal ein wenig schlau gemacht und bin auf der
sprut.de Seite fündig geworden.

Um also mehrere Register zusammenschmelzen lassen zu können muss das
wohl so aussehen ?  :

registername RES 04 ;4 Register werden zusammengefasst?

und wie kann ich nun am dümmsten darauf zugreifen um alle Register mit 1
und 0 vollschreiben zu können ? ;)

Danke im Voraus
Gruß Wolf
Autor: Thomas Bremer (Firma Druckerei Beste) (virtupic)
Datum: 30.04.2008 14:45

PIC kann keine Register zusammenfügen. Schade eigentlich! Du musst alle
Operationen separat auf den einzelnen Registern ausführen. Bei Move und
logischen Befehlen ist das kein Problem, aber schon bei Add / Sub geht's
los, weil keine Operation da ist, die einen Carry draufaddiert.

virtuPIC
Autor: Wolf Retlaw (Firma Monster AG) (ik-student)
Datum: 30.04.2008 15:00

Danke für deine schnelle Antwort Thomas!

hmm... das ist echt schade, aber irgendwie kann ich doch mit dieser oben
genannten Definition doch irgendwie Register zusammenfassen ?
registername RES 04 ;4 Register werden zusammengefasst?

und zugreifen kann man zum Beispiel irgendwie mit :
           rrf    bitbuffer+x ;x ist eine Laufvariable
           .
           .
           incf   x           ;nach jedem Durchlauf erhöht

ist das so korrekt oder habe ich da einen Denkfehler drinnen !?

gruß
wolf
Autor: tastendrücker (Gast)
Datum: 30.04.2008 16:53

Wo genau hast Du denn dieses 'RES' gesehen (link)?
Autor: tastendrücker (Gast)
Datum: 30.04.2008 17:13

Ich hab's schon gefunden. RES reserviert Speicher.
 Buffer  RES  10   ;10 Byte Puffer
 :
 movlw   10
 movwf   Buffer
 movlw   13
 movwf   Buffer+1
 movlw   15
 movwf   Buffer+2
 :
Autor: Meister Eder (edson)
Datum: 07.05.2008 10:34

@wolf retlaw

>        rrf    bitbuffer+x ;x ist eine Laufvariable
>         .
>        .
>       incf   x           ;nach jedem Durchlauf erhöht

Also da ist sogar ein gewaltiger Denkfehler drin! Was du zu bitbuffer
hinzuaddierst ist die Adresse von x, erhöht wird dann der Inhalt der
Variable x. Das ergibt wohl so keinen Sinn, oder?

Für Variable können durch die Definition mit RES mehrere Speicherzellen
unter gleichem Namen zusammengefasst werden. Angesprochen werden die
einzelnen Register so wie es der Tastendrücker oben gepostet hat.

Gruss,
Edson
Autor: Wolf Retlaw (Firma Monster AG) (ik-student)
Datum: 08.05.2008 10:38

@Meister Eder

das ist mir auch schon klar geworden, aber für mich wäre es günstiger,
wenn ich halt eine Art Laufvariable hätte wie halt oben mein Pseudocode,
wo eine Variable je nach Bedingung erhöht wird um mir den jeweilig
benötigten Speicherplatz reservieren zu können.

naja muss ich wohl umdenken..


Gruß Wolf

Antwort schreiben

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

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net