Forum: Mikrocontroller und Digitale Elektronik Port-Bits zusammenfassen und dezimal ansprechen


von Thommi (Gast)


Lesenswert?

Hallo Gemeinde :-)

Hab hier am Atmega 16 an PortC0-2 nen Analogschalter HCT4051 hängen und 
möchte diesen umschalten.Die Schalternummer geb ich dem 4051 binär vor. 
Ist es möglich die 3 Ausgänge (portc.0, portc.1, portc.2) mit Alias o.ä. 
umzubenenen und diese 3 Ausgänge sozusagen auf einmal anzusprechen. 
Vielleicht noch dezimal ? Also z.B

...
Schalterstellung alias portc.0, portc.1, portc.2
Schalterstellung = 2
...

Ist schwer zu erklären, ich hoffe ihr wisst was ich meine.
Ich programmiere in Bascom.

Danke !
Thommi

von holger (Gast)


Lesenswert?

Also in C geht das so:

temp = PINC;
temp &= 0xF8;
temp |= Schalterstellung;
PORTC = temp;

von STK500-Besitzer (Gast)


Lesenswert?

portc = 2

von Johannes M. (johnny-m)


Lesenswert?

1
uint8_t schalterstellung = 6;
2
PORTC = (PORTC & 0xF8) | schalterstellung;
PORTC ist danach XXXX X110. Die zweite Zeile kann man natürlich noch als 
Makro definieren, um sich Schreibarbeit zu sparen.
1
#define SET_MUX(x) PORTC = (PORTC & 0xF8) | (x)
2
//...
3
schalterstellung = 5;
4
SET_MUX(schalterstellung);
PORTC ist dann XXXX X101.

Und schau Dir mal den Artikel zum Thema Bitmanipulation an...

von Thommi (Gast)


Lesenswert?

mann das ging ja fix ! Danke erstmal an alle !

@Johannes:

So brauch ich das, die anderen Pins bleiben unberührt. Aber das ist doch 
nicht Bascom, oder?

Grüße
Thommi

von STK500-Besitzer (Gast)


Lesenswert?

>Ich programmiere in Bascom.

Das haben die meisten überlesen, oder?

von Thommi (Gast)


Lesenswert?

War das ironisch gemeint ??

Deine Lösung funzt nicht da dann der ganze Portc gesetzt wird. Alle 
anderen pins also auf 0. Da höngen aber schon andere Sachen dran die 
nicht verändert werden dürfen.

von holger (Gast)


Lesenswert?

@ Johannes

Hast recht PORTC zuerst lesen, nicht PINC.
Sonst haut es einem evtl. aktivierte Pullups weg ;)

von Falk B. (falk)


Lesenswert?

@ Thommi (Gast)

>So brauch ich das, die anderen Pins bleiben unberührt. Aber das ist doch
>nicht Bascom, oder?

Ich hab die BASCOM Syntax jettz nich parat, aber in etwa
so

byte tmp
byte kanal

tmp = PORTC
tmp = tmp and ~7
tmp = tmp or kanal
PORTC = tmp

MfG
Falk

von STK500-Besitzer (Gast)


Lesenswert?

Komisch, Falk, sowas hätte ich auch gerade vorschlagen wollen.
Ich habe gerade festgestellt, dass es im Bascom-Handbuch auch eine 
"Newbie problems"-Abteilung gibt - und es wird nicht mal auf dieses 
Forum verwiesen.

von Thommi (Gast)


Lesenswert?

Danke erstmal an alle !

Werd morgen weiterprobieren.

Grüße
Thommi

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.