Está en la página 1de 38

Microcontroladores

Prof. Verena Mercado Polo


M.Sc. Ing. Electricista
La arquitectura tradicional
 La arquitectura tradicional de computadoras y microprocesadores se basa
en el esquema propuesto por John Von Neumann, en el cual la unidad
central de proceso, o CPU, esta conectada a una memoria única que
contiene las instrucciones del programa y los datos

• El tamaño de la unidad de datos o instrucciones esta fijado por el


ancho del bus de la memoria.
• Este bus único limita la velocidad de operación del microprocesador, ya
que no se puede buscar de memoria una nueva instrucción, antes de
que finalicen las transferencias de datos que pudieran resultar de la
instrucción anterior.
La arquitectura tradicional
John Von Neumann
Las dos principales limitaciones de esta arquitectura tradicional son:
 Que la longitud de las instrucciones esta limitada por la unidad de
longitud de los datos, por lo tanto el microprocesador debe hacer
varios accesos a memoria para buscar instrucciones complejas,
 Que la velocidad de operación (o ancho de banda de operación) esta
limitada por el efecto de cuello de botella que significa un bus único
para datos e instrucciones que impide superponer ambos tiempos de
acceso.
La arquitectura Harvard

• La arquitectura conocida como Harvard, consiste simplemente en un


esquema en el que el CPU esta conectado a dos memorias por
intermedio de dos buses separados.

 Una de las memorias contiene solamente las instrucciones del


programa, y es llamada Memoria de Programa.
 La otra memoria solo almacena los datos y es llamada Memoria de
Datos
Ambos buses son totalmente independientes y
pueden ser de distintos anchos.
La arquitectura Harvard

Se puede observar claramente que las principales ventajas de esta


arquitectura son:
• Que el tamaño de las instrucciones no esta relacionado con el de los
datos, y por lo tanto puede ser optimizado para que cualquier
instrucción ocupe una sola posición de memoria de programa,
logrando así mayor velocidad y menor longitud de programa,
• Que el tiempo de acceso a las instrucciones puede superponerse con
el de los datos, logrando una mayor velocidad de operación.
La arquitectura Harvard

• Una pequeña desventaja de los procesadores con arquitectura


Harvard, es que deben poseer instrucciones especiales para acceder
a tablas de valores constantes que pueda ser necesario incluir en los
programas.
• Los microcontroladores PIC 16C5X, 16CXX y 17CXX poseen
arquitectura Harvard, con una memoria de datos de 8 bits, y una
memoria de programa que, según el modelo, puede ser de 12 bits
para los 16C5X, 14 bits para los 16CXX y 16 bits para los 17CXX.
• El microcontrolador PIC 16F84 posee arquitectura Harvard, con una
memoria de datos de 8 bits, y una memoria de programa de 14 bits.
Diagrama de bloques del microcontrolador
PIC16F84
Mapas de memoria
• La memoria interna de datos, también
llamada archivo de registros (register
file), esta dividida en dos grupos: los
registros especiales, y los registros de
propósito generales.
• Los primeros ocupan las 11 posiciones
primeras que van desde la 00 a la 0B, y
los segundos las posiciones que siguen,
o sea de la 08 a la 4F.
• Los registros especiales contienen la
palabra de estado (STATUS), los
registros de datos de los tres puertos
de entrada salida (Puerto A, Puerto B,
Puerto C), los 8 bits menos
significativos del program counter
(PC), el contador del Real Time
Clock/Counter (RTCC) y un registro
puntero llamado File Select Register
(FSR).
Mapas de memoria

• Los registros de propósito general se


dividen en dos grupos : los registros
de posición fija y los bancos de
registros. Los primeros ocupan las 8
posiciones que van de la 08 a la 0F.
• Los bancos de registros consisten en
hasta cuatro grupos o bancos de 16
registros cada uno, que se encuentran
superpuestos en las direcciones que
van de la 10 a la 1F.
• Se puede operar con un solo banco a
la vez, el cual se selecciona mediante
los bits 5 y 6 del
• File Select Register (FSR)
Registros de funciones especiales Camino
de los datos y registro W

