Hola Miguel, no tengo la hoja de datos a mano (escribo desde el móvil), así que no me voy a meter si has configurado bien los pines.
Pero por ejemplo, primero (supongo que el pulsador tiene lógica positiva) el programa comienza, y estara poniendo el LATA3 a 0 constantemente hasta que se pulse el pulsador.
Este método no evita los rebotes por lo tanto, la pulsación deberá de durar menos de 5 segundos o volverá a entrar.
Cuando pulsas, se hace la espera, y se pone LATA3 a 1, lo malo es que inmediatamente después se pondrá a 0 al salir del bucle while y el robot se parara tan pronto como empiece a moverse. Por lo tanto te recomiendo el uso de banderas, para ir marcando cuando empieza a escanear, cuando termina etc.
Delay10KTCYx(226);
Esta instrucción no la había visto nunca, pero supongo que tu la conoces y la has calculado bien, pero veo mas intuitiva delay_ms().
Te recomiendo también meter la variable i dentro del main si no la vas a usar en otros ficheros.
Y que hagas un define para el pin RA2, le puedes llamar "pulsador" por ejemplo, luego s mas fácil para leer el código, por ejemplo el while seria:
while(!pulsador)
Estas últimas cosas solo son consejos pero que son de buena práctica.
Pero el problema del LATA3 debes arreglarlo.
Un saludo.