Wo ist mein Fehler?
Wenn Du mit der Zeile

Portb = Pac

erreichen möchtest, dass die Variable Pac mit dem Eingangs-Wert gleichgesetzt wird (und davon gehe ich mal aus), stecken drei Fehlerchen drin:

1. Die Reihenfolge muss andersrum sein: Pac = PortB. Als erstes steht immer die Variable um die es geht, und als zweites der Wert, den diese Variable annehemen soll.
(Ganz analog zur deutschen Sprache: Fritz = doof weist einer bestimmten Person eine Eigenschaft zu, heißt aber mitnichten, dass alle doofen Menschen Fritz heißen )

2. Statt PortB musst Du PinB nehmen. Ist etwas verwirrend, aber zu jedem Ein-/Ausgangsbeinchen des Controllers gehören 3 Register:
-DDRX.Y legt fest, ob´s ein Ein- oder Ausgang sein soll
-PORTX.Y ist das bit, das ausgegeben wird, wenn der Anschluss als Ausgang konfiguriert ist
-PINX.Y enthält das bit, das an dem Anschluss anliegt, wenn er als Eingang konfiguriert ist. Eingänge also immer über das PIN-Register abfragen!!!

Um diese Verwirrung noch zu komplettieren: Auch wenn ein Anschluss als Eingang konfiguriert ist (DDRX.Y = 0), hat das dazugeörige PORT-Bit auch eine Bedeutung: Ist es 1, ist der interne PullUp-Widerstand aktiviert. Das ist wichtig, wenn der Eingang ansonsten "offen" ist.

3. Die somit korrigierte Zeile

Pac = PinB

gehört hinter das "do" - sonst wird sie genau ein einziges mal ausgeführt, und Änderungen an Deinem Eingang werden nicht mehr auf Pac übertragen.

Alles klar??