Está en la página 1de 40

Arquitectura y Programación de

Computadoras

2. Arquitectura del microprocesador


2.1 Registros del microprocesador
2.3 Lectura y escritura en memoria de trabajo
2.4 Modos de direccionamiento MAGDALENA SALDAÑA
2.5 Puertos E/S
3. Ensamblador
¿Microcontrolador o
Microprocesador?
◦ La diferencia entre ambos elementos es su funcionalidad.
◦ Para utilizar al microprocesador en una aplicación real, se debe de conectar con
componentes tales como memoria o componentes buses de transmisión de datos. Aunque el
microprocesador se considera una máquina de computación poderosa, no está preparado
para la comunicación con los dispositivos periféricos que se le conectan. Para que el
microprocesador se comunique con algún periférico, se deben utilizar los circuitos especiales.

◦ Al microcontrolador se le diseña de tal manera que tenga todas las componentes integradas
en el mismo chip. No necesita de otros componentes especializados para su aplicación,
porque todos los circuitos necesarios, que de otra manera correspondan a los periféricos, ya
se encuentran incorporados.
Componentes importantes
UNIDAD CENTRAL DE PROCESAMIENTO (CENTRAL PROCESSOR UNIT - CPU)

•Es la unidad que controla todos los procesos dentro del microcontrolador.
Consiste en varias unidades más pequeñas, de las que las más importantes son:
•Decodificador de instrucciones es la parte que decodifica las instrucciones del
programa y acciona otros circuitos basándose en esto. El conjunto de
instrucciones que es diferente para cada familia de microcontrolador expresa las
capacidades de este circuito.
•Unidad lógica aritmética (Arithmetical Logical Unit - ALU).
REGISTROS o MEMORIA RAM
Un registro o una celda de memoria es un circuito electrónico que puede
memorizar el estado de un byte. Al apagar la fuente de alimentación, se pierde
el contenido de la memoria RAM. Se utiliza para almacenar temporalmente los
datos y los resultados inmediatos creados y utilizados durante el funcionamiento
del microcontrolador.
Registros relevantes
GPR (GENERAL PURPOSE REGISTERS O REGISTROS DE PROPÓSITO GENERAL)
•Son registros que pueden ser utilizados por el usuario para declarar variables. Por
ejemplo, si el programa ejecuta la adición, es necesario tener un registro que
representa lo que se llama “suma” en vida cotidiana.

SFR (SPECIAL FUNCTION REGISTERS o REGISTROS DE FUNCIÓN ESPECIAL)


•Cada microcontrolador dispone de un número de registros de funciones especiales
(SFR), con la función predeterminada por el fabricante. Sus bits están conectados a los
circuitos internos del microcontrolador tales como temporizadores, convertidores A/D,
osciladores entre otros, lo que significa que directamente manejan el funcionamiento
de estos circuitos, o sea del microcontrolador.
El registro W
Acumulador o registro de trabajo. Es un
registro SFR estrechamente relacionado
con el funcionamiento de la ALU.
Es utilizado para almacenar todos los
datos sobre los que se debe realizar
alguna operación.
Uno de los registros SFR, denominado
Registro Status, está estrechamente
relacionado con el acumulador, muestra
el “estado” de un número almacenado en
el acumulador (el número es mayor o
menor que cero etc.) en cualquier
instante dado.
PC: program counter
Registros PCL, PCLATH
El contador de programa es de 13 bits y especifica la dirección de la instrucción que se
ejecutará.
Los ocho bits menos significativos del contador de programa se trabajan mediante el
registro PCL, que es un registro de lectura y escritura.
Los bits más significativos PCL<12:8> no se pueden leer, pero se pueden escribir
indirectamente a través del registro PCLATH.
Existen dos situaciones diferentes en la carga del PC:
◦ PC cargado en una operación de escritura.
◦ PC cargado durante instrucciones CALL y GOTO (Paginación).
Los microcontroladores de la gama media disponen de un Contador de Programa (PC)
de 13 bits, cuyos bits de menor peso corresponden a los 8 bits del registro PCL,
implementado en la posición de memoria RAM 02h (y duplicado en la posición 82h).
Los cinco bits de mayor peso del PC corresponden con los 5 bits de menor peso del
registro PCLATCH, implementado en la posición de memoria RAM 0Ah (y duplicado en la
posición 8Ah), lo que le permite direccionar hasta 8 Kb x 14 bits.
PCL
•Esta ubicado en la posición 0x02 en el banco de memoria, tiene mucho que ver con el
flujo del programa puesto que le asigna un número a cada línea de código.
•Todo empieza con la primera instrucción esta tiene una posición indicada con un
número en el registro PCL. Cuando accede a esa posición se lee la instrucción, se
decodifica, y luego se ejecuta; una vez echo esto, el reloj del micro incrementa al
contador de programa (PCL) en un unidad, esto hace que el PCL apunte a la segunda
instrucción.
•Después se lee la segunda instrucción, se decodifica y también se ejecuta. Nuevamente,
el reloj del sistema incrementa el PCL para que apunte a la tercera instrucción, la
decodifique y la ejecute. Este proceso se repite hasta que termina el programa (es decir,
cuando encuentra un END).
1. El registro W es de 8 bits, por lo que el máximo valor será 255, ese será el salto más
largo que puedes dar.
2. W no debe superar la cantidad de elementos de la tabla, la del ejemplo anterior
tiene 4 elementos por lo tanto el valor máximo de W será 3.
3. El acceso a la tabla, se hace sólo para tomar el valor que se busca y regresar al
programa principal.
4. Los comentarios en una tabla, no son tomados en cuenta por el PCL, son ignorados
Puertos de E/S
•Para hacer útil un microcontrolador, hay que conectarlo a un dispositivo externo, o sea,
a un periférico. Cada microcontrolador tiene uno o más registros (denominados
puertos) conectados a los pines en el microcontrolador.
•¿Por qué se denominan como puertos de entrada/salida?
•Porque se puede cambiar la función de cada pin como se requiera.
•Por ejemplo, si se desea que su dispositivo encienda y apague las tres señales LEDs y
que simultáneamente monitoree el estado lógico de 5 sensores o botones de presión.
Uno de los puertos debe estar configurado de tal manera que haya tres salidas
(conectadas a los LEDs) y cinco entradas (conectadas a los sensores). Eso se realiza
simplemente por medio de software, lo que significa que la función de algún pin puede
ser cambiada durante el funcionamiento.
•Una de las características más importantes de los pines de entrada/salida (E/S) es la
corriente máxima que pueden entregar/recibir.

•En la mayoría de los microcontroladores la corriente obtenida de un pin es suficiente


para activar un LED u otro dispositivo de baja corriente (10-20mA). Mientras más pines
de E/S haya, más baja es la corriente máxima de un pin. Los puertos de E/S comparten
la corriente máxima declarada en la hoja de especificación técnica del microprocesador.

•Otra característica importante de los pines es que pueden disponer de los resistores
pull-up. Estos resistores conectan los pines al polo positivo del voltaje de la fuente de
alimentación y su efecto se puede ver al configurar el pin como una entrada conectada
a un interruptor mecánico o a un botón de presión. Las últimas versiones de los
microcontroladores tienen las resistencias pull-up configurables por software.
•Cada puerto de E/S normalmente está bajo el control de un registro SFR especializado,
lo que significa que cada bit de ese registro determina el estado del pin correspondiente
en el microcontrolador.
•Por ejemplo, al escribir un uno lógico (1) a un bit del registro de control (SFR), el pin
apropiado del puerto se configura automáticamente como entrada. Eso significa que el
voltaje llevado a ese pin se puede leer como 0 o 1 lógico.
•En caso contrario, al escribir 0 al registro SFR, el pin apropiado del puerto se configura
como salida. Su voltaje (0V o 5V) corresponde al estado del bit apropiado del registro
del puerto.
MEMORIA ROM (READ ONLY
MEMORY)
La memoria ROM se utiliza para guardar permanentemente el programa que se está
ejecutando. El tamaño de programa que se puede escribir depende del tamaño de esta
memoria.
Los microcontroladores actuales normalmente utilizan el direccionamiento de 16 bits,
que significa que son capaces de direccionar hasta 64 Kb de memoria, o sea 65535
localidades.
Oscilador
•Los pulsos uniformes generados por el oscilador permiten el funcionamiento armónico y síncrono
de todos los circuitos del microcontrolador.
•El oscilador se configura normalmente de tal manera que utilice un cristal de cuarzo o resonador
cerámico para estabilización de frecuencia.
•Es importante decir que las instrucciones del programa no se ejecutan a la velocidad impuesta por
el mismo oscilador sino varias veces más despacio. Eso ocurre porque cada instrucción se ejecuta
en varios ciclos del oscilador. En algunos microcontroladores se necesita el mismo número de
ciclos para ejecutar todas las instrucciones, mientras que en otros el tiempo de ejecución no es el
mismo para todas las instrucciones.
•Por consiguiente, si el sistema utiliza el cristal de cuarzo con una frecuencia de 20 MHZ, el tiempo
de ejecución de una instrucción de programa no es 50 nS, sino 200, 400 o 800 nS dependiendo del
tipo del microcontrolador.
Set de instrucciones
•El juego de instrucciones para los microcontroladores 16F8XX incluye 35 instrucciones en
total. La razón para un número tan reducido de instrucciones yace en la arquitectura RISC.
•Esto quiere decir que las instrucciones son bien optimizadas desde el aspecto de la
velocidad operativa, la sencillez de la arquitectura y la brevedad del código.
•Lo malo de la arquitectura RISC es que se espera del programador que haga frente a estas
instrucciones. Por supuesto, esto es relevante sólo si se utiliza el lenguaje ensamblador
para la programación.

DATASHEET PAGE 116


Lenguaje ensamblador
El lenguaje ensamblador es el lenguaje de programación utilizado para
escribir programas informáticos de bajo nivel, y constituye la representación
más directa del código máquina específico para cada arquitectura de
computadoras legible por un programador.
Características
1.El código escrito en lenguaje ensamblador posee una cierta dificultad de ser
entendido directamente por un ser humano ya que su estructura se acerca más
bien al lenguaje máquina, es decir, lenguaje de bajo nivel.

