Está en la página 1de 6

1

2
El PIC16F887 tiene tres tipos de memoria: ROM, RAM y EEPROM
La memoria ROM se utiliza para guardar permanente el programa que se está
ejecutando. Es la razón por la que es frecuentemente llamada “memoria de
programa”.
Similar a la memoria de programa, el contenido de memoria EEPROM está
permanentemente guardado al apagar la fuente de alimentación. Sin embargo,
a diferencia de la ROM, el contenido de la EEPROM se puede cambiar durante
el funcionamiento del microcontrolador.
RAM son registros de propósito general y en los registros de funciones
especiales (SFR). Todos estos registros se dividen en cuatro bancos de
memoria 

3
El PIC16F887 tiene 8Kb de memoria ROM (en total 8192 localidades)

4
• Memoria de programa En sus 8192 posiciones (8Kx14bits) contiene el
programa con las instrucciones que gobiernan la aplicación. Es del tipo no
volátil.
• Memoria EEPROM de datos Es una pequeña área de memoria de datos de
lectura y escritura no volátil que permite garantizar que determinada
información estará siempre disponible al reinicializarse el programa. Se
gestiona de manera distinta a la memoria de datos RAM.

5
proporciona una resolución de 10 bits  (entiéndase por resolución el intervalo
de valores diferentes en el cual puede ser mostrado por el micro
controlador)con esos 10 bits tenemos exactamente 1024 valores diferentes los
cuales pueden ser leídos por el micro controlador
6
• Registros de funciones especiales (SFR, Special Function Registers)
– Controlan la operación de la CPU y los periféricos.
– Se implementan como RAM estática – Se inicializan a un valor por defecto
después de la alimentación del µC.
• Registros de propósito general (GPR, General Purpose Registers)
– Almacenamiento de datos.
– No se inicializan a un valor por defecto después de la alimentación

7
Memoria de programa (FLASH)
Es una memoria de 8K de capacidad  con posiciones de 14 bits. En ella se
graba o almacena el programa o códigos que el microcontrolador debe
ejecutar.

La memoria está dividida en cuatro páginas de 2K cada una. La Página 0


va de la posición de memoria 0005h a la 07FFh, la Página 1 de 0800h a
0FFFh, la Página 2 de 1000h a 17FFh y la Página 3 de 1800h a 1FFFh.
▪ El contador de programa (en este caso es de 13 bits) nos indica la
dirección de la instrucción a ejecutar.
▪ Pila (Stack): son registros que no forman parte de ningún banco de
memoria (los bancos de memoria los explico más abajo) y no
permiten el acceso por parte del usuario. Se usan para guardar el
valor del contador de programa cuandose hace un llamado a una
subrutina o a una interrupción. Cuando el micro vuelva a ejecutar
su tarea normalmente, el contador de programa recupera su valor
leyéndolo en la pila. Al tener una pila de 8 niveles, se pueden
acumular 8 llamadas a subrutinas sin tener problemas.
▪ Vector de RESET: cuando se resetea el microcontrolador el
contador de programa se pone a cero (0000h). Por esto, en la
primera dirección del programa se debe escribir todo lo relacionado
con la iniciación del mismo.
▪ Vector de Interrupción: cuando el microcontrolador recibe una
llamada a una interrupción, el contador de programa apunta a la
dirección 04H de la memoria de programa, por eso allí se debe
escribir toda la información necesaria para atender dicha
interrupción.
MEMORIA DE REGISTRO
Memoria SRAM (Static Random Access Memory): es una memoria de tipo
volátil (cuando deja de recibir alimentación se borran los datos que tenga
almacenados) que está dividida en 4 bancos de 128 bytes cada uno.
Memoria EEPROM: es una memoria no volátil (guarda los datos aunque le
falte alimentación) con una capacidad de 256 bytes, que permite realizar
operaciones de lectura y escritura sin interferir con el funcionamiento
normal del microcontrolador.

8
El vector de restablecimiento es la localización por defecto que una unidad
central de procesamiento va a encontrar para encontrar la
primera instrucción que ejecutará después de un restablecimiento . El vector de
restablecimiento es un puntero o dirección , donde la CPU siempre debe
comenzar tan pronto como sea capaz de ejecutar instrucciones. La dirección
está en una sección de memoria no volátil inicializada para contener
instrucciones para iniciar el funcionamiento de la CPU, como primer paso en el
proceso de arranque del sistema que contiene la CPU

9
Suministro eléctrico Circuito de RESET Oscilador

10
las directivas son comandos destinados a ser interpretados por el compilador,
no por el microcontrolador. Dentro del término genérico de directiva se
incluyen, además de estos comandos, unas variables que contienen
información sobre el proceso de compilación. Estas variables son lo que se
denominan identificadores predefinidos del compilador:

11
Datos tipo Char 8bits 0-255
Datos tipo int 8bits 0-255
Datos tipo float 32bits
Datos tipo int1 1 bit 0-1

