byte con stato dei pin input

.. allora non hai scelta ... devi leggerti i pin che ti interessano e metterli assieme in un solo byte (fai degli shift e delle OR)

Io seguirei il suggerimento di Guglielmo ..

byte portad = PORTD;           // legge i pin 2-7 (bit 2-7)
byte portab = PORTB;           // legge i pin 8-9 (bit 0-1)

portad = portad & B11111100;   // azzerra bit 0-1 non utilizzati
portab = portab & B00000011;   // azzerra bit 2-7 non utilizzati

byte porta = portad | portab;  // unisce le due porte

Nel codice finale puoi riunire la lettura e l'operazione di and "&" in una unica riga.
Rispetto alla serie di "if" ritengo che questo codice si più veloce.