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


von Wolf R. (Firma: Monster AG) (ik-student)


Lesenswert?

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 ?  :

1
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

von Thomas B. (Firma: Druckerei Beste) (virtupic)


Lesenswert?

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

von Wolf R. (Firma: Monster AG) (ik-student)


Lesenswert?

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 ?
1
registername RES 04 ;4 Register werden zusammengefasst?

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

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

gruß
wolf

von tastendrücker (Gast)


Lesenswert?

Wo genau hast Du denn dieses 'RES' gesehen (link)?

von tastendrücker (Gast)


Lesenswert?

Ich hab's schon gefunden. RES reserviert Speicher.
1
 Buffer  RES  10   ;10 Byte Puffer
2
 :
3
 movlw   10
4
 movwf   Buffer
5
 movlw   13
6
 movwf   Buffer+1
7
 movlw   15
8
 movwf   Buffer+2
9
 :

von Meister E. (edson)


Lesenswert?

@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

von Wolf R. (Firma: Monster AG) (ik-student)


Lesenswert?

@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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.