12
TIPO Nombre de la variable [= valor inicial];
ejemplos FLOAT velocidad = 10;
INT1 pulsador = false;

13
La única diferencia entre una variable local y una global es su ámbito de
acción.
● Variable local: es aquella que sólo es utilizable dentro del código de la
función.
● Variable global: es aquella cuyo ámbito es todo el programa, incluso
dentro de una función.
Una variable global se define fuera del cuerpo de cualquier función,
normalmente al principio del programa, después de la definición de los
archivos de biblioteca (#include), de la definición de constantes
simbólicas y antes de cualquier función.
Una variable local se restringe a la función que la ha declarado se dice
entonces que la variable es local a esa función. Esto implica que esa
variable sólo va a poder ser manipulada en dicha sección, y no se podrá
hacer referencia fuera de dicha sección.

14
Suma + Resta - Multiplicación * División / Módulo % Incremento ++
Decremento --

15
se utilizan en comparaciones con el propósito de comparar dos valores, si una
expresión es evaluada como falsa (false), el operador devuelve 0, mientras que
si una oración es evaluada como verdadera (true), devuelve1

b>
> mayor que si b es mayor que a
a

a
mayor o igual si a es mayor o igual
>= >=
que que 5
5

a<
< menor que si a es menor que b
b

a
menor o igual si a es menor o igual
<= <=
que que b
b
16
IF-ELSE Evalúa la condición verdadera y falsa de una expresión, primero se
evalúa una expresión; si se cumple (es cierta) se ejecuta un bloque de
sentencias y si es falsa se ejecuta otro bloque.

17
Habrá ocasiones en las que nos interesa ejecutar instrucciones un número
específico de veces, en lugar de probar una condición. Este es el caso en que
usaremos un ciclo For o sea es como hacer un parametro numerico.

Un ciclo While se parece mucho a un ciclo Repeat con una diferencia


importante, en un ciclo While la condición se prueba al principio.

18
Se utilizan generalmente cuando no sabemos cuantas veces se habrá de
ejecutar el bucle, igual que el bucle WHILE, con la diferencia de que sabemos
seguro que el bucle por lo menos se ejecutará una vez.

19
El switch es diferente que el else if en que se concentra en casos no en
condiciones, el switch evalúa solamente valores mientras que el else if evalúa
condiciones

20
las directivas se reconocen fácilmente porque comienzan por el símbolo #

21
la directiva que permite incluir un fichero dentro de la compilación es #include
“filename”

22
35 pines de entrada/salida de 8 bits cada uno

23
Se realizan a través del registro TRIS y está ubicado en el banco 1

24
STANDARD_IO (Puerto) // Esta función afecta directamente al registro de
puertos TRISx y además se asegura que cada vez que se utilice un pin del
puerto sea configurado como I/O creando el código necesario. Esta es la
directiva por defecto.
#USE FAST_IO (Puerto) // Esta directiva se utiliza al principio del programa, en
la parte de configuración de PIC, y su uso nos obliga a utilizar la siguiente
directiva.
25
Las resistencias pull up tienen la misión de que las entradas lógicas del sistema
se mantengan en los niveles correctos en caso de que otros dispositivos o
circuitos se conecten o desconecten del sistema. Las resistencias pull-up
establecen la tensión en un nivel alto hasta una tensión precalculada. La
función principal de una resistencia pull-up es evitar que una corriente excesiva
fluya a través del circuito cuando necesitamos un nivel lógico bajo, se
encuentran en el puerto B
26
El vector de RESET está siempre en la posición 0000h de la memoria de
programa.
El vector de INTERRUPCIÓN está siempre en la posición 0004h de la memoria
de programa

27
Los registros ANSEL y ANSELH se utilizan para configurar el modo de entrada
de un pin de E/S como analógico o como digital.

28
habilitar/deshabilitar individualmente el pull-up de cada pin con el registro WPUB

Si utiliza resistencias o botones de presión como una fuente de señal de


en trada, conéctelos a los pines del puerto PORTB, ya que tienen las
resistencias pull-up. El uso de estos registros está habilitado por el bit
RBPU del registro OPTION_REG, mientras que la instalación de las
resistencias individuales está habilitada por los bits del registro WPUB.
29
Módulo USART mejorado

Soporta las comunicaciones seriales RS-485, RS-232 y LIN2.0


Auto detección de baudios

Puerto Serie Síncrono Maestro (MSSP)

Soporta los modos SPI e I2C

30

Rango de frecuencia de 8MHz a 31KHz seleccionado por software Frecuencia


de operación 0-20 MHz

31

El modo de comparación compara constantemente valores de dos registros.


Uno de ellos es el registro del temporizador Timer1. Este circuito también le
permite al usuario activar un evento externo después de que haya expirado una
cantidad de tiempo predeterminada.

También podría gustarte