martes, 21 de agosto de 2007

MEMORIA DE PROGRAMA, DE DATOS Y SFR

Hay que saber muchas cosas antes de programar el PIC, que caso tendria simplemente cargar y armar circuitos que otras personas hicieron. Que pasara cuando necesitemos que haga algo, que controle una parte de un proceso, modificar alguna caracteristica. Por ello vamos primero a entender como trabaja la memoria del PIC 16F877.

El Microcontrolador PIC 16F877 tiene tres memorias; la memoria de programa, la de datos y la ram.

Si recordamos como ya habiamos dicho la memoria de programa y la memoria de datos tienen diferentes buses, asi que cuando este ejecutando un programa a su vez tendra listo el dato para procesarlo.

MEMORIA DE PROGRAMA

En la figura siguiente se observan los tres bloques en los que esta dividido el Mapa de Memoria de programa del PIC, los 8 niveles de stack, los vectores de memoria como el Reset, o el de interrupcion,ademas de cada una de las paginas de la memoria, los vectores El que lleva el control de el uso de la memoria es el PC (Program Counter) de 13 bit capaz de accesar una memoria de 8Kx14 bit.




El Vector de interrupcion es el 0004H, ahi es la parte del programa a donde el micro ira despues de cualquier interrupcion.

MEMORIA DE DATOS.

La memoria de datos esta particionada en cuatro bancos numerados del 1 al 4 por supuesto,
cada banco tiene 128 bytes y las primeras direcciones del banco estan reservadas para los SFR
(Special Function Registers) como los puertos o los registros Tris de cada uno de ellos. Cada banco es seleccionable mediante el registro Status usando los bit 5 y 6. A su vez el registro
Status esta reflejado en cada uno de los bancos.

La memoria de datos del PIC 16F877 se muestra a continuacion, en la imagen se puede ver que ademas de los SFR, existe un area de propocito general donde podremos grabar datos que usaremos en el programa.



Es importante entender la diferencia y el concepto de cada memoria, la memoria dePrograma contiene todas las instrucciones a ejecutar como el movimiento de datos de un registro a otro, pero la memoria de datos es quien los contiene. Ademas de esto, en ella esta la informacion bit a bit de cada SFR.

Asi por ejemplo, en la memoria de programa podremos configurar el modulo Convertidor A-D, pero esta informacion se escribira en la memoria de datos.

REGISTROS DE FUNCIONES ESPECIALES (SFR)

En la memoria de datos esta la parte asignada a los SFR, cada registro tiene su propocito especifico, por ejemplo el registro ubicado en el Banco 0, con la direccion 06h, corresponde al Puerto B, y todo lo que escribamos o leeamos de ahi esta relacionado con ese puerto. De la misma manera el registro de la 86h del Banco 1 es el Tris B, y este sirve para configurar lo que queremos que haga el puerto B, si en el programa le escribimos un valor B'11110000', estamos diciendo que vamos a tener 4 salidas (0) y cuatro entradas (1) en ese puerto B.

LISTA DE SFR DEL PIC16F877 (Tomado del Data Sheet)

A continuacion se tiene la liste de los Registros de Funciones Especiales, en ella se puede ver el nombre del archivo, su direccion, nombre de cada bit ademas de el valor que tendria en un POR y BOR. Cada uno de estos registros sera comentado en el momento que sea necesario y aplicable.












3 comentarios:

peluqueria y otros dijo...

muy interresante...pero no me soluciona mi problema>>>Que hacer para poder instalar el sofware de kodak ..estoy consiente que un dia juge y talvez borre el sfr ...la question es como tenerlo en mi p.c.

Plutonn dijo...

Hola, super interesante, pero necesito una aclaración, mi caso es el siguiente, necesito grabar 9 byte, no quiero usar la EEDATA, por tanto, ¿puedo usar libremente , las direcciones de proposito general? ¿cualquier bloque?¿como se que no se pisaran con algo del programa?

Gracias

Enrique Reyes dijo...

Tengo un archivo d programa. Hex d 40kb, y quiero programarlo a un pic 16f877a y no se si es muy grande el archivo o hasta cuanto puede soportar el pic

Google