Solo complementando pana electronando, mi consejo es que aprendas ensamblador , es lo primero que debes de tener en mente siempre ir a los basicos, ojo!! que la informacion de operacion viene en el datasheet de cada modelo de micro ,, es decir que el que seas experto en ensamblador no te va a ayudar si nunca te has leido una datasheet, puedes empezar con la basica que es del 16f628 y de ahi pasarte a un 16f88 y de ahi a un 18f4455 por ejemplo.... luego te daras cuenta del funcionamiento similar entre cada uno...
ES bueno que sepas los lenguajes completos ,,, si puedes aprende tambien ensamblador para x86, esto te dara un margen mas amplio de conocimiento y habilidad en programacion, .IGUAL para las herrmientas que son los compiladores(ya sea que uses c o basic) con el tiempo te daras cuenta que es mejor aprender BASIC y C completos antes de usar un compilador que use estos lenguajes. Si decides por c, hay un buen libro llamado The C Programming Language (ANSI C) B.W. Kernighan & D.M. Ritchie el cual te explica a detalle c ansi,.... con este de base, puedes entrarle de lleno a compilar en c y te va a sobrar poder aun para adentrarte a compialacion con mplab o hitech picc(sobre todo para modificar sus librerias), si decides ir por el camino del basic hay una CANTIDAD de libros inimaginables para aprender basic . Cuando me refiero en aprenderlos es por que te sera mas grato interactuar hardware con software y sin limitaciones... en el momento que creas o de plano no puedas hacer algo con una herramienta siempre tendras la otra opcion.. Claro que tambien puedes aprender solo LO NECESARIO para emplearlo en las herramientas(compiladores c o basic) pero es mucho mejor que seas buen conocedor del lenguaje ya que a mediano o largo plazo seras mas versatil en usar estas herramientas. Como toda herramienta(hablando especificamente de compiladores c o basic) debes tambien de leer el manual de dicha herramienta ya que difiere en poco o mucho de el lenguaje real al que se le adjudica dicha herramienta. y lo mas importante practicar, hacer las cosas de una, u otra forma y obteniendo resultados que a lo mejor son los mismos, pero en funcionalidad reflejan mayr o menor optimizidad, la sintaxis de todos los lenguajes es importante y debe de ir acompañada de un buen conocimiento del dispositivo a controlar. En pocas palabras si eres pesimo programador, aunque uses asm,basic,c o scripts tu micro funcionara pesimamente, igual si eres experto programador y no te lees su datashet para verificar su funcionamiento tendras problemas de sobrecargar un dispositivo,un mal uso, etc..
Solucion a todo esto? leeer todo lo que encuentres, aprender todo lo que puedas ya que no hay lenguaje magico y cada lenguaje tiene sus pros y contras y practicar programando , las guias (copiar un codigo) son buenas, pero hay muchos codigos que aun se pueden optimizar mas.. o se pueden hacer de una forma mas eficiente... en fin MANOS A LA OBRA y no pierdas tiempo buscando el COMPILADOR MAGICO, mejor aprovecha TODAS las herramientas que hay en la actualidad, pero siempre con buenos simientos de conocimientos BASICOS.
Salu2 pana