hola, no se nada de basic, pero por lo que pude ver el barrido lo haces por el puerto D no??, entonces recuerda que el barrido siempre debe ser fila por fila, una a la vez, y en tu codigo a veces prendes 2 bits al mismo tiempo y te saltas pasos
p. ejemplo
PORTD = 00010000 t saltas a PORTD = 01000000 y como te dije a veces prendes dos bits en un mismo instante,checalo