Clase Microcontroladores PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 164

CLASE

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.

• Cada tipo de microcontrolador sirve para una tarea


determinada.

• Los PIC (Peripheral Interface Controller) son una familia de


microcontroladores.
IDENTIFICACION DE PINES DEL MICROCONTROLADOR
• El microcontrolador PIC16F84 puede trabajar con una frecuencia
máxima de 10 MHz. Hay una versión avanzada, el PIC16F84A-20 que
puede llegar hasta los 20 MHz.
• Los circuitos del curso trabajan con el PIC16F84A-04 (4 MHz máx).
ALIMENTACION DEL PIC16F84
• Se alimenta con 5 volts, aplicados a los pines VDD Y VSS
que son respectivamente la alimentación y la masa del
chip.

• La siguiente figura describe la alimentación del


microcontrolador a partir de un voltaje de alimentación de
12 volts, C4 reduce el rizado de la tensión de entrada.
• El consumo de corriente para el funcionamiento del PIC16F84,
depende de la tensión de alimentación, de la frecuencia de trabajo y
de las cargas que soporten sus salidas (del orden de miliamperios)
• Se debe conectar un capacitor de desacoplo de 100 nF cerca de los
pines de alimentación.
PUERTOS DE ENTRADA Y SALIDA
• El PIC16F84 se comunica a través de los puertos (I/O). Están
constituidos por líneas digitales de entrada/salida que trabajan entre
0 y 5 volts.
• Los puertos se pueden configurar como entradas para recibir datos o
como salidas para dispositivos externos.

• El PIC16F84 tiene dos puertos


a) Puerto A con 5 líneas, pines RA0 a RA4.
b) Puerto B con 8 líneas, pines RB0 a RB7.
• Cada línea del microcontrolador puede configurarse como entrada o
salida, independientemente unas de otras, según se programe.
• Por ejemplo el Puerto A se puede configurar para leer los
interruptores de entrada y el puerto B se puede configurar como
salida para activar barra de diodos leds y display de siete segmentos.
• Las líneas son capaces de entregar niveles TTL cuando la tensión
aplicada en VDD es de 5V.
• Cuando el pin esta a nivel bajo consume 25 mA, es decir, cuando
consume corriente (modo sink). La suma de las intensidades por la 5
líneas del Puerto A no puede exceder de 80 mA, ni la suma de las 8
líneas del puerto B puede exceder de 150 mA.

• Cuando el pin esta a nivel alto 20mA, es decir, cuando proporciona


corriente (modo source). La suma de las intensidades por las 5 líneas
del puerto A no puede exceder de 50 mA, ni la suma de las 8 líneas
del Puerto B puede exceder de 100mA.
OSCILADOR
• Todo microcontrolador necesita de un circuito que le indique la
velocidad de trabajo, es el oscilador o reloj. Genera una onda
cuadrada de alta frecuencia que se utiliza como señal para
sincronizar todas las operaciones del sistema.
• Este circuito es muy simple pero de vital importancia para el buen
funcionamiento del sistema.
• Generalmente todos los componentes del reloj se encuentran
integrados en el propio microcontrolador y solo se requieren unos
pocos componentes externos, como un reloj de cuarzo o una red RC,
para definir la frecuencia de trabajo.
• El PIC16F84 usa los pines OSC1/CLKIN y OSC2/CLKOUT, permite
cinco tipos de osciladores para definir la frecuencia de
funcionamiento.

A. XT, cristal de cuarzo.


