Hallo allerseits, ich programmiere gelegentlich PIC18 mit dem XC8 Compiler. Es kommt bei mir häufiger vor, dass ich gerne Verweise auf Pins in eine Variable schreiben will. Ein Beispiel: Wenn ich 5 LEDs an den Ausgängen (LATA0-LATA4) angeschlossen habe, würde ich mir gerne ein struct definieren, das mir einen Ausgang verwaltet. Dann instanziere ich fünfmal das struct und würde nun gerne 'meineLed.Ausgang=LATA3' usw. konfigurieren. Wenn ich mir die Definition von LATAx anschaue, sehe ich dass es vom Typ __bit ist, den ich aber nicht in structs verwenden kann (must be global or static). Kann man das irgendwie lösen? Oder bin ich nur verblendet und alles ganz einfach? Meine C Kenntnisse gehen nicht so weit, dass ich die Definitionen in xc.h bis ins letzte Glied verstehe. Am besten wäre, wenn man sich nicht auf ein LATCH A,B,C festlegen müsste. Denn bisher gebe ich die Bitnummer an und das LATCH ist codiert. Viele Grüße
Geht meines Wissens nicht/nicht sinnvoll mit struct.
1 | // im Header
|
2 | #define on 1
|
3 | #define off 0
|
4 | #define meine_LED1 LATDbits.LATD7
|
5 | #define meine_LED2 LATDbits.LATD8
|
6 | |
7 | // im Programm
|
8 | meine_LED1 = on; |
Oder
1 | #define toggle_meine_LED1 asm volatile("BTG LATD, #7");
|
2 | #define meine_LED1_ON asm volatile("BSET LATD, #7");
|
3 | #define meine_LED1_OFF asm volatile("BCLR LATD, #7");
|
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.