www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie kann ich Daten von einem Register aufsplitten ?!


Autor: Dennis Brücke (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas K (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dennis Brücke (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter B (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dennis Brücke (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.