B. RC, oscilador con resistencia y condensador.
C. HS, cristal de alta velocidad.
D. LP, cristal para baja frecuencia y bajo consumo de potencia.
E. Externa, cuando se aplica una señal de reloj externa.
OSCILADOR XT
• Es el más utilizado y está basado en el oscilador a cristal de cuarzo o en un
resonador cerámico. Es un oscilador estándar que permite una frecuencia de reloj
muy estable comprendida entre 100 KHz y 4 MHz.
• La siguiente figura muestra el tipo de conexión que en muchos proyectos se utiliza
un cristal de 4 MHz. El cristal debe de ir acompañado de dos capacitores de entre
15pF y 33pF.
• Se puede comprobar con un osciloscopio la señal en el pin OSC2/CLKOUT, se debe
visualizar una onda senoidal de igual forma que la del cristal utilizado.
OSCILADOR RC
• Un oscilador de bajo costo es el formado por una red RC. El inconveniente de este
tipo de oscilador es la baja precisión, pero su bajo precio lo hace interesante para
muchas aplicaciones en las que no es muy critica la exactitud de tiempos.
• Los valores que se recomiendan por el fabricante para este tipo de oscilador son 5
KΩ ≤ Rext ≤ 100 kΩ y Cext > 20 pF.
• Se puede obtener la frecuencia del oscilador dividida por cuatro, en el pin
OSC2/CLKOUT, la cual se puede utilizar para sincronizar otros circuitos.
• La siguiente tabla muestra valores de frecuencia que pueden ser
obtenidos seleccionando diferentes valores de resistencia (Rext), y
capacitor (Cext) para un oscilador RC.
OSCILADORES HS Y LP
• El oscilador de cristal o resonador de alta velocidad HS (High Speed
Crystal/Resonator) trabaja a una frecuencia comprendida entre 4 MHz
y 20 Mhz par el PIC16F84A.
• El oscilador de cristal de cuarzo o resonador cerámico de baja
potencia LP (Low Power Crystal) es un oscilador de bajo consumo.
Su cristal o resonador está diseñado para trabajar con frecuencias
comprendidas entre 32 kHz y 200 Khz.
• El circuito para cualquiera de las configuraciones HS, LP y XT es el
mismo. El valor de los condensadores C1 y C2 depende del cristal (o
resonador). La resistencia Rs solo es necesaria para algunas
versiones del tipo HS.
• El fabricante proporciona unas tablas que facilitan los valores de los
condensadores C1 y C2.
USO DE UNA SEÑAL EXTERNA DE RELOJ
• Al PIC16F84, se le puede alimentar una señal de reloj externa,
pudiendo aplicar esta misma señal a varios microcontroladores a
partir de una única señal de reloj.
RESET
• El llamado reset en un microcontrolador provoca la reinicialización
de su funcionamiento, un comienzo a funcionar desde cero. En este
estado la mayoría de los dispositivos internos del microcontrolador
toman un estado conocido.

• En los microcontroladores se requiere un pin de reset para reiniciar


el funcionamiento del sistema cuando sea necesario. El pin de reset
en los PIC se denomina MCLR (Master Clear) y produce un reset
cuando se aplica un nivel lógico bajo.
• El reset se puede hacer por medio de un pulsador externo, como el
mostrado por la figura, el fabricante recomienda conectar en serie
con el pulsador una resistencia de 50 a 100 Ω.

• 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.

• El PIC16F84 dispone de un temporizador, la instrucción Reset PWRT


(Power-up Timer), esta opción da un retardo de 72 ms desde el
momento de la conexión a la alimentación, esto con la finalidad de
que el microcontrolador alcance un valor aceptable de tensión de
arranque correcto del sistema.
PERIFERICOS BASICOS
• Diodo led. El PIC16F84 puede gobernar directamente diodos led de
dos formas
1. Conectando el cátodo del diodo a la salida del microcontrolador, y
el ánodo al positivo de la alimentación a través de una resistencia
limitadora.
2. Conectando el ánodo del diodo a la salida del microcontrolador a
través de una resistencia limitadora y el cátodo a masa.
• Formas de conectar un LED a un microcontrolador.
INTERRUPTORES Y PULSADORES
• Los interruptores y pulsadores permiten introducir un nivel lógico
“0” y “1” según la posición en que se encuentren, “cerrado” o
“abierto”.
• La lectura del estado de interruptores y pulsadores es muy simple,
basta con conectar estos dispositivos entre una entrada y masa.
DISPLAY DE SIETE SEGMENTOS
• La display de siete segmentos es un periférico digital de salida que
se utiliza para representar valores numéricos.
• Los display se pueden encontrar en dos configuraciones ánodo
común o cátodo común.
ZUMBADOR
• En muchos proyectos es necesario indicar mediante una señal
audible la ocurrencia de un evento. Usando un zumbador
piezoeléctrico miniatura.
• Un zumbador miniatura funciona con tensiones comprendidas entre
3 V y 16 V, y su consumo no supera los 10 mA, por lo que puede ser
alimentado directamente por la salida del microcontrolador.
OTROS PERIFERICOS
• Controlando Cargas a 230 V

a) Control con relé.


b) Control con relé miniatura en cápsula DIL.
c) Control mediante fototriac.
d) Control de potencia con triac.
Teoría básica de Microcontroladores

• Los términos microprocesador y microcontrolador no son lo mismo, la


