Lo hago simple porque para complejo luego podes hacerlo vos... Supongamos que tu robot tiene 4 funciones, la de avanzar 1 vuelta completa de rueda, retroceder una vuelta completa de rueda, girar a la izquierda 90 grados, girar a la derecha 90 grados.
Como observas la cantidad es "fija"... Todo tu programa, el de cargar las cosas al PIC, grbar la memoria, mover los motores, etc va a estar al comienzo de la memoria FLASH. Luego a partir de alguna posicion de memoria vamos a tener las acciones que vos prorgamaste. Lo que vos tenes que hacer es crear una tabla dentro del PIC. Supongamos:
ORG 0x500
TABLA_ACCIONES:
CALL AVANZAR
CALL AVANZAR
CALL GIRA_IZQ
CALL GIRA_IZQ
CALL FIN
Lo que tenes que lograr es intentar programar esos valores en la FLASH... esos valores van a depender de lo que vos quieras que haga el robot. Una ves que le das la orden, el robot ejecutara TABLA_ACCIONES, y cuando llegue a FIN podes preguntar si esto debe ocurrir una sola ves o volver a repetirse.
Esto si pensas hacerlo todo en el PIC.
Obviamente que podes recurrir a una EEPROM que tiene mas ciclos de lectura escritura... en ese caso vas a guardar por ejemplo estos valores:
0x00 para avance
0x01 para retroceso
0x02 para giro izq
0x03 para giro der
0xFF para FIN
entonces vas a leer la EEPROM y hacer uso de una tabla:
TABLA_ACCIONES:
ADDWF PCL, W
CALL AVANZAR
CALL RETROCEDER
CALL GIRO_DER
CALL GIRO_IZQ
Ahi tenes una idea de como implementarlo.... Obviamente la podes complicar un poco mas. Por ejemplo usar 2 bytes para cada acción, y que el primer byte te indique, la acción, algun modo/escala, y finalmente el tiempo realizando esa acción. Ej: Avanzar en función de: vueltas completas, grados, pasos.
Como te dijo Picuino esta es la parte mas sencilla de hacerlo. La mas complicada para mi va a ser el programa en la PC para cargarle eso al PIC, no me refiero a la conexión sino a la interfaz de usuario. Y si pensas hacerlo con el PIC y un LCD, entonces la interfaz de usuario en el LCD.