Port-Bits zusammenfassen und dezimal ansprechen

Gast #759376
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
#759387
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...
Gast #759406
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.
#759414
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
Gast #759419
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren