Você está na página 1de 14

SECRETARÍA DE EDUCACIÓN PÚBLICA

INSTITUTO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO DE DURANGO

DEPARTAMENTO METAL-MECANICA

“Arquitectura de un
Microcontrolador”
Catedrático:
Ing. Esparza Ávila Miguel Ángel

Presenta:
Noriega Morales Elsy Maely

Número de control:
16040362

Victoria de Durango Marzo del 2019


Contenido
Arquitectura de un Microprocesador ....................................................................................................... 3
Arquitectura del Microcontrolador PIC16F887 ...................................................................................... 5
Diferencias entre un Microprocesador y un Microcontrolador ............................................................... 8
Interrupciones ................................................................................................................................................ 8
Interrupción de un Microcontrolador PIC16F887 ................................................................................ 11
Referencias ................................................................................................................................................... 13
Arquitectura de un Microprocesador

ALU A

BUS DE DATOS
DIRECCIONES

C
BUS DE

IP

FLAGS

CONTADOR DE PILA

RD
WR
TEMPORIZACIÓN Y CONTROL Reset

Xtal V+ GND
V-

FLAGS (REGISTRO DE BANDERAS)

Indica la condición del microprocesador y controla su operación. Algunos de estos


son:

CF (carry flag): indica cuando se realiza una suma binaria y el resultado posee un
bit de acarreo.
PF (parity flag): indica cuando el resultado tiene un numero par de 1´s binarios.
ZF (zero flag): indica cuando el resultado de una operación es igual cero.
ALU (ARITMETIC LOGIC UNITY)

Unidad Lógica Aritmética


Esta es la encargada de realizar las operaciones dentro del microprocesador, posee
una entrada de control con la que se puede seleccionar cualquiera de las siguientes
operaciones; Suma, resta, AND, OR y NOT. Por medio de estas operaciones realiza
cualquier tarea.

BUS DE DATOS
Transfiere la información entre el microprocesador y su espacio de direccionamiento
de memoria y los dispositivos de Entrada y Salida.

La característica de este bus es que es bidireccional, puede llevar información del


microprocesador a la memoria, o viceversa.

BUS DE DIRECCIONES
El bus de direcciones consiste en el conjunto de líneas eléctricas necesarias para
establecer una dirección. La capacidad de la memoria que se puede direccionar
depende de la cantidad de bits que conforman el bus de direcciones, lo cual se
establece elevando 2 al número de terminales que este posea

Solicita a la memoria una localidad de memoria, o a los dispositivos de


Entrada/Salida una localidad de Entrada/Salida.

A (ACUMULADOR)
Este Registro retiene el resultado temporal después de una operación aritmética.

Por ejemplo, si la ALU realizara la suma de los registros A y B el resultado de esta


suma se almacenaría en el registro A remplazando el contenido que tenía
anteriormente.

B (BASE)
Conocido como el registro base ya que es el único registro de propósitos generales
que pueden ser unos índices para direccionamiento indexado.

También es común emplear al B para cálculos.

C (CONTADOR)
Puede contener un valor para controlar el número de veces que un ciclo de
instrucciones se repite. También puede ser utilizado para cálculos.

D (DATOS)
Algunas operaciones de entrada/salida requieren su uso, y las operaciones de
multiplicación y división con cifras grandes suponen al D y al A trabajando juntos.
Puede usar los registros de propósitos para suma y resta de cifras de 8, 16, 32 bits.
IP (REGISTRO APUNTADOR DE INSTRUCCIONES)
El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de
dirección de la siguiente instrucción que se ejecuta.

El registro IP está asociado con el registro CS en el sentido de que el IP indica la


instrucción actual dentro del segmento de código que se está ejecutando
actualmente.

El CS define la dirección inicial de la sección de memoria que contiene el código.

SP (APUNTADOR DE PILA)
Direcciona un área de memoria llamada Pila (stack), la pila almacena datos por
medio de este apuntador.

CONTADOR DE PILA
Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo
de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en
entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en
multitud de ocasiones en informática debido a su simplicidad y ordenación.

Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push),
que coloca un objeto en la pila, y su operación inversa, retirar (o des apilar, pop),
que retira el último elemento apilado.

