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
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
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
Datum: 30.04.2008 16:53
Wo genau hast Du denn dieses 'RES' gesehen (link)?
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 : |
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
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