Esto puedo intentar explicarlo bajo mi punto de vista y viéndolo desde lejos y a groso modo .
Los pic incorporan un microprocesador entre otras cosas que se le llama Unidad Centrar de Proceso CPU y no es nada mas que un monton de puertas entrelazadas para poder realizar operaciones matematicas y otras cosas (muy pocas cosas) sumar y restar , and , or , etc . (yo no me preocuparia de momento de como funciona internamente , aunque es interesante ).
¿ pero como es posible que estos bichos hagan estas cosas tan increibles si estan tan limitados en operaciones y no disponen de inteligencia ? .
Aqui es cuando entra el ser humano para ir combinando todas estas pequeñas posivilidades e ir formando una aplicacion .
La CPU por si sola no nos sirve para nada , así que necesita de mas hardware para poder hacer algo practico y util para nosotros.
Todo este hardware es paralelo a la CPU y son necesarias unas lineas para poder acceder a la direccion donde se encuentre dicho hardware (se llaman lineas de direcciones ) , por ejemplo el PortA se encuentra en la direccion 5 , asi que se lo indicaremos para poder acceder a el .
Con direccionarlo no nos sirve para mucho , así que lo ideal es poder leer y escrivir sobre el , para esto la CPU incorpora el (bus de dados 8 en este caso ) y finalmente el bus de (control) , que son otras lineas necesarias ( por ejemplo una de ellas seria si se lee o escribe sobre el dispositivo , CS para seleccionar un dispositivo ).
La CPU necesita de un medio de almacenamiento para ir leyendo las ordenes que nosotros queremos que realice y obrar en consecuencia , a esto se le llama juego de instrucciones y este medio puede ser RAM , ROM , EEPROM , FLASH etc . lo mas lojico es que sea de alguno de los tipos que no se borran al cortar la alimentacion , jejej. se llama memoria de programa .
Es aqui donde pondremos nuestro codigo y la CPU ira leyendo y ejecutando fielmente cada una de ellas al ridmo de un reloj .
Una memoria del tipo RAM para guardar valores temporales que se borraran al quitar la alimentacion .
Necesita de un hardware para entradas y salidas (creo que no hace falta comentar lo que es ) .
En el caso de los pics pueden incluir Timmers, usart etc. solo hay que direccionarlos y actuar sobre sus registros para configurarlos , leerlos etc .
Podeis ver la si arquiectura con mas detalle en los Datas.
En el caso de los 16Fxxx La CPU se situará en la dirección 0000 de la memoria de programa al resetearse y empezara a ejecutar lo que encuentre alli . Lo normal es saltar a una direccion superior ya que en al generarse una interrupcion la CPU emezara a ejecutar lo que encuentre en la posicion 4 y hay que dejarla libre .
por ejemplo , solo para que veais como nos podemos mober por la flash .
Codigo:
org 0x0003
nop
org 0x03FF
nop
end
si esto tal cual está se compila con Mpasm y abrimos Winpic800-IcProg seleccionando un 16f84 veremos un 0x0000 en la direccion 0x3 y en la direccion 0x3FF , que es el valor equivalente al nop (no operacion)
Espero haya aclarado alguna cosita aunque sea u poco .