Arquitectura del Microcontrolador PIC16F887

ENT/SAL ENT/SAL
DIGITALES ANALÓGICAS

TEMPORIZADOR/
CONTADOR
GENERADOR DE TIEMPOS
Se encarga de la señal de reloj principal, que marca la pauta de tiempo con la que
se sincronizan todos los elementos internos del microcontrolador. Basta conectar
un sencillo cristal o un circuito resonador de cuarzo entre las patillas OSC1/CLIN y
OSC2/CLKOUT para genera la frecuencia de trabajo.
OSCILADOR INTERNO
Los PIC16F88X disponen de un oscilador interno capaz de generarla frecuencia de
trabajo de un rango seleccionable que va desde 32KHz hasta 8 MHz. Se evita así
el empleo de un cristal de cuarzo externo y las patillas donde se hubiera conectado,
se pueden emplear como señales de E/S.

CONTADOR DE PROGRAMA (PC)


Se emplea para direccionar la memoria de programa . Inicialmente parte de 0 y se
incrementa secuencialmente para apuntar en todo momento a la siguiente
instrucción que se va a ejecutar. Consta de 13 bits que se permiten seleccionar
cualquiera de las 8.192 posiciones de la memoria Flash (213).

MEMORIA DE STACK
Esta memoria está asociada al PC y
tiene 8 niveles y se emplea ocasionalmente para salvaguardar
y recuperar su valor actual.

REGISTRO DE INSTRUCCIONES
Se encarga de recibir y retener en el bus de instrucciones el código de la instrucción
que hay que ejecutar. Toda instrucción está compuesta por 14 bits y procede de la
memoria Flash de programa concretamente de la dirección que en ese momento
esté indicado en el PC.

DECODIFICADOR DE INSTRUCCIONES
Recibe el código de la instrucción, lo decodifica y actúa sobre todos los elementos
que estén involucrados en la ejecución.

ALU (UNIDAD ARITMÉTICO LÓGICA)


Se encarga de realizar todas las operaciones aritméticas y lógicas (suma, resta,
AND, OR, etc..) según le indique el decodificador de instrucciones que recibió el
código de la instrucción. La ALU siempre recibe dos operandos o datos. Uno de
ellos se encuentra siempre en el registro llamado W, el otro puede proceder de la
propia instrucción que se está ejecutando o, a través del bus de datos, de una
posición RAM o de un determinado periférico. El resultado se puede depositar en el
registro W o en la misma posición RAM o periférico que se utilizó como operando.

REGISTRO W
Tambien llamado “Work register” participa prácticamente en todas las operaciones
que se ejecutan en la ALU, contiene uno de los datos y puede recibir también el
resultado.

REGISTRO DE STATUS
Refleja el estado del núcleo tras la última instrucción. Por ejemplo, tras una
operación de resta nos puede interesar no solo el resultado en sí, sino también si
hubo o no llevada, si el resultado ha sido positivo o negativo, etc.
REGISTRO FSR
Se emplea en el direccionamiento indirecto. Su contenido representa la dirección de
memoria RAM de datos a la que se desea acceder. Esta dirección de acceso
también puede ir indicada, de forma directa, en el propio código de la instrucción
que se está ejecutando representa la dirección de memoria RAM de datos a la que
se desea acceder. Esta dirección de acceso también puede ir indicada, de forma
directa, en el propio código de la instrucción que se está ejecutando.

Diferencias entre un Microprocesador y un Microcontrolador

Microprocesador Microcontrolador

Ademas de la CPU,
Es una Unidad Central contiene: RAM, ROM,
interfaz serial, interfaz
de Procesamiento
paralela, manejo de
(CPU) en un circuito interrupciones,
integrado. temporizadores, etc. Todo
en un circuito integrado.

Se encuentran en
sistemas con
procesamiendo
Desempeñan actividades
intensivo, como orientadas a control.
consolas de juegos
oequipo de video de
alta definicion.

Sistemas con un proceso