La principal diferencia entre


ambos se encuentra en la
ubicación del registro de
trabajo, que para los PIC’s se
denomina W (Working
Register), y para los
tradicionales es el Acumulador
Lenguaje Ensamblador
 Es un lenguaje de programación de bajo nivel para los computadores,
micrprocesadores, microcontroladores y otros circuitos integrados
programables.
Pascal, Basic, Java, Python,Visual
Alto Nivel Basic, SQL (Structured Query
Language), PHP, etc
La importancia del lenguaje
ensamblador es que ocupan
menos espacio en memoria. Medio Nivel C, BCPL (Basic Combined
Programming Language)

Bajo Nivel Ensamblador

Maquina 110010001111
Lenguaje de Bajo Nivel
 Ensamblador es usado para traducir sentencias del lenguaje ensamblador
al código de maquina del computador destino.
 Refleja directamente la arquitectura y las instrucciones en lenguaje de
maquina de la CPU y pueden ser muy diferentes de una arquitectura de
CPU a otra.
 Un registro es un conjunto de campos que contienen los datos que
pertenecen a una misma repetición identidad.
 Por ejemplo AX, BX, CX y DX son registros que poseen 16 Bits, a su vez
cada registro puede ser dividido en 2 registros de 8 bits
Registros de Propósito General

AH AL AX (Acumulador) AH y AL de 8 bits cada uno y


sumados dan 16 Bits
BH BL BX (Base) H y L se utiliza para identificar
CH CL CX (Contador) el nivel alto y bajo de cada
DH DL registro
DX (Datos)
Lenguaje de Bajo Nivel

 Un registro es una memoria de alta velocidad y poca capacidad,


integrada en el microprocesador, que permite guardar
transitoriamente y acceder a valores muy usados, generalmente en
operaciones matemáticas.
 La Unidad Central de Proceso (CPU, por sus siglas en inglés) tiene
14 registros internos cada uno de 16 bits.
Estructura de un Programa
 Un programa en el lenguaje ensamblador consiste en una secuencia
de proposiciones, una en cada línea del código fuente.
Sintaxis:
 [etiqueta] [Instrucción/directiva[operandos] ];[comentarios]
 Los campos se separan por caracteres blancos, de espacio y/o
tabulación.
 Los operandos le especifican al ensamblador que registro, valor,
localidad de memoria, etc. asociar con cada instrucción. Pueden ser:
 No Numéricos: (símbolos específicos del ensamblador, que son
palabras reservadas que se emplean en algunas instrucciones y
direcciones indirectas que utilizan el nombre de un registro para
indicar la dirección de un dato) y
 Numéricos (datos inmediatos, direcciones de bytes, direcciones de
bit, direcciones de programa)
Estructura de un Programa
 Palabras Reservadas
Lenguaje de Bajo Nivel
Función de los registros:
 Los registros están en la cumbre de la jerarquía de memoria, y son la
manera más rápida que tiene el sistema de almacenar datos. Los
registros se miden generalmente por el número de bits que almacenan.

Algunos registros básicos:

Contador de programa (PC): La función del PC consiste en


seguir la pista de la instrucción por buscar (capturar) en el siguiente
ciclo de máquina.

Registro de direcciones de la memoria (MAR): Funciona como


registro de enlace entre la CPU y el canal de direcciones.
Lenguaje de Bajo Nivel

Algunos registros básicos:

 Registro de datos (RD): La función del RD consiste en


proporcionar un área de almacenamiento temporal (memoria
intermedia, acumulada o buffer) de datos que se intercambian entre
la PCU y la memoria.
 Registro de instrucciones (IR): Es un registro que conserva el
código de operación de la instrucción en todo el ciclo de la
máquina.
 Palabra de estado de programa (PSW): O condición de
programa almacena información pertinente sobre el programa que
este ejecutándose.
Lenguaje de Bajo Nivel
Llamadas a Servicios del Sistema:
 Una llamada al sistema es un método o función que puede invocar un
