Hallo zusammen,
Folgende code-Zeilen machen nicht das wass sie sollen:
1 | void sendToDataPort(unsigned char DATA){
|
2 | sLCD_D0 = DATA &(1 << 0);
|
3 | sLCD_D1 = DATA &(1 << 1);
|
4 | sLCD_D2 = DATA &(1 << 2);
|
5 | sLCD_D3 = DATA &(1 << 3);
|
6 | return;
|
7 | }
|
Hinter sLCD_Dx steht:
1 | #define sLCD_D0 LATBbits.LATB0
|
2 | #define sLCD_D1 LATBbits.LATB3
|
3 | #define sLCD_D2 LATBbits.LATB4
|
4 | #define sLCD_D3 LATBbits.LATB5
|
Aufgerufen wird diese Funktion z.B. mit:
Die Erste Ausgabe an sLCD_D0,
funktioniert in Abhängigkeit von DATA. Alle andern nicht.
Im Simmulator landen die Bit's ebenfalls nicht im LATB Register.
Getestet habe ich bereits alle Einzelkomponenten des Ausdrucks:
1 | sLCD_D1 = 1; // <- Funktioniert
|
2 |
|
3 | unsigned char test;
|
4 | test = DATA &(1 << 1); // <- Funktioniert ebenfalls
|
1 | sLCD_D1 = DATA &(1 << 1); // <- Funktioniert nicht
|
Seht Ihr den Fehler, ich bin ratlos.
Danke,
Gruss Richard