Generalmente están en
único o tarea principal
sistemas multitareas. bajo ejecución.

Permite un gran ahorro de


El tiempo de desarrollo instrucciones ya que el
de su proyecto resultado de cualquier
electrónico es mayor. instrucción que opere con
la memoria.

Interrupciones
Las interrupciones, como el nombre lo sugieren, son eventos que hacen que el
microcontrolador PIC deje de realizar lo que está haciendo y pase a ejecutar otra
tarea. Al finalizar retorna a su actividad anterior.
El microcontrolador PIC16F88 tiene hasta 12 fuentes de interrupciones, el
microcontrolador PIC16F628A tiene 10 y el microcontrolador PIC16F877A tiene 15.

El registro INTCON contiene las banderas de interrupciones generadas por


diferentes eventos. También contiene los bits de habilitación global y particular de
las distintas fuentes de interrupciones (observar las diferencias en algunos bits de
este registro a lo largo de los siguientes temas).

Las banderas de interrupciones se activan independientemente del estado de sus


bits de habilitación o del bit de habilitación global GIE.
El bit GIE del registro INTCON permite habilitar o deshabilitar la generación de
interrupciones. Cuando están habilitadas (GIE=1) y el bit de habilitación particular y
la bandera correspondiente se activan, se produce un salto al vector de interrupción
(dirección 0x0004). Las interrupciones individuales pueden
habilitarse/deshabilitarse a través de sus bits de habilitación en diferentes registros.
El bit GIE se borra al producirse un reset, por lo tanto, la generación de
interrupciones está deshabilitada normalmente.
La instrucción RETFIE se emplea para salir de la rutina de servicio a la interrupción
(ISR), así como rehabilitar la generación de interrupciones.
Las banderas de las interrupciones INT, RB y del Timer0 se encuentran en el
registro INTCON. Las banderas de interrupción de los periféricos están contenidas
en los registros PIR1 y PIR2 (microcontrolador PIC16F877A), mientras que los bits
de habilitación correspondientes se encuentran en los registros PIE1 y PIE2
(16F877A). El bit de habilitación de interrupciones de periféricos (PEIE) está en el
registro INTCON.

Cuando se brinda atención a una interrupción, el bit GIE es borrado para deshabilitar
cualquier interrupción adicional, la dirección de retorno es guardada (pushed) en la
pila (stack) y el contador de programa (PC) es cargado con el valor 0x0004. Una
vez dentro de la ISR, la fuente de la interrupción se puede determinar analizando
las banderas de interrupción. Las banderas tienen que ser borradas por software
antes de rehabilitar las interrupciones, para evitar interrupciones repetitivas.
Las interrupciones externas INT o RB4 RB7 pueden generarse cada cierto tiempo
como mínimo, que va desde los tres a cuatro ciclos de instrucción, esto depende
del instante en que se genera la interrupción. Las banderas de interrupción se
activan independientemente del bit de habilitación particular, del bit PEIE o del bit
GIE.

La interrupción externa en el pin RB0/INT se activa por flanco ascendente o


descendente, dependiendo del bit INTEDG del registro OPTION_REG. Cuando
aparece una transición válida en el pin RB0/INT, la bandera INT0IF del registro
INTCON toma un valor de 1. Esta interrupción puede ser habilitada/deshabilitada
con el bit INT0IE del registro INTCON. La bandera INT0IF tiene que ser borrada por
software dentro de la ISR antes de rehabilitar esta interrupción. La interrupción INT
puede despertar al PIC, si el bit INT0IE se programó en 1 antes de ingresar al modo
Sleep. El estado del bit GIE determina si se produce o no el salto al vector de
interrupción después del despertar.

En cambio de estado en cualquiera de los pines RB<7:4> genera una interrupción