proceso para solicitar un cierto servicio al sistema operativo.
 Dado que el acceso a ciertos recursos del sistema requieren la ejecución
de código en modo privilegiado, el sistema operativo ofrece un conjunto
de métodos o funciones que el programa puede emplear para acceder a
dichos recursos.
Algunos ejemplos de llamadas al sistema son las siguientes:
 Time: que permite obtener la fecha y hora del sistema.
 Write: que se emplea para escribir un dato en un cierto dispositivo de
salida, tales como una pantalla o un disco magnético.
 Read: que es usada para leer de un dispositivo de entrada, tales como
un teclado o un disco magnético.
 Open: que es usada para obtener un descriptor de un fichero del
sistema, ese fichero suele pasarse a write.
Registros
Registros Índices

CS Code Segment (Segmento de Código)


DS Data Segment (Segmento de datos)
ES Extra Segment (Segmento Extra)
SS Stack Segment (Segmento de Pila)
Registros Índices
SI Source Index (Índice Origen)
DI Destination Index (Índice Destino)
BP Base Pointer (Puntero Base)
SP Stack Pointer (Puntero de Pila)
Registro de Bandera
. . . . O D I T S Z . A . P . C Flags (Bandera)
Registro Apuntador de Instrucciones

IP Instruction Pointer
Registros
 El registro AX se usa para almacenar resultados, lectura o escritura
desde o hacia los puertos.
 El BX sirve como apuntador base o índice.
 El CX se utiliza en operaciones de iteración, como un contador que
automáticamente se incrementa o decrementa de acuerdo con el tipo
de instrucción usada.
 El DX se usa como puente para el acceso de datos.
 El DS es un registro de segmento cuya función es actuar como policía
donde se encuentran los datos. Cualquier dato, ya sea una variable
inicializada o no, debe estar dentro de este segmento.
 El registro ES tiene el propósito general de permitir operaciones sobre
cadenas, pero también puede ser una extensión del DS.
 El SS tiene la tarea exclusiva de manejar la posición de memoria donde
se encuentra la pila (stack).
 Es aquí donde se encuentra el código ejecutable de cada programa, el
cual está directamente ligado a los diferentes modelos de memoria.
Registros
Significado de cada bit del registro F (banderas):
Overflow NV = no hay desbordamiento
OV = Sí lo hay
Direction UP = hacia adelante
DN = hacia atrás
Interrupts DI = desactivadas
EI = activadas
Sign PL = positivo
NG = negativo
Zero NZ = no es cero
ZR = sí lo es
Auxiliary Carry NA = no hay acarreo auxiliar
AC = hay acarreo auxiliar
Parity PO = paridad non
PE = paridad par
Carry NC = no hay acarreo
CY = sí lo hay
Mnemónicos
Un código mnemotécnico (o código nemotécnico), es un sistema sencillo
utilizado para recordar una secuencia de datos, nombres, números, y en
general para recordar listas de ítems que no pueden recordarse
fácilmente.
Dentro de los principales mnemónico tenemos:
MOV (transferencia)
LEA (carga dirección efectiva)
POP (extraer de la pila)
PUSH (introduce en la pila)
CALL (llamada a subrutina)
JMP (salto)
RET / RETF (retorno de subrutina)
INT (interrupción)
ADD (suma)
SUB (resta)
MUL (multiplicación)
DIV (división)
Programa Ejemplo
.mode small
.stack
.data
inmensaje DB ‘Lenguaje Ensamblador.$'
.code

.programa:
mov ax, @data
mov ds, ax
mov dx, offset inmensaje
Ejemplo del programa clásico Lenguaje
mov ah, 9 Ensamblador escrito para la arquitectura de
int 21h procesador (bajo el sistema operativo DOS) en
int 20h modo texto (por defecto).
.end programa
PIC 16F877
 Los microcontroladores poseen una memoria interna que almacena
dos tipos de datos; las instrucciones, que corresponden al programa
que se ejecuta, y los registros, es decir, los datos que el usuario maneja,
así como registros especiales para el control de las diferentes funciones
del microcontrolador.
PIC 16F877
 Los microcontroladores se programan en Assembler y cada
