Hallo zusammen.
Ich programmiere seit einer gewissen Zeit C für PICs. Jetzt hab ich an
einem "Problem", wozu ich eine Frage hätte. Und zwar hab ich einen PIC,
der 21 IOs hat (18F2550). Der PORTA hat 6 bit, PORTB hat 8bit und PORTC
hat 7 bit. Ich bekomme über I²C eine 8bit-Zahl, die ich dann Ausgeben
möchte. Idealerweise hätte ich die Zahl genommen und direkt auf PORTB
geschrieben. Doch da 2 bits vom PORTB für das I²C-Modul gebraucht werden
(RB0&RB1), habe ich somit keinen freien 8-bit-PORT. Jetzt hab ich mir
überlegt, ich nehme RC6 statt RB0 und RC7 statt RB1, dann RB2-RB7 für
den Rest. Wenn ich jetzt aber die 8bit Zahl in einem Buffer habe, müsste
ich die ersten beiden Maskieren, verschieben und nach PORTC schreiben
und dann nochmal die Zahl zu PORTB schreiben.
Da kam mir folgender gedanke: Kann man einer char-Variablen Ausgänge
zuweisen? So dass ich zum Beispiel die Zahl in die Variable
"port_ersatz" schreibe und der Compiler dann weiß, welche Pins/IOs er
setzen bzw. löschen muss?
Zum Beispiel:
1 | char port_ersatz;
|
2 | // definiere port_ersatz.0 als PORTC.6
|
3 | // definiere port_ersatz.1 als PORTC.7
|
4 | // definiere port_ersatz.2 als PORTB.2
|
5 | // definiere port_ersatz.3 als PORTB.3
|
6 | // definiere port_ersatz.4 als PORTB.4
|
7 | // definiere port_ersatz.5 als PORTB.5
|
8 | // definiere port_ersatz.6 als PORTB.6
|
9 | // definiere port_ersatz.7 als PORTB.7
|
10 |
|
11 | port_ersatz = 0xAA;
|
Ich hoffe es ist klar geworden, was ich meine.