Hallo zusammen,
ich möchte einzelne Bits eines Ports setzen. Dafür ich folgendes Makro
definiert:
1 | #define BITNUM(adr, bit) ((unsigned)(&adr)*8+(bit))
|
Die Bits habe ich wie folgt definiert
1 | static bit MODE @ BITNUM(PORTA,1);
|
2 | static bit T_MODE @ BITNUM(TRISA,1);
|
3 | static bit RTB @ BITNUM(PORTA,2);
|
4 | static bit T_RTB @ BITNUM(TRISA,2);
|
5 | static bit CK @ BITNUM(PORTA,3);
|
6 | static bit T_CK @ BITNUM(TRISA,3);
|
dann setze ich die entsprechenden TRIS-Register für den Pic
1 | T_MODE = 0;
|
2 | T_RTB = 0;
|
3 | T_CK = 0;
|
und dann setze ich die Bits des Ports wie folgt:
1 | RTB = 1;
|
2 | MODE = 1;
|
3 | CK = 1;
|
Das Problem dabei ist, dass nur CK aktiv (High) ist. Wenn ich Mode und
Ck tausche ist "mode" high, und wenn ich RTB zu letzt setze, dann ist
RTB High.
Also immer das Bit ist high, was ich zuletzt auf "1" gesetzt habe...
warum?
Ich habe schon soooo viel versucht, und nichts hilft.
Gruß,
Tobias