Na ja, wenn die Tasten doch auf Pin 0-3 sind, muß ">>4" entfallen, dafür wäre gut
bTmp = PINA & 0x0F; // nur das untere Nibble

sonst sieht das ok aus, (einen kp-taste() hast du zuviel)
ich persönlich würde halt auch einen "switch" machen, weil ich diese "else-Bäume" nicht so mag (Geschmackssache)
taste = kp_taste();
switch(taste)
{
case 'a': ..
break;
case 'b': ..
break;
default:
fehler
break;
}