gran diferencia entre los dispositivos mencionados es su
funcionalidad.
Microprocesador
• Es un circuito electrónico integrado para el calculo y el control
computacional, conocido también como Unidad Central de
Procesamiento (CPU)
1. Realiza todas las operaciones aritméticas y lógicas sobre datos
2. Controla todos los procesos que se desarrollan en la computadora
3. Sus componentes son las partes lógicas, unidad aritmético lógica,
unidad de control, memoria cache, registros de almacenamiento,
unidad de ejecución, buses de datos, control y dirección.
Microcontrolador
• Es un circuito integrado programable que incluye las 3 unidades
funcionales de una computadora

1. CPU, memoria y unidades de entrada y salida.

2. Para ser utilizado son necesarios unos programas de control y un


cristal de sincronización para controlar cualquier equipo electrónico.
• Esquema de un microcontrolador
• Imagen de un microcontrolador
LIBRO:

DISEÑO DIGITAL BASADO EN


MICROPROCESADORES.
CAPITULO 3:

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

I/O Una Palabra


Simultáneamente
Paralelo
Buses de
Dirección
Control
Datos Transmite
I/O Serie
Recibe
Micro-Computador.

RAM
MPU
Unidad de
Micro ROM
Procesamiento

I/O Una Palabra


Simultáneamente
Paralelo
Buses de
Dirección
Control
Datos Transmite
I/O Serie
Recibe
MICRO-CONTROLADOR.
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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


DESCRIPCION DE CADA BLOQUE INTERNO.

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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


DEMUX Sumador MUX

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

Criterio Sujeto A Sujeto B


1
2
3
4
5
6
Totales
Toma de decisiones.
Ordenamiento del Caos.

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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


ACUMULADORES. ACCA, ACCB.
Un Acumulador es un Registro de Corrimiento de tipo Universal, es decir
puede efectuar todas las funciones de cargar y descargar datos, entrada
serie, entrada paralelo, salida serie, salida paralelo, además puede correr o
desplazar en ambos sentidos.
El tamaño de un acumulador por lo general, es de la misma cantidad de bits
que procesa en paralelo la ALU, 8 bits.
Las operaciones que puede efectuar son: cargar (leer), almacenar (escribir),
sumar, restar, comparar, incrementar, decrementar, correr a la izquierda y a la
derecha, operaciones lógicas de AND, OR, NOT, EXOR, operaciones de
transferencia de contenido con otros registros y con el Stack, etc.
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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


REGISTRO DE CODIGO DE CONDICION. RCC.
Este registro, generalmente de 8 bits, indica mediante cada uno de sus bits el
estado resultante (estatus) del MPU después de la ejecución de una
instrucción, mediante lógica positiva nivel alto H para indicar el cumplimiento
de la condición.

S X H I N Z V C

Acarreo (Carry)

Sobre flujo (Overflow)


Cero (Zero)

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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


REGISTRO INDICE. Ix, Iy.
Registro auxiliar de los acumuladores, generalmente de 16 bits, las funciones
del Ix, por lo general son menos que las de los acumuladores, el Ix se puede
leer, escribir, comparar, incrementar, decrementar, efectuar operaciones
aritméticas y lógicas, transferir contenido a otros registros y el stack, etc.
Además el Registro Índice genera el modo de direccionamiento Indexado.
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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


STACK POINTER. SP
O, Indicador del Paquete de Registros, generalmente de 16 bits, indica
mediante su contenido la dirección de inicio del Stack, lugar de Ram usado
por el Sistema Operativo para almacenar una copia del contenido de todos
los registros del MPU, para el caso de la ejecución de subrutinas y rutinas
de interrupción.
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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


CONTADOR DEL PROGRAMA. PC.
Este registro generalmente de 16 bits, o del mismo numero de bits que
el Bus de Dirección, mediante su contenido genera la secuencia de
ejecución del programa.
La operación del PC, consiste inicialmente en contener la dirección de
la primer instrucción a ejecutar por el MPU.
Una vez ejecutada esta primer instrucción el PC incrementa su
contenido en una unidad, para indicar la dirección de la siguiente
instrucción a ejecutar y así sucesivamente hasta concluir la ejecución
total del programa.
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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


REGISTRO DE DIRECCIÓN.
Este registro generalmente de 16 bits, o del mismo numero de
bits que el Bus de Dirección, esta directamente conectado al Bus
de Dirección, recibe el contenido del PC, para formar la dirección
del lugar de memoria que será seleccionado para leer o escribir,
este registro no puede ser modificado por el usuario mediante
instrucciones.
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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