2.El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para


un Microprocesador, suele necesitar ser modificado, muchas veces en su
totalidad para poder ser usado en otra máquina distinta, aun con el
mismo Microprocesador, solo pueden ser reutilizados secciones especiales del
código programado.
Los programas hechos en lenguaje ensamblador, al ser
programado directamente sobre Hardware, son
generalmente más rápidos y consumen menos recursos del
sistema (memoria RAM y ROM). Al programar
cuidadosamente en lenguaje ensamblador se pueden crear
programas que se ejecutan más rápidamente y ocupan
menos espacio que con lenguajes de alto nivel.

4. Con el lenguaje ensamblador se tiene un control muy


preciso de las tareas realizadas por un Microprocesador por
lo que se pueden crear segmentos de código difíciles de
programar en un lenguaje de alto nivel.

5. También se puede controlar el tiempo en que tarda


una Rutina en ejecutarse, e impedir que se interrumpa
durante su ejecución.
Por ejemplo, un Procesador x86 puede ejecutar la siguiente
instrucción Binaria como se expresa en código de máquina: 

Binario:

10110000 01100001 (Hexadecimal: 0xb061) 

La representación equivalente en lenguaje ensamblador es más fácil de recordar:


Asm: MOV al, 061h
Esta instrucción significa:
Asigna el valor Hexadecimal 61 (97 Decimal) al registro "al".
Instrucciones
El código máquina, o lenguaje de máquina, está formado por instrucciones
sencillas, que pueden especificar:
•Registros específicos para operaciones aritméticas, direccionamiento o control
de funciones.
•Posiciones de memoria específicas (offset).
•Modos de direccionamiento usados para interpretar operandos.
Las operaciones disponibles en la mayoría de los conjuntos de instrucciones
 

incluyen:
•Mover: llenar un registro con un valor constante (mov al, ’20’). o mover datos de
una posición de memoria a un registro o viceversa (mov al, [si]) o escribir y leer
datos de dispositivos (lea dx, offset cadena).
•Computar: sumar, restar, multiplicar o dividir los valores de dos registros, colocando
el resultado en uno de ellos o en otro registro (Ej.: sum, mul, div, entres otras
instrucciones). o realizar operaciones binarias, incluyendo operaciones lógicas
(AND/OR/XOR/NOT) o comparar valores entre registros (mayor, menor, igual) (Ej.:
cmp).
•Afectar el flujo del programa
◦saltar a otra posición en el programa y ejecutar instrucciones (jmp).
◦saltar si se cumplen ciertas condiciones (jnb, jnz, jb, jz, jne, je, entre otros).
◦saltar a otra posición, pero guardar el punto de salida para retornar (CALL, llamada a subrutinas).

Una sola instrucción compleja hace lo mismo que en otras computadoras puede requerir una larga
serie de instrucciones, por ejemplo:
salvar varios registros en la Pila de una sola vez
mover grandes bloques de memoria
Hola Mundo
.model small
.stack 
.data
Cadena1 DB 'Hola Mundo.$'
.code
programa:
   mov ax, @data
   mov ds, ax
   mov dx, offset Cadena1
   mov ah, 9
   int 21h
   int 20h
end programa
PIC es un microcontrolador, Arduino es una placa de
desarrollo basada en un microcontrolador Atmega328
Circuito Integrado
PIC16F628A
La gama PIC16F de microcontroladores de Microchip
son MCU de 8 bits que incorporan la arquitectura
PIC® de Microchip de una gran variedad de opciones
de encapsulado y contactos, desde los dispositivos
de 14 contactos que permiten ahorrar espacio hasta
los dispositivos de 64 contactos con múltiples
funciones. Hay dispositivos con arquitectura básica,
media o media mejorada disponibles con diversas
combinaciones de periféricos, lo que proporciona a
los diseñadores tanto flexibilidad como diversidad
de opciones para sus aplicaciones.
La familia PIC16F627A/628A/648A de
microcontroladores se basa en el núcleo
de arquitectura media de Microchip con
una pila de hardware de 8 niveles de
profundidad y 35 instrucciones.
Estas MCU proporcionan hasta 5 MIPS,
hasta 3,5 Kbytes de memoria de
programa, 224 bytes de RAM y EEPROM
de datos de hasta 128 bytes. En la placa
hay un oscilador calibrado en fábrica con
una precisión de ±1%.
Características del microcontrolador
•Velocidad de CPU máx. de 20 MHz
•35 instrucciones
•Pila de hardware de 8 niveles
•16 contactos de E/S
•Reset de encendido (POR)
•Temporizador de arranque (PWRT)
•Temporizador de arranque de oscilador (OST)
•Reset de caída de tensión (BOR)
•Temporizador Watchdog (WDT)
•Programación de baja tensión (LVP)
•Programación serie en circuito (ICSP)

Periféricos
•Dos comparadores
•Módulo de captura/comparación/PWM
•Dos temporizadores de 8 bits
•Un temporizador de 16 bits

También podría gustarte