y hace que la bandera RBIF del registro INTCON tome un valor de 1. Esta
interrupción puede habilitarse/deshabilitarse con el bit RBIE del registro INTCON.
Únicamente los pines configurados como entradas pueden producir esta
interrupción. Los pines de entrada RB<7:4> se comparan con el estado anterior que
tenían en la última lectura del puerto B. Si no hay coincidencia en todos los pines,
se genera la interrupción.
Esta interrupción puede despertar al microcontrolador PIC. El usuario, dentro de la
ISR, puede borrar la bandera de interrupción con cualquiera de los métodos
siguientes:
Lectura o escritura del registro PORTB. Esto concluye la condición de falta de
coincidencia.
Borrar la bandera RBIF.
Esta interrupción se recomienda para despertar al PIC en caso de presionar una
tecla o en el caso de que el puerto B se emplee únicamente para la interrupción
RB4 RB7. La lectura continua (Polling) del puerto B no se recomienda mientras se
usa la función de interrupción RB.
Interrupciones no Interrupciones
enmascarables son enmascarables se
aquellas que deberán ejecutan a solicitud del
ejecutarse periférico
obligatoriamente correspondiente siempre
sintener que esperar, que en el registro de
están ligados a tareas en status (FLAGS REGISTER)
el sistema que no se del procesador las
pueden retrasar como interrupciones estén
son las rutinasde bajada habilitadas. En el caso de
del sistema por corte de no estarlo la solicitud
energía, chequeo de la será ignorada y la CPU
integridad de memoria, continuará con lo que
etc. estaba realizando.

Interrupción de un Microcontrolador PIC16F887


Al aparecer una petición de interrupción lo primero que hace el microcontrolador es
ejecutar la instrucción actual después de que se detiene el proceso de ejecución de
programa. Como resultado, la dirección de memoria de programa actual se apila
automáticamente y la dirección por defecto (predefinida por el fabricante) se escribe
en el contador de programa. La localidad en la que el programa continúa con la
ejecución se le denomina vector de interrupción.

En el caso del microcontrolador PIC16F887 esta dirección es 0x0004h. Como se


muestra en la siguiente figura la localidad que contiene el vector de interrupción se
omite durante la ejecución de programa regular. Una parte de programa que se
ejecutará al hacer una petición de interrupción se le denomina rutina de interrupción.

Su primera instrucción se encuentra en el vector de interrupción. Cuánto tiempo


tardará en ejecutar esta subrutina y cómo será depende de la destreza del
programador, así como de la fuente de interrupción. Algunos microcontroladores
tienen más de un vector de interrupción (cada petición de interrupción tiene su
vector), pero en este caso sólo hay uno. En consecuencia, la primera parte da la
rutina de interrupción consiste en detectar la fuente de interrupción. Por fin, al
reconocer la fuente de interrupción y al terminar de ejecutar la rutina de interrupción
el microcontrolador alcanza la instrucción retfie, toma la dirección de la pila y
continúa con la ejecución de programa desde donde se interrumpió.

Cuando se produce una petición de interrupción ocurre lo


siguiente:
 Se termina de ejecutar la instrucción en curso
 Si el bit GIE=1 se atiende la interrupción
 Se deposita el contenido del PC en la Pila
 Se prohíben nuevas interrupciones poniendo el bit GIE=0
 El PC= 0004h (Vector de interrupciones)

Que debe hacer el programa de atención a la


interrupción:
 Guardar el contenido de los registros que va a utilizar esta rutina.
 Se determina la causa de la interrupción explorando los señalizadores de las
fuentes de interrupción.
 Saltar a la rutina de atención a la interrupción correspondiente.
 Devolver el valor de los registros que tenia el programa antes de atender la
interrupción.
 Borrar el señalizador de interrupción
 Ejecutar RETFIE

Secuencia de instrucciones para guardar los registros al


saltar a una interrupción:

Referencias
Cierva, J. d. (.). LOS PIC16F88X: Interrupciones. Aprendizaje de la Electrónica a través de la Robótica, 27.
Microcontroladores PIC. (s.f.). Obtenido de https://www.mikroe.com/ebooks/microcontroladores-pic-
programacion-en-c-con-ejemplos/caracteristicas-basicas-del-pic16f887

Peréz, F. E. (2007). Microcontroladores: Fundamentos y Aplicaciones con PIC. España: MARCOMBO.

Você também pode gostar