Wie kann ich Daten von einem Register aufsplitten ?!

Gast #72878
Lesenswert?
• ▲
▼
Hi @all,

ich habe folgendes Problem, ich habe es endlich geschaft mein Grafik
LCD Display (KS0108B) halbwegs anzusteuern (manuell, also sprich per
feste befehle).
Das Problem ist das DB0-3 an PortC und DB4-7 an PortB liegen.

Gibt es eine möglichkeit, das ich z.b. ein Register wie z.b.
0b11110000 so aufzusplitten, das jetzt die ersten bits 0-3 auf PortC
Pin 2-5 ausgegeben werden und die anderen bits 4-7 auf PortD ausgegeben
werden ?!

Muss ich das irgendwie mit Bitshifting machen ?!
Ich grübel schon die ganze zeit. Stoße da schon an meine grenzen wenn
es darum geht die Page festzulegen. z.b. Page 2 währe 0b10011100 uff
und das muss ich ja dann irgendwie aufteilen auf meine beiden Ports :(

Gruß Dennis
Gast #72879
Lesenswert?
• ▲
▼
also wenn du die "ersten" bits haben wills dann würd ich einfach mit
einem UND verknüpfen.
also wie z.B. hier im tutorial mit andi:
http://www.mikrocontroller.net/tutorial/lcd.htm

andi r16, 0b00001111   ;Nur die vier unteren (mit 1 markierten)
                       ;Bits werden übernommen, alle anderen werden
null

das ergebnis kannst du dann auf PortC ausgeben.

wenn du auf den ersten pins von PortD dann die "linken" 4 Bits
ausgeben willst, dann einfach 4 mal nach rechts shiften
Gast #72880
Lesenswert?
• ▲
▼
Hi,

danke Dir für die schnelle Antwort, das Problem ist, das ich es leider
nicht an den ersten Ports habe :(

Hier Die Portauflistung
; PB0  =  E
; PB1  =  D/I
; PB2  =  DB3
; PB3  =  DB2
; PB4  =  DB1
; PB5  =  DB0
;
; PC0   =  CS2
; PC1  =  CS1
; PC2  =  DB7
; PC3  =  DB6
; PC4  =  DB5
; PC5  =  DB4

bitte frag mich jetzt nicht warum so kompliziert :( aber theoretisch
muss es doch trotzalledem gehen oder ?!

Gruß Dennis
Gast #72881
Lesenswert?
• ▲
▼
Hallo Dennis

Dann mußt halt die unteren 4 Bits 2 Stellen nach links schieben und
dann mit dem PORTB ODER verknüpfen.

Für die oberen 4 Bits  machst du dann erst eine UND Verknüpfung mit
1111 0000 und schiebst sie dann 2 stelle nach rechts und mit Portc ODER
verknüpfen.

Mal dir das mal auf einem Blatt Papier auf, da sieht man das gut.


MFG
Dieter
Gast #72882
Lesenswert?
• ▲
▼
Uff... ODER ?!

Ich habe mir gerade mal folgendes Ausgedacht,
*********************************************************************
      mov temp2, befehl

      andi befehl, 0b00001111

        bst befehl, 3
        bld temp1, 0

      bst befehl, 2
        bld temp1, 1

      bst befehl, 0
      bld temp1, 3

      bst befehl, 1
      bld temp1, 2
*********************************************************************

Denkweise so korrekt, oder liege ich da vollkommen falsch ?!

Gruß Dennis

P.S: Würde mich über eine kleine bestätigung freuen

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.