Bit 2 bis 5 als EINE Variable ansprechen

Gast
Hallo Marcel,

Port C (8 Bit?) auslesen: c <-- Port C
2 mal rechts shiften und maskieren: c = (c>>2)&0x0F
Jetzt liegen die Pinwerte 2,3,4,5 als eine Variable vor.

Grüße
Oliver
Gast
Hallo Oliver

Ich möchte nicht auslesen, sondern ausgeben. Und wenn ich die 4Bit auf 
den ganzen Port mit 8Bit schreiben würde, wären die Bits 0-3  gesetzt 
anstatt Bit 2-5.

Ich suche irgendwas in der Form von:

#define BCD_Output [PORTC.2;PORTC.3;PORTC.4;PORTC.5]

Vielleicht könnte ich selbst einen Datentyp definieren (#typedef) aber 
ich weiss nicht, was ich schreiben soll...
Gast
Ich weiss nicht, wie Du Deine Ports in C ansprichst, aber so müßte es 
gehen:

PortC = PortC | (Deine_Variable&0xF)<<2

Deine_Variable enthält den Wert(low nibble). High Nibble wird 
ausgeblendet und alles an die Bitstelle 2 bis 5 verschoben.
Gast
Hi Marcel,

um das Maskieren wirst du wohl nicht herumkommen; schreib dir doch 
einfach ein Makro. Weiß gerade nicht, ob CV mit dieser Terminologie 
arbeitet, aber so ungefähr wird es gehen:

#define LCD_PORT(X) PORTC = ((PINC&0xC3)|X)

Beim GCC:
#define LCD_PORT(X) outp((inp(PINC)&0xC3)|X,PORTC)

Gruß
Olaf
Gast
hi,
probier doch mal ein bisschen inline assebler und bastel dir was mit SBI 
und CBI (set bit in I/o register und das gleiche mit clear)

beispielfetzen:

asm volatile("cbi portc, 0") // setzt pb0 <- 0
asm volatile("sbi portc, 1") // setzt pb1 <- 1

natürlich noch ne nette funktion und ne schleife und ein par ifs und 
viele klammern drumbasteln (asm ist eben doch unkomplizierter ;D)
ich hab wirklich keine ahnung, obs so geht, aber meiner meinung nach 
wärs ein möglicher ansatz :D

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.