Hola.. bueno, maneras de empezar pues puede haber muchas, pero sin duda considero que la mas fiable es conseguirte el pic, un programador, unas cuantas resistencias, leds, y sentarte frente al computador a programar...
Si tienes experiencia en algun lenguaje de programcion te va a ser muy facil programar pics, no por el ensamlador, sino por la metodologia y planeacion de los programas, el principal problema que he notado en algunos estudiantes es precisamente ese, no tienen ni idea de como plantear un procedimiento para resolver un determinado problema...
Puedes iniciar con algun diagrama de flujo de tu programa, del que deseas realizar, y poco a poco, mientras vas conociendo las instrucciones, podras programar lo que desees.
En la cuestiones de hardware, si es importante conocer el pic, pero no con tanta profundidad, como por ejemplo conocer el tipo de latches que tiene el puerto, o que transistores usa o esas cosas, en lo particular creo que lo que interesa al principio para ir desarrollando aplicaciones didacticas es conocer:
-- Las direcciones de memoria ram que puedes utilizar
-- Los registros de proposito general como el registro STATUS, INTCON, OPTION_REG, etc, dependiendo del pic que utilizes.
-- Como se cambia de banco de registros.
Lo bueno de los pics, sobretodo la familia PIC16 es el set de instrucciones RISC, son 35 instrucciones que son muy facil de memorizar.
Mira, en lo particular utilizo unicamente lenguaje ensamblador, porque con ste lenguaje mantienes un control total en el programa, mas que nada un control de tiempo, a veces es muy importante, a veces no es necesario. Pero podria ser buena idea que comienzes con este lenguaje haciendo programas sencillos como :
--prender y apagar un led cada cierto tiempo, 1 segundo digamos,
--realizar una secuencia de encendido de digamos unos 5 leds,
--prender y apagar un led con algun interruptor
--utilizar el timmer para encender un led cada cierto tiempo
--aprender a utilizar interrupciones , una por una.. etc...
Considero que si aprendes a utilizar el ensamblador, lograras un dominio o un gran conocimiento acerca de la arquitectura del pic que te sera facil utilizar cualquier PIC de cualquier familia, y tambien te facilitara la migracion a compiladores de alto nivel. Anque a veces causa conflictos ya que te acostumbras a una metodologia de programacion, pero hay aplicaciones donde debes aplicar tanto codigo en bajo nivel como de alto nivel, para secciones criticas en el tiempo y para acelerar el proceso de diseño, respectivamente...
En todo caso, este tema es mucho mas extenso, pero suerte y cualquier duda extra, con gusto se le responde colega...