Jag har inget specifikt problem, utan är bara rent nyfiken på en grejj i syfte att få lite inspiration och kunskap.

Låt säga att man inte har tänkt till när man bestämde vart de olika in/utgångarna på en PIC ska anslutas till, så att det har "blivit" såhär:
PORTB.0 = utgång.
PORTB.1 = ingång.
PORTB.2 = utgång.
PORTB.3 = utgång.
och sedan PORTB.4 - PORTB.7 som ingångar.
Om jag inte förstått fel så går det inte att göra såhär:
Kod: Markera allt
#define UTDATA, 0 PORTB, 0
#define INDATA, 0 PORTB, 1
#define UTDATA, 1 PORTB, 2
#define UTDATA, 2 PORTB, 3
osv...
Men om man nu har tänkt till lite och placerat in/utgångarna på ett sätt som gör #define-delen lite vettigare. T.ex såhär:
PORTB.0 = utgång.
PORTB.1 = utgång.
PORTB.2 = utgång.
och PORTB.3 - PORTB.7 som ingångar.
Då blir #define-delen smidigare:
Kod: Markera allt
#define UTDATA PORTB
men vad händer här:
#define INDATA_A PORTB, 3
#define INDATA_B PORTB, 4
#define INDATA_C PORTB, 5
osv...
. . .
movlw b'11111000'
movwf TRISB
. . .
och låt säga:
movlw h'FF'
movwf UTDATA
Jag tycker det ser lite rörigt ut att UTDATA verkar vara definierat till hela PORTB vid en första anblick.
De två sista raderna skriver ju i själva verket inte 11111111 utan snarare xxxxx111 till PORTB.
Nu var h'FF' bara ett exempel. I en "riktig" kod hade det varit mer överskådligt att skriva h'07' (eller b'00000111') istället.
Nu har jag som sagt ingen specifik fråga. Jag är bara lite nyfiken på om man helt enkelt brukar/bör göra såhär när en port är uppdelad till in/utgångar som går till olika delar i en krets. (T.ex LCD-display och ett gäng knappar, för att ta ett vanligt fall.)