microcontrolador varía su conjunto de instrucciones de
acuerdo a su fabricante y modelo.
 De acuerdo al número de instrucciones que el
microcontrolador maneja se le denomina de arquitectura RISC
(reducido) o CISC (complejo).
 RISC (Computadores de Juego de Instrucciones
Reducido): En estos procesadores el repertorio de
instrucciones máquina es muy reducido y las instrucciones son
simples y, generalmente, se ejecutan en un ciclo.
 CISC (Computadores de Juego de Instrucciones
Complejo): Disponen de más de 80 instrucciones máquina en
su repertorio, algunas de las cuales son muy sofisticadas y
potentes, requiriendo muchos ciclos para su ejecución.
Lenguaje Ensamblador
Código Fuente
 Está compuesto por una sucesión de líneas de texto.
 Cada línea puede estructurarse en hasta cuatro campos o columnas
separados por uno o más espacios o tabulaciones entre sí.
 Campo de etiquetas. Expresiones alfanuméricas escogidas por el
usuario para identificar una determinada línea. Todas las etiquetas tienen
asignado el valor de la posición de memoria en la que se encuentra el
código al que acompañan.
 Campo de código. Corresponde al nemónico de una instrucción, de
una directiva o de una llamada a macro.
 Campo de operandos y datos. Contiene los operandos que precisa
el nemónico utilizado. Según el código, puede haber dos, uno o ningún
operando.
 Campo de comentarios. Dentro de una línea, todo lo que se
encuentre a continuación de un punto y coma (;) será ignorado por el
programa ensamblador y considerado como comentario.
Campo de Código
Puede corresponder ese código a:
 Instrucciones: son aquellos nemónicos que son convertidos por el
ensamblador en código máquina que puede ejecutar el núcleo del
microcontrolador. En la gama media (PIC16xxx) cada nemónico se
convierte en una palabra en la memoria de programa
 Directivas. Pseudoinstrucciones que controlan el proceso de
ensamblado del programa, pero no son parte del código. Son
indicaciones al programa ensamblador de cómo tiene que generar el
código máquina
 Macros: Secuencia de nemónicos que pueden insertarse en el código
fuente del ensamblador de una manera abreviada mediante una simple
llamada.
Ejemplo de código fuente
;Fichero CUENTA.ASM
;Programa de Prueba para la placa PICDEM-2 plus
;Por el Puerto B se saca en binario, el numero de veces
;que se pulsó la tecla que está conectada a la entrada RA4
;si pulsada a cero y si libre a 1
Campo de Operandos y Datos
 El ensamblador MPASM (distribuido por Microchip) soporta los sistemas de
numeración decimal, hexadecimal, octal, binario y ASCII.
 Los nemónicos que tengan una constante como operando deberán incluirla
respetando la sintaxis que se indica a continuación.
Aprendiendo a Programar
Pasos a dar para poder generar código fuente:
1. Juego de Instrucciones
2. Directivas y Macros
3. Organización de la Memoria interna:
 Programa
 Datos
El juego de instrucciones
Es un juego reducido de 35 instrucciones muy simples. Procesador RISC
• La mayoría de las instrucciones se ejecuta en 4 ciclos de reloj; los saltos y
llamadas a subprogramas se ejecutan en 8 ciclos
• Todas las instrucciones tienen la misma longitud en la gama media: 14 bits.
• Por lo tanto el cálculo del tiempo de ejecución y de lo que ocupa un programa
resulta simple
• Las instrucciones se pueden clasificar atendiendo a dos criterios:
Formato y Funcionalidad
El juego de instrucciones: SEGÚN SU FORMATO

1.- Orientadas al byte

2.- Orientadas al bit

3.- Literales y de control


1.- Instrucciones orientadas al byte

7 bits que pueda sustituir


2.- Instrucciones orientadas al bit

7 bits que pueda sustituir


3.- Instrucciones literales o de control
Fichero con el juego de instrucciones completo.
Directivas de MPASM
Directivas de MPASM

También podría gustarte