REGISTRO DE DATOS.
Este registro generalmente de 8 bits, esta directamente conectado al
Bus de Datos,
recibe el contenido de un lugar de memoria o del exterior a través de
un puerto, para formar el siguiente dato a manipular o instrucción a
ejecutar,
de la misma manera saca al exterior del MPU, hacia memoria o el
exterior a través de un puerto, el resultado de la operación del MPU,
este registro no puede ser modificado por el usuario mediante
instrucciones.
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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


DECODIFICADOR DE INSTRUCCIÓN.
Es un bloque que interpreta la combinación de unos y ceros que entra al
MPU, por el bus de datos,
pudiendo tratarse de una instrucción genéricamente llamado Código
Ejecutable o un también de un dato,
el usuario no puede alterar su operación, que le es transparente.
MPU
Pulsos de Reloj a todos
Acumulador A CK los registros

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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


UNIDAD DE CONTROL Y SECUENCIA.
Este bloque se encarga de controlar la ejecución de una instrucción,
genera la secuencia de ejecución, proporcionando los pulsos de reloj a
cada uno de los registros involucrados en la ejecución,
selecciona la operación en la Unidad Aritmética y Lógica
y genera al Bus de Control.
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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


BUS DE DATOS.
Es un bus bidireccional, conduce datos de entrada y salida al MPU,
la cantidad de líneas de este bus es generalmente igual al de la palabra que
opera en paralelo la ALU y al tamaño de la palabra que almacena la memoria,
para la mayoría de los microprocesadores de control el bus de datos es de 8
bits.
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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


lunes, agosto 23,
9:43:40 AM
BUS DE DIRECCION.
Este bus es de solo salida,
la cantidad de líneas del bus de dirección para la mayoría de los
microprocesadores de control es de 16 líneas,
16
con lo que puede direccionar hasta 2 es decir un total de 65,53610
lugares de memoria.

lunes, agosto 23,


9:48:55 AM
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

Registro de Dirección Registro de Datos

Bus de Dirección Bus de Datos


lunes, agosto 23,
9:49:22 AM
BUS DE CONTROL.
Este bus tiene líneas de solo salida y líneas de solo entrada, genera las
señales de sincronía o reloj f para dispositivos externos al MPU, así como las
señales de lectura Read y de escritura Write, VMA valid memory address, BA
bus available, Reset, etc.

lunes, agosto 23,


9:54:21 AM
RAM
MPU
Unidad de
Micro ROM
Procesamiento

I/O Una Palabra


Simultáneamente
Paralelo
Buses de
Dirección
Control
Datos Transmite
I/O Serie
Recibe

lunes, agosto 23,


9:55:15 AM
RAM.
Random Access Memory, se usa básicamente como memoria de Lectura/Escritura,
es una memoria volátil que olvida la información al ser desenergizada,
por lo general se secciona en dos partes,
una de mayor proporción para el usuario en la que se acostumbra probar y correr
programas, almacenar variables, buffers de datos, banderas de estatus de
operación, etc,
y la sección de Ram del Sistema Operativo, utilizada para contener al Stack, y
efectuar toda la lectura y escritura de información que momentáneamente le es de
utilidad al mismo sistema.

lunes, agosto 23,


10:10:40 AM
RAM
MPU
Unidad de
Micro ROM
Procesamiento

I/O Una Palabra


Simultáneamente
Paralelo
Buses de
Dirección
Control
Datos Transmite
I/O Serie
Recibe
ROM.
Read Only Memory, memoria solo para leer, de característica no volátil,
contiene el programa del usuario o también llamado la Aplicación Especifica,
también contiene al sistema operativo,
en el Rom se acostumbra almacenar, tablas, subrutinas, secciones o módulos
de programas, etc.
en la actualidad los microcontroladores tienen una sección de memoria Flash
que ha ido desplazando al concepto de Rom, Prom, Eeprom, etc.
RAM
MPU
Unidad de
Micro ROM
Procesamiento

I/O Una Palabra


Simultáneamente
Paralelo
Buses de
Dirección
Control
Datos Transmite
I/O Serie
Recibe
PUERTOS DE ENTRADA-SALIDA.
Son los dispositivos que permiten el flujo de información desde y hacia el
exterior del Microcontrolador y que lo conectan al mundo real para
completar la aplicación especifica,
se sub clasifican básicamente como paralelo y serie, teniendo a su vez
ambos varias clasificaciones,
los puertos están “conectados” al Bus de Dirección y forman parte del
mapa de memoria, lo que facilita al MPU leer y escribir en sus registros
con las mismas instrucciones que la memoria, “load” y “store”.
Arquitectura interna del PIC:
Hay dos arquitecturas conocidas; la clásica de von Neumann, y la arquitectura Harvard, veamos como son...

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.

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
El contador del programa debe
cargarse con el
inicio del programa (0 0).

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.

El contenido del contador del


programa se transfiere
al registro de direcció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
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

3 Dirección Cont. Binario Contenido


0000 0000 1000 0110 LDA Bus de
0000 0001 0000 0111 7 datos.
Bus de
dirección. 0000 0010 1000 1011 ADD
0000 0011 0000 1010 10
0000 0100 0011 1110 HLT
TRAER LA INSTRUCCIÓN DE ADD

1.- El contenido del contador del programa (02) se transfiere al


registro de dirección.

2.- El contador del programa se incrementa a (03).

3.- La dirección se coloca en el bus de dirección.

4.- El contenido de la localidad de memoria se transfiere al


registro de datos.

5.- El contenido del registro de datos se decodifica por


el decodificador de instrucción.
EJECUTAR LA INSTRUCCIÓN DE ADD

ME MOR IA 4

3 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
EJECUTAR LA INSTRUCCIÓN DE ADD

1.- El contenido del contador del programa se transfiere al


registro de dirección.

2.- El contador del programa se incrementa a (04), antes de l


a siguiente FASE DE FETCH.

3.- La dirección del operando se coloca en el bus de dirección.

4.- El operando (10 10) se transfiere al registro de datos.

5A.- El operando (10 10) se transfiere al registro del ALU.

5B.- Simultáneamente, el otro operando (7) se transfiere del acumulador a


la otra entrada del ALU.

6.- El ALU suma los operandos. La suma (1710)


se carga en el acumulador.
TRAER Y EJECUTAR LA INSTRUCCIÓN DE HLT

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.

En este modo la instrucción esta formada


solamente por el Código de la Instrucción.

Código de Instrucción.

Las instrucciones en este modo tienen


básicamente relación con el hardware interno
del MPU.
Ejemplo:

Instrucción incrementa el acumulador A.

La identificación de una instrucción se efectúa,


cuando menos en las siguientes 4 formas:

Nombre. Incrementa el acumulador A


Nemónico. INCA
Código. 42
Símbolo o Icono. A+1 A
Recomendaciones para elaborar un
programa de prueba para una instrucción.

• Representar gráficamente las acciones


mediante un diagrama de flujo.
• Elaborar un listado de las instrucciones y
comandos.
• Establecer una estrategia de prueba.
• Cargar el programa.
• Correr o ejecutar el programa.
• Verificar operación.
Simbología estándar para el diagrama de
flujo.

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

0800 4A INCA, INH


Inicio 0801 BR

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:

Instrucción. Carga el acumulador A en modo Inmediato.


Nemónico. LDAA
Código. 86
Icono. (M) A , Dato A

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.

Cargar el acumulador B con un 05, en modo Inmediato.

Sumar A+B dejando el resultado en el acumulador A, en modo


Inherente.

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

A+B A Estrategia de prueba:


• Correr el programa.
• Verificar el contenido del acumulador A.
Break
Point

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

00FF Zona de influencia del


0000 Modo Directo.

Solo se indica
el Byte de menor peso.

lunes, septiembre 8,
10:14:23 AM
Ejemplo:

Instrucción. Carga el acumulador A en modo Directo.


Nemónico. LDAA
Código. 96
Icono. (M) A

El paréntesis indica “el contenido de”

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

Cargar el acumulador A con el contenido de


la dirección 02, en modo Directo.

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:

1. Idear un programa que transfiera el contenido de la dirección 02 a la


localidad 03.

2. Idear un programa que lea el contenido de la dirección 02 y escriba su


complemento en la localidad 03.

3. Idear un programa que sume el contenido de la dirección 02 a la 03 y


deposite el resultado en la dirección 02. (no hay mas registros pudo
haber sido la 04)

lunes, septiembre 8,
10:14:25 AM
Store Escribir
Memoria

Acumulador dato dato

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.

00FF Zona de influencia


0000 del Modo Directo.

Solo se indica
el Byte de menor peso.

lunes, septiembre 8,
10:14:58 AM
Ejemplo:

Instrucción. Carga el acumulador A en modo Extendido.


Nemónico. LDAA
Código. B6
Icono. (M) A

El paréntesis indica “el contenido de”

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

Cargar el acumulador A con el contenido de la dirección


0810, en modo Extendido.

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:

1. Idear un programa que transfiera el contenido de la dirección 0810 a la


localidad 0811.

2. Idear un programa que lea el contenido de la dirección 0810 y escriba su


complemento en la localidad 0811.

3. Idear un programa que sume el contenido de la dirección 0810 al de la


0811 y deposite el resultado en la dirección 0812.
Modo Indexado.
En este modo, la instrucción esta formada
por el Código de la Instrucción, más
un Byte denominado Offset, cuyo contenido
será sumado al del Registro Índice para
formar la dirección del Dato.

Código de Instrucción.

Offset (# de 00 a FF).
Ejemplo:

Instrucción. Carga el acumulador A en modo Indexado.


Nemónico. LDAA
Código. A6
Icono. (Ix+offset) A

El paréntesis indica “el contenido de la dirección formada


por el valor del Registro Indice mas el valor del offset”
Codificación:
Inicio 0800 A6 LDAA, Ix
0801 00 offset
0802 BR

(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:

1. Idear un programa que transfiera el contenido de la dirección 0810 a la


localidad 0811, usando el modo indexado.
Modo Indexado en el MCU Pic.
En los microcontroladores PIC, se le llama modo de direccionamiento
Indirecto (Indirect Addressing) a un modo equivalente al modo
Indexado.
En este modo se usan dos registros el INDF y el FSR.
El INDF es un registro virtual, no existe físicamente en el MPU.
El FSR File Select Register o Registro “Selector o Indicador” de Registros
o lugares de Memoria, tiene la función de indicar, mediante su
contenido, la dirección de un Registro o Localidad de Memoria, en
Ram, es decir a los registros de propósito general.
A ambos registros, se les puede aplicar las mismas instrucciones que a
los demás registros, leer, escribir, incrementar, decrementar,
operaciones aritméticas y lógicas, etc.
Finalmente, la operación del modo indirecto, consiste en que
cualquier instrucción aplicada al INDF, actuará sobre el registro o
localidad de memoria indicada por el contenido del FSR.
RAM

FSR 0020 0020

INDF
Manipular,
Leer
Escribir operaciones

aritméticas
W
y lógicas
Problemas:
Usando el modo Indirecto

a) Leer el dato de la dirección 0020.


b) Escribir un dato en la dirección 0021.
c) Transferir el contenido de la dirección 0020 a la 0021.
d) Escribir el mismo dato en las direcciones 0020, 0021, 0022, 0023.
a) Leer el dato de la dirección 0020.

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.

Instrucción Relativa Condicionada


que pregunta por el estado de 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 Previa que altera los bits del


Registro de Código de Condición.

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

Offset = diferencia = Dirección Final - (Dirección Inicial + 2)


= 0805 – (0800 + 2) = 03
Offset = 03
Codificación

• 0800 20 BRA
• 0801 03
• 0802
• 0803
• 0804
• 0805 BR

Offset = diferencia = Dirección Final - (Dirección Inicial + 2)


= 0805 – (0800 + 2) = 03
Offset = 03
Calculo del Offset, para brinco hacia atrás (retroceder).

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

Offset = diferencia = Dirección Final - (Dirección Inicial + 2) = Numero Negativo


= 0800 – (0804 + 2) = FA
Offset = FA
Calculo del Offset, para brinco hacia atrás (retroceder).

Codificación

• 0800 BR
• 0801
• 0802
• 0803
• 0804 20 BRA
• 0805 FA
• 0806

Offset = diferencia = Dirección Final - (Dirección Inicial + 2) = Numero Negativo


= 0800 – (0804 + 2) = FA
Offset = FA
Branch Condicionado.
Idear un programa para probar las instrucciones de:
• BCC Branch if Carry Clear.
• BCS Branch if Carry Set.
Instrucción previa,
que modifica el bit de acarreo,
del Registro de Código de Condición

BCC ó BCS

Cumple No Cumple
Ramifica Continúa
Breakpoint

Breakpoint, en la siguiente
localidad.
DESCRIPCION DEL
HC12.

También podría gustarte