Hallo Stephan,
für die Abfrage eins Pins ist das von dir verwendete Verfahren ok aber da du ja eine genau Vorstellung hast wie der ganze Port ausschauen muss würde ich anders vorgehen.
Code:
    uint8_t Test=0, a=0;
    while(1)
    {
        Test=PINB; // Das Register in einer Variable speichern 
        Test &=0b00011110; //unwichtige Bits ausmaskieren
        
        switch(Test) //Switch case Abfrage
        {
            case 0b00010000: a=1;break;
            case 0b00001000: a=2;break;
            default: a=199; 
        } 
    }
Habs grade im Simulator ausprobiert geht 1A

Gruß Matthias