Hola Leonpic
Felicidades por el tutorial
. Hay unos detalles que quisiera comentarte...
Estos registros, tienen una ancho de bit de acuerdo al PIC, que hay de 8 bit, 16 bit y 32 bit. Excepto la palabra configuración y que la veremos mas adelante.
Los PIC16 siempre tienen registros de memoria de 8 bits. Los que tienen registros de 16 y 32 bits son pics de otras familias como la pic24 y pic32.
Ahora bien, si W es un registro, ¿dónde está ubicado, ya que en el mapa de memoria no lo encuentro?
Está en la pocición 00h y dice indirect addr. Esto es, porque el registro W, no es una pocición de memoria física. Hay otros registros que están igual. Pero no nos desbiemos, el registro W, es muy usado y recuerden, se utiliza para mover datos, o cargar datos en distintas pociociones de la RAM y EEPROM.
El registro W no está implementado en la memoria ram en la posición 0x00 ni en otra posición. W es un registro independiente que tiene un bus directo con la ALU (un camino privado). La ALU es la única entidad que puede leer o escribir este registro de trabajo.
El direccionamiento indirecto hace uso de los registros FSR e INDF. INDF es completamente ajeno a W. Un direccionamiento indirecto usa el registro FSR como apuntador al contenido de otros registros. Cualquier instrucción que hace uso de INDF (0x00) como dirección invoca un direccionamiento indirecto.
* Memoria de Programa
Es la ubicación física dónde se guarda el firmware que hemos creado, o sea, nuestro programa. Y tiene un ciclo de 1.000 de lectura y/o escrituras antes de estropearce y es del tipo FLASH (pero este es flaco Es un chiste).
El PIC16F877A tiene una capacidad de escritura de FLASH de 100,000 veces. No todos los PIC16 tienen memoria flash, hay que recordar a los viejitos PIC16C que tenían memoria EEPROM borrable con luz ultravioleta
o a los PICs que tienen memoria OTP (One time programmable) y solo se graban una vez.
El PIC 16F877, tiene una memoria de programa de 8Kb por un ancho de 14 Bits, o sea que cada pocición de memoria tiene 14 bit (B'11111111111111', o H'3FFF') Cada línea de instrucción ocupa una pocición en la memoria de programa, asi que, podemos poner hasta 8.000 instrucciones.
1k equivale en el ámbito de la computacion a 2^10 = 1024, por lo que 8k equivalen a 8192 instrucciones.
Seguiré leyendo con atención tu documento Leon.