Clase Microcontroladores PDF
Clase Microcontroladores PDF
Clase Microcontroladores PDF
MICROCONTROLADORES
• PIC16F84A_04
INTRODUCCION
• Los microcontroladores se utilizan en circuitos
comerciales, que permiten reducir el tamaño y el precio de
los equipos
• Ejemplos de éstos son:
Teléfonos móviles
Cámaras de vídeo
Televisores digitales
Equipos Electrodomésticos
Etc.
www.microchip.com
• El PC16F84 es un chip ordinario de 18 patillas (9 pines por
lado).
• Este dispositivo contiene la tecnología que se necesita
conocer, para entender los sistemas de control con
microcontroladores.
• Un microcontrolador es un circuito programable que
contiene todos los componentes necesarios para controlar
el funcionamiento de una tarea determinada.
• Otra opción para aplicar el reset es por medio del Power-On Reset
(POR) que proporciona un reset al microcontrolador en el momento
de conectar la fuente de alimentación.
ARQUITECTURA INTERNA
DE MICROPROCESADORES.
Estructura interna antes del advenimiento del Microprocesador.
MEMORIA
UNIDAD UNIDAD DE
UNIDAD DE
CENTRAL ENTRADA
CONTROL
DE SALIDA
PROCESO
CONSOLA
DEL
OPERADOR
Configuración Diseñada Alrededor de los Buses.
RAM
MPU
Unidad de
Micro ROM
Procesamiento
RAM
MPU
Unidad de
Micro ROM
Procesamiento
Bus interno de
Contador del Programa Datos
ALU
Aritmetic Logic Unit
Buscar SN 74181 unidad aritmética y lógica de 4 bits.
La unidad Aritmética y Lógica es un Bloque Multifuncional Combinacional,
que efectúa operaciones aritméticas tales como la Suma, Resta mediante
el método del 2 complemento, algunos microprocesadores pueden
multiplicar y dividir, puede además efectuar la operación de Comparar en
Magnitud, efectuar operaciones Lógicas o Booleanas de AND, OR, NOT y
EXOR.
MPU
Pulsos de Reloj a todos
los registros
Acumulador A
ALU Bus
Unidad de
Acumulador B Control y de
Secuencia Control
Registro de Código
de Condición
Decodificador
Registro Índice
de
Instrucción
Stack Pointer
Bus interno de
Contador del Programa Datos
Comparador SALIDAS
ENTRADAS
Compuertas AND,
OR, NOT y EX-OR
SELECTOR
DE
OPERACIÓN
Para que sirve:
Sumar
Comparar
Efectuar Operaciones Lógicas de
?
AND, OR y NOT.
Asignación de Valor, Cuantificación o Integración
Reactivo Valor
A 40
B 20
C 20
D 10
E 10
F 10
G 10
MPU
Pulsos de Reloj a todos
los registros
Acumulador A
ALU Bus
Unidad de
Acumulador B Control y de
Secuencia Control
Registro de Código
de Condición
Decodificador
Registro Índice
de
Instrucción
Stack Pointer
Bus interno de
Contador del Programa Datos
Bus interno de
Contador del Programa Datos
S X H I N Z V C
Acarreo (Carry)
Negativo (Negative)
Mascara de Interrupción IRQ
Medio Acarreo (Half carry)
Mascara de Interrupción XIRQ
Alto (Stop)
MPU
Pulsos de Reloj a todos
los registros
Acumulador A
ALU Bus
Unidad de
Acumulador B Control y de
Secuencia Control
Registro de Código
de Condición
Decodificador
Registro Índice
de
Instrucción
Stack Pointer
Bus interno de
Contador del Programa Datos
Bus interno de
Contador del Programa Datos
Bus interno de
Contador del Programa Datos
Bus interno de
Contador del Programa Datos
Bus interno de
Contador del Programa Datos
Bus interno de
Contador del Programa Datos
ALU Bus
Unidad de
Acumulador B Control y de
Secuencia Control
Registro de Código Selector de
de Condición Operación
Decodificador
Registro Índice
de
Instrucción
Stack Pointer
Bus interno de
Contador del Programa Datos
Bus interno de
Contador del Programa Datos
Bus interno de
Contador del Programa Datos
Bus interno de
Contador del Programa Datos
Arquitectura Von Neumann Dispone de una sola memoria principal donde se almacenan datos e instrucciones de forma
indistinta. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control).
Arquitectura Harvard Dispone de dos memorias independientes, una que contiene sólo instrucciones, y otra que contiene
sólo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso
(lectura o escritura) simultáneamente en ambas memorias, ésta es la estructura para los PIC's.
Ejecución de un Programa en
un MCU genérico.
EL CONCEPTO DEL PROGRAMA ALMACENADO.
VS
EL CONCEPTO DE CICLO DE MAQUINA.
INICIO
FETCH (TRAER)
EJECUTE (EJECUTAR)
Programa para sumar 710 + 1010 y dejar el contenido en
el acumulador.
MPU
Genérico.
ME MOR IA Programa.
ME MOR IA
Dirección Contenido Binario Contenido
0000 0000 1000 0110 LDA
0000 0001 0000 0111 7
0000 0010 1000 1011 ADD
0000 0011 0000 1010 10
0000 0100 0011 1110 HLT
FASE DE TRAER (FETCH)
Los eventos de esta fase se controlan por medio de la unidad de control y secuencia.
ME MOR IA
Dirección Cont. Binario Contenido
0000 0000 1000 0110 LDA
0000 0001 0000 0111 7
0000 0010 1000 1011 ADD
0000 0011 0000 1010 10
0000 0100 0011 1110 HLT
Bus de
dirección.
El contenido
ME MOR IA del registro de
Dirección Cont. Binario Contenido dirección pasa
al bus de
0000 0000 1000 0110 LDA
dirección.
0000 0001 0000 0111 7
0000 0010 1000 1011 ADD
0000 0011 0000 1010 10
0000 0100 0011 1110 HLT
El contenido de la
localidad de memoria
seleccionada pasa al
bus de datos y se
transfiere al registro de
datos del µPU.
ME MOR IA
Dirección Cont. Binario Contenido
0000 0000 1000 0110 LDA
0000 0001 0000 0111 7
0000 0010 1000 1011 ADD
0000 0011 0000 1010 10
0000 0100 0011 1110 HLT
Fin de la FASE DE TRAER
(FETCH).
Decodificación de la
instrucción.
El código LDA se transfiere
al decodificador de
instrucción, el decodificador
informa a la unidad de
control y secuencia que
debe producir los pulsos de
control necesarios para
efectuar la instrucción.
ME MOR IA
Dirección Cont. Binario Contenido
0000 0000 1000 0110 LDA
0000 0001 0000 0111 7
0000 0010 1000 1011 ADD
0000 0011 0000 1010 10
0000 0100 0011 1110 HLT
FASE DE EJECUTAR (EJECUTE)
Una vez reconocida la instrucción LDA, el siguiente paso es leer el siguiente
Byte de memoria y cargarlo en el acumulador.
Se transfiere el
contenido de contador
del programa al registro
ME MOR IA de dirección.
Dirección Cont. Binario Contenido
0000 0000 1000 0110 LDA
0000 0001 0000 0111 7
0000 0010 1000 1011 ADD
0000 0011 0000 1010 10
0000 0100 0011 1110 HLT
El contenido del
Bus de
registro de dirección
dirección.
se transfiere al bus
ME MOR IA de dirección y el
contador del
Dirección Cont. Binario Contenido programa se
0000 0000 1000 0110 LDA incrementa a (02) .
0000 0001 0000 0111 7
0000 0010 1000 1011 ADD
0000 0011 0000 1010 10
0000 0100 0011 1110 HLT
El contenido de la localidad
de memoria se transfiere al
registro de datos.
Posteriormente pasa al
acumulador.
ME MOR IA
Dirección Cont. Binario Contenido
Bus de
0000 0000 1000 0110 LDA
datos.
0000 0001 0000 0111 7
0000 0010 1000 1011 ADD
0000 0011 0000 1010 10
0000 0100 0011 1110 HLT
TRAER LA INSTRUCCIÓN DE ADD
4
ME MOR IA
ME MOR IA 4
3 4
ME MOR IA
Dirección Cont. Binario Contenido
0000 0000 1000 0110 LDA
0000 0001 0000 0111 7
0000 0010 1000 1011 ADD
0000 0011 0000 1010 10
0000 0100 0011 1110 HLT
MODOS DE
DIRECCIONAMIENTO.
Se le llama modo de direccionamiento,
a la clasificación que se da
a las instrucciones de un microprocesador,
con respecto al “modo” en que la instrucción
relaciona a los Registros Internos del MPU,
con ellos mismos,
con la Memoria,
y con los dispositivos de Entrada/Salida.
• Inherente.
• Inmediato.
• Directo.
• Extendido.
• Indexado.
• Relativo.
Modo Inherente.
Código de Instrucción.
Inicio o fin
Instrucción
o comando
Sentido o
flujo
Bifurcacion, decisión o
pregunta
Diagrama de Flujo.
Usar icono o simbolo de Listado
la instrucción. Direccion Codigo Nemonico Modo
A+1 A
Estrategia de Prueba:
• Verificar el contenido previo del
acumulador A, o cargar un dato
Break conocido.
Point • Correr el programa.
• Verificar el nuevo contenido del
acumulador A.
Modo Inmediato.
En este modo,
la instrucción esta formada
por el Código de la Instrucción, mas
el dato también llamado operando.
Código de Instrucción.
Operando o Dato.
Ejemplo:
Problema:
Cargar el acumulador A con un 05.
Codificación:
Inicio
0800 86 LDAA, INM
0801 05
0802 BR
05 A
Estrategia de prueba:
• Verificar el contenido previo
del acumulador A, o cargar un dato conocido.
Break
Point • Correr el programa.
• Verificar el nuevo contenido del
acumulador A.
Problema:
Usando instrucciones en modo Inherente e Inmediato,
idear un programa que sume las cantidades
hexadecimales 04 + 05 y deje el resultado en el
acumulador A.
Diagrama de flujo de la:
idea
Cargar el acumulador A con un 04, en modo Inmediato.
Detener el programa.
viernes, septiembre 5,
10:03:37 AM
Codificación:
Inicio
0800 86 LDAA, INM
0801 04
0802 C6 LDAB, INM
04 A 0803 05
0804 BR
05 B
Estrategia de prueba:
• Correr el programa.
A+B A • Verificar el contenido del acumulador A.
Break
Point
viernes, septiembre 5,
10:07:06 AM
Codificación:
Inicio
0800 86 LDAA, INM
0801 04
0802 C6 LDAB, INM 0804 18 ABA, INH
04 A 0803 05
0805 06
0804 BR
0806 BR
05 B
Estrategia de prueba:
• Correr el programa.
A+B A • Verificar el contenido del acumulador A.
Break
Point
viernes, septiembre 5,
10:08:04 AM
Codificación:
Inicio
0800 86 LDAA, INM
0801 04
0802 C6 LDAB, INM
04 A 0803 05
0804 18 ABA, INH
0805 06
05 B 0806 BR
viernes, septiembre 5,
10:10:58 AM
Modo Directo.
En este modo,
la instrucción esta formada
por el Código de la Instrucción, mas
la dirección del dato indicada en un
solo Byte.
Código de Instrucción.
Dirección del Dato.
lunes, septiembre 8,
10:14:22 AM
Mapa de Memoria.
FFFF
Solo se indica
el Byte de menor peso.
lunes, septiembre 8,
10:14:23 AM
Ejemplo:
lunes, septiembre 8,
10:14:15 AM
Problema:
Cargar el acumulador A con el contenido
de la dirección 0002.
lunes, septiembre 8,
9:53:21 AM
Diagrama de flujo de la:
idea
Detener el programa
lunes, septiembre 8,
10:14:24 AM
Codificación:
Inicio
0800 96 LDAA, DIR
0801 02
0802 BR
(02) A
Estrategia de prueba:
• Verificar el contenido del acumulador A.
Break • Cargar manualmente mediante Mm un dato
Point conocido en la dirección 02.
• Correr el programa.
• Verificar que el acumulador A se haya
cargado con el contenido de la dirección 02.
lunes, septiembre 8,
9:59:39 AM
Problemas:
lunes, septiembre 8,
10:14:25 AM
Store Escribir
Memoria
Load Leer
lunes, septiembre 8,
10:10:18 AM
Modo Extendido.
En este modo,
la instrucción esta formada
por el Código de la Instrucción, mas
la dirección del dato indicada en 2
Bytes.
Código de Instrucción.
Dirección del Dato H.
Dirección del Dato L.
lunes, septiembre 8,
10:14:27 AM
Mapa de Memoria.
FFFF
Zona de influencia del
Modo Extendido.
Solo se indica
el Byte de menor peso.
lunes, septiembre 8,
10:14:58 AM
Ejemplo:
lunes, septiembre 8,
10:16:22 AM
Problema:
Cargar el acumulador A con el contenido
de la dirección 0810.
lunes, septiembre 8,
10:17:08 AM
Diagrama de flujo de la:
idea
Detener el programa
lunes, septiembre 8,
10:18:03 AM
Codificación:
Inicio
0800 B6 LDAA, EXT
0801 08
0802 10
0803 BR
(0810) A
Estrategia de prueba:
Break • Verificar el contenido del acumulador A.
Point • Cargar manualmente mediante Mm un dato
conocido en la dirección 0810.
• Correr el programa.
• Verificar que el acumulador A se haya
cargado con el contenido de la dirección
0810.
lunes, septiembre 8,
10:20:10 AM
Problemas:
Código de Instrucción.
Offset (# de 00 a FF).
Ejemplo:
(Ix+00) A
Estrategia de prueba:
• Verificar el contenido del acumulador A.
• Cargar en el IX, manualmente mediante Rm, un
numero, por ejemplo 0810, que se convertirá en
un componente de la dirección del dato.
Break • Cargar manualmente mediante Mm, un dato
Point conocido en la dirección 0810.
• Correr el programa.
• Verificar que el acumulador A se haya cargado
con el contenido de la dirección 0810.
• Variar el offset, y probar nuevamente.
Problemas:
INDF
Manipular,
Leer
Escribir operaciones
aritméticas
W
y lógicas
Problemas:
Usando el modo Indirecto
INICIO Manualmente
mediante ventana
de Watch
W 00
W (INDF) FSR 20
20 Dato
Cicla
Escribir un dato en la dirección 0021.
INICIO Manualmente
mediante ventana
de Watch
W Dato
(W) INDF FSR 20
20 00
Cicla
Transferir el contenido de la dirección 0020 a la 0021.
INICIO
Manualmente
mediante ventana
de Watch
W 00
W (INDF) FSR 20
20 Dato
FSR+1 FSR 21 00
(W) INDF
Escribir el mismo dato en las direcciones 0020, 0021, 0022, 0023.
Modo Relativo.
En este modo, la instrucción esta formada
por el Código de la Instrucción, mas
un Byte denominado también Offset, cuyo
contenido será el numero de lugares de
memoria que el MPU tendrá que avanzar o
retroceder para encontrar la siguiente
instrucción a ejecutar.
Código de Instrucción.
Offset (# de 00 a FF).
A las instrucciones en modo relativo se les
denomina también Branch que puede traducirse
como ramificaciones o bifurcaciones, se sub
clasifican a su vez en condicionadas y no
condicionadas.
Estructura de la instrucción no condicionada BRA Branch Always.
Programa
Instrucciones Previas
Instruccion relativa no
condicionada, BRA
Branch Always
Retrocede
Avanza
El condicionamiento de una instrucción
relativa se somete al estado que guardan los
bits del Registro de Código de Condición una
vez que ha sido ejecutada la instrucción
previa a la instrucción en modo relativo.
Instrucción Previa (Inmediata anterior) que altera
los bits del Registro de Código de Condición.
Cumple No cumple
con la pregunta con la pregunta
Ramifica Continúa
Estructura de la instrucción condicionada.
Instrucción
Relativa
Condicionada
Retrocede
Cumple No cumple con la pregunta
con la pregunta Continua ejecutando las
siguientes instrucciones
Avanza Recicla.
Fin, ó
Calculo del Offset y concepto de números positivos y negativos
representados en una palabra de 8 bits.
Dirección Inicial
• 0800 20 BRA
• 0801
• 0802
Brinco • 0803 Offset
• 0804
• 0805 BR
Dirección Final
Calculo del Offset, para brinco hacia adelante (avanzar).
• 0800 20 BRA
Cuando el MPU lee el Offset • 0801
el PC contador del programa • 0802
indica la dirección 0802 • 0803
diferencia
• 0804
• 0805 BR
• 0800 20 BRA
• 0801 03
• 0802
• 0803
• 0804
• 0805 BR
Dirección Final
• 0800 BR
• 0801
• 0802
Brinco • 0803
• 0804 20 BRA
Dirección Inicial • 0805
Offset
Calculo del Offset, para brinco hacia atrás (retroceder).
• 0800 BR
• 0801
• 0802
• 0803
diferencia
• 0804 20 BRA
Cuando el MPU lee el Offset • 0805
el PC contador del programa • 0806
indica la dirección 0806
Codificación
• 0800 BR
• 0801
• 0802
• 0803
• 0804 20 BRA
• 0805 FA
• 0806
BCC ó BCS
Cumple No Cumple
Ramifica Continúa
Breakpoint
Breakpoint, en la siguiente
localidad.
DESCRIPCION DEL
HC12.