tu n'incrémente nulle part ta variable. Tu ne fait que la shifter avec un test de condition des plus étranges ... (elle va osciller entre 1, 2, 4 et 8 et repartir je dirais, si tu ne te trompe pas de sens).
Mais pour que ça marche, il faut que PORTB soit définit quelque part. Si tu n'a pas d'erreur à la compilation, je ne vois pas ce qui ne vas pas. Mais sinon, déclarer une variable extern en sufit pas, il faut qu'elle soit déclarer réellement quelque part. Par exemple, dans une bibliothèque que tu lie avec ton programme.