Forum: Mikrocontroller und Digitale Elektronik PIC CCS C - Port Ausgang mit 8bit int setzen


von spark (Gast)


Lesenswert?

Hallo

Ich suche gerade nach einer Möglichkeit im CCS Compiler für den 
PIC184550 die PINs eines Portes direkt zu setzen. Also z.B.
1
PORTB = 11000000
wodurch RB0 und RB1 gesetzt sein sollten. Gibt es irgendeine Möglichkeit 
dies mit einer 8 bit (oder auch 16 bit falls die direction noch 
enthalten sein muss)?

Vielen Dank

von Carsten M. (ccp1con)


Lesenswert?

Wird dir nicht helfen aber:

PORTB = 0b11000000;

Das setzt RB7 und RB6 und der PIC heißt sicherlich 18F4550

von spark (Gast)


Lesenswert?

Ja, natürlich. Danke für die Korrektur.

von Lehrmann M. (ubimbo)


Lesenswert?

Noch ist nicht ganz klar was genau du erreichen möchtest. Wenn du 
einzelnen  Pins neue Werte zuweisen möchtest, ohne die anderen Pins mit 
zu beeinflussen verwendet man Bitmanipulation 
(http://www.mikrocontroller.net/articles/Bitmanipulation). Beispiele 
findest du im Artikel.

Manche Compiler bieten einen direkten Zugriff auf die Bits an. Beim 
Compiler MC18 (Compiler von Microchip) geht das beispielsweise so: 
LATAbits.LATA5 = 1;
Wie das bei deinem Compiler von geht steht in der Hilfe.

Zum Thema PORTx vs. LATx:
Ein weiterer wichtiger Punkt ist zu wissen, wann man mit PORT und wann 
mit LAT abeiten muss. Ganz kurz und knapp:

PORT Bei Eingängen (TRIS=1)
LAT Bei Ausgängen (TRIS=0)

Also: Wenn Sie den Zustand eines Eingang-Pins abfragen möchten, hierzu 
wäre das zugehörige TRIS-Bit auf 1, dann verwenden Sie PORT! Möchten Sie 
aber einen Ausgang setzten oder löschen, hierfür muss das TRIS-Bit 0 
sein, dann benutzen Sie die LAT Register!

von spark (Gast)


Lesenswert?

Danke für die Antwort. Ich frage mich ob es eine Möglichkeit gibt, einen 
ein-byte-code einem Port (bzw. Latch) zuzuweisen. Ich suche also nach 
dem richtigen Syntax für
1
LATB = 0b01011100;

von spark (Gast)


Lesenswert?

Ich habe rausgefunden, dass die Zeile
1
#byte LATB=getenv("SFR:LATB")
 notwendig ist. Dann wird fehlerfrei compiliert, jedoch hat es bei mir 
trotzdem nicht funktioniert.

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.