Documente Academic
Documente Profesional
Documente Cultură
CIUDAD GUZMÁN
TECALITLÁN JAL. 6 DE ENERO DEL 2011
Ing. Electrónica
•Diversos módulos para el control de periféricos (temporizadores, Puertas Serie y Paralelo, ADC
Conversores Analógico/Digital, DAC Conversores Digital/Analógico, etc.).
Estructura de un microcomputador
Estructura básica de un microcomputador
Un microcomputador, aunque aparentemente es un aparato muy complejo, es una máquina
electrónica relativamente sencilla, quizás más simple que un aparato de televisión o una grabadora de
video.
Esto se debe a que está formado por varios bloques totalmente digitales y claramente definidos, cada
uno con una función específica. Por tanto, su principio de operación es muy simple y confiable.
Cada bloque, a su vez, está formado por varios circuitos integrados fáciles de entender y manejar. La
parte compleja está dentro de los circuitos integrados, pero esto no interesa al usuario, ya que este
solamente debe conocer muy bien la configuración de los pines, su funcionamiento y su
programación.
Un computador digital está conformado por tres bloques funcionalmente independientes (figura 712).
Una unidad de entrada y salida, una CPU y una memoria.
A su vez, la unidad de entrada y salida se divide en un bloque de salida y un bloque de entrada. Del
mismo modo, la CPU se divide en una unidad de control y una unidad aritmético-lógica (ALU), y la
memoria en ROM y RAM, obteniéndose seis bloques o unidades con funciones muy específicas.
Estas seis unidades que constituyen un computador digital se muestran en la figura 713. A
continuación describiremos la función básica de cada una de ellas en términos generales.
Unidad de entrada
Esta parte del circuito acepta o recibe información del mundo externo, procedente de un operador
humano, un fenómeno físico (temperatura, velocidad, etc.), un sistema de grabación
electromagnético, etc. El propósito de la unidad de entrada es llevar los datos del mundo externo
hacia la unidad de memoria para su posterior procesamiento.
En los computadores para procesamiento de datos, los sistemas de entrada más usuales son un
teclado, un mouse o ratón, una o varias unidades de disco flexible, una unidad de disco duro, un
modem, un lápiz óptico y un micrófono, entre otros.
En los computadores utilizados para control, las unidades de entrada son generalmente transductores
que censan fenómenos físicos como temperatura, presión, peso, caudal, movimiento, posición, luz,
sonido, etc. Las señales análogas de voltaje o de corrientes producidas por estos sensores se llevan al
computador por medio de uno o varios convertidores A/D (analógico-digitales).
Unidad de salida
La misión de esta parte del circuito, es entregar los resultados de la información binaria, ya procesada
por el computador, al mundo exterior.
Esta información se lleva desde la memoria o desde la unidad central de proceso (CPU) hacia
circuitos o aparatos llamados periféricos que se encuentran fuera del computador.
En los computadores para procesamiento de datos, las unidades de salida más usuales son las
impresoras, las pantallas o monitores de video, las unidades de disco flexible y de disco duro, los
módems para comunicaciones por redes telefónicas, los plotters o graficadores, los parlantes, etc.
En los computadores para control, las señales digitales salen al mundo exterior a través de una o
varias unidades de salida. Entre las más comunes tenemos las tarjetas de interface que tienen relés,
transistores bipolares, MOSFET de potencia, SCRs, triacs y otros dispositivos manejadores de
potencia.
Estos, a su vez, activan motores de corriente continua o servomotores, motores paso a paso,
actuadores mecánicos o hidráulicos, resistencias de calentamiento, electroválvulas, solenoides y otros
tipos de elementos que realizan la operación final en una máquina o aparato.
También se encuentran como unidades de salida tarjetas con convertidores D/A (digitales-analógicos)
que convierten las señales digitales del computador en señales análogas equivalentes para ser
utilizadas en circuitos de este tipo.
Unidad de memoria
La función de la unidad de memoria consiste en almacenar programas y datos y es una de las más
importantes en un computador. Se distinguen dos sistemas diferentes de memoria: la de
almacenamiento primario y la de almacenamiento secundario. La primera se denomina también
memoria principal y la segunda memoria auxiliar.
Memoria de almacenamiento primario
La memoria principal o de almacenamiento primario está formada por circuitos integrados de
memoria donde se almacenan los programas que se van a ejecutar y los datos que se necesitan
durante la ejecución de estos programas.
o lista de instrucciones) solamente puede ser leída y no es posible alterar su contenido por ningún
método directo. En esta memoria se escribe el programa monitor o de arranque del computador, lo
que permite que ejecute las acciones necesarias para poder iniciar un trabajo.
•Memoria RAM o memoria de lectura y escritura. En este tipo de memoria se puede almacenar
información para ser utilizada posteriormente y, si es necesario, se puede alterar o cambiar en
cualquier momento. En la memoria RAM se almacenan los programas y los datos que estos van
originando. Su actividad es muy intensa, ya que recibe y entrega millones de bits (1's y 0's) por
segundo a todos los bloques del computador.
Las primeras memorias RAM de buena capacidad almacenaban 1 Kilobyte de información digital.
Los primeros microcomputadores, con una capacidad de memoria RAM de 8 Kilobytes, utilizaban 8
de estos circuitos. Actualmente, son comunes computadores personales y de escritorio con
capacidades de 1 y 2 Gigabytes de memoria RAM.
•Memoria de cache. Es una memoria RAM con tiempo de «acceso» muy rápido donde se mantienen
los datos más utilizados durante la ejecución de un programa. El objetivo de esta memoria, en la
arquitectura de un computador, es acelerar la velocidad de procesamiento de la información.
Unidad de control
La unidad de control se encarga de la interpretación y ejecución de las instrucciones del programa.
También controla todos los componentes de un computador por medio de líneas de conexión
llamadas bases.
Esta unidad es el elemento central de toda la máquina y se encarga de enviar señales de coordinación
a todas las demás unidades. Podría compararse, en un momento dado, con el gerente de una empresa
o con el director de una orquesta.
Por ejemplo, una impresora escribirá información en el papel si específicamente se le instruye para
que lo haga. Esto se logra por medio de una "instrucción" como "imprima" o "escriba", que el
computador debe ejecutar. El cumplimiento o ejecución de esta instrucción necesita un tráfico de
señales binarias entre la impresora y el computador. La coordinación de esta importante tarea la lleva
a cabo la unidad de control.
Por ejemplo, si se desea sumar dos números almacenados en dos posiciones de memoria, estos se
deben traer a la unidad aritmética donde se lleva a cabo la operación. El resultado se almacena
nuevamente en una posición de memoria.
Las principales operaciones aritméticas realizadas en la ALU son la suma, la resta y el complemento
a dos. Las principales operaciones lógicas son la AND, la OR, la NOT, la OR, la EXOR y la
comparación.
También realiza esta unidad operaciones con los registros internos como desplazamiento, rotación y
traslado de información digital.
El rapidísimo avance de esta tecnología hace que un microcomputador de hoy sea mucho más
poderoso que un minicomputador del año anterior, dejando un poco obsoleta esta clasificación.
Buses
En el diagrama de la figura 714 podemos observar que los diferentes bloques del sistema se conectan
entre sí por medio de unas flechas gruesas y otras delgadas. A estas líneas se les llama buses. Un bus
es un conjunto de líneas que llevan o traen señales digitales de un circuito a otro.
Las líneas y el sentido de las flechas indican las rutas existentes entre las seis unidades para el
intercambio mutuo de información. En los sistemas con microprocesadores existen generalmente tres
buses: direcciones, datos y control. La estructura de buses de los microcomputadores se analiza en
detalle en la próxima lección.
Brevemente, la unidad de control utiliza el bus de direcciones para determinar, por decodificación, la
posición de memoria o el dispositivo de entrada y salida que participa en una transferencia de
información en un momento dado. El número de líneas del bus de direcciones determina la capacidad
de memoria del sistema y el número de dispositivos de entrada/salida con los cuales puede
comunicarse.
Una vez que la unidad de control ha seleccionado el dispositivo con el cual quiere efectuar una
transferencia de información, utiliza el bus de datos para transportar dicha información. Así, por
medio de este bus, el microprocesador puede enviar o recibir datos de la memoria y también enviar o
recibir señales del mundo exterior a través de las unidades de entrada y salida.
El número de líneas del bus de datos determina lo que se denomina el «ancho» de la palabra de
trabajo de la unidad de procesamiento central o CPU. Son típicas longitudes de palabra de 4, 8, 16,
32, e incluso, 64 bits. Los primeros computadores personales utilizaban un bus de datos de 8 bits,
luego salieron al mercado los equipos de 16 bits y actualmente el bus más utilizado es el de 32 bits*
El bus de control transporta las señales que necesita la unidad de control para coordinar y sincronizar
el funcionamiento de todos los elementos del computador. Cada uno de estos elementos debe
intervenir solamente cuando le corresponda. De lo contrario, el proceso de cómputo sería caótico.
El número de líneas del bus de control varía según el tipo de CPU o microprocesador que se utilice.
Observe que todas las unidades que constituyen el microcomputador comparten el mismo bus de
datos. Esto es posible gracias al empleo de circuitos integrados de tecnología tri-state.
Por el bus de datos solamente circula siempre la información correspondiente al bloque o unidad que
haya sido seleccionado por el bus de direcciones. Como es obvio, si dos unidades de un
microcomputador se seleccionaran para recibir o entregar señales al mismo tiempo, habría un
conflicto de información y el sistema trabajaría erráticamente.
Resumen
De acuerdo a lo estudiado anteriormente, la operación de un computador digital se puede resumir así:
“Lo que lleva, trae, recibe y manda información en el Microcontrolador, son los buses; es importante
entenderlos”
En su forma más elemental, un puerto de entrada está compuesto sólo por un buffer de tercer estado y
con más frecuencia por un buffer de tercer estado junto con un registro de almacenamiento (latch). El
buffer de tercer estado tiene la función de controlar, es decir, aislar o permitir el flujo de información
del puerto al bus de datos del microprocesador. El registro tiene la función de almacenar
temporalmente la información generada por el dispositivo periférico de entrada hasta que pueda ser
leída por el microprocesador.
1.- El microprocesador debe proporcionar señales de control que permitan distinguir entre una
operación con un puerto y una referencia a memoria.
2.- El código de instrucciones debe tener instrucciones especiales con las que se pueda leer (entrada)
o escribir (salida) en los puertos.
Una caracteristicas importante es que las operaciones de entrada y salida usando E/S mapeada a
memoria no están limitadas a los registros internos.
- Como se usan instrucciones especiales para E/S en un programa éstas pueden distinguirse
fácilmente de las instrucciones que hagan referencia a memoria.
- Como sólo se utilizan ocho líneas en el direccionamiento de un puerto, se necesitan menos circuitos
para su decodificación.
- Como el número de puerto se puede representar en un byte, las instrucciones son más cortas.
- Como los puertos están asignados a un espacio separado de la memoria, se tiene disponible la
capacidad total de direccionamiento del microprocesador para circuitos de memoria.
- Se debe dedicar al menos una terminal del circuito integrado del microprocesador para la señal de
control que distingue las operaciones con puertos de las operaciones con memoria.
Por otra parte, el modo de E/S mapeada a memoria tiene como ventaja:
- Permite la utilización de la gran variedad de instrucciones que hacen referencia a la memoria, para
la transferencia de información y la ejecución de operaciones aritméticas o lógicas directamente en
los puertos, sin necesidad de transferir los datos a los registros internos del microprocesador.
- Reduce el número de líneas de control que debe tener el microprocesador.
- Cada puerto implantado de este modo disminuye en uno las direcciones disponibles para memoria.
- Las instrucciones que hacen referencia a la memoria requieren dos bytes para representar la
dirección, por lo tanto son más largas y también puede ser más lentas.
• Se declaran los registros TRISX y PORTX definiendo su posición en la memoria RAM como
variables de C.
• Utilizando las directivas específicas del compilador (#USE FAST_IO, #USE FIXED_IO,
#USE STANDARD_IO).
A través de la RAM
Se definen los registros PORTx y TRISx como bytes y se sitúan en la posición correspondiente de la
memoria RAM. La directiva utilizada de C es #BYTE:
#BYTE variable=constante;
Una vez definidas estas variables se pueden configurar y controlar los puertos a través de los
comandos de asignación.
TRISC = 0x0F; // 4 terminales de mayor peso de salida, 4 terminales de menor peso de entrada
Escritura en los puertos:
Lectura de puertos:
Manejo de sentencias:
TRISD = 0x0F;
Existen unas funciones de C que permiten trabajar bit a bit con los registros o variables definidas
previamente. Estas funciones son las siguientes:
swap (var); // Intercambia los 4 bits de mayor peso por los 4 de menor peso de
// la variable
Se puede declarar un bit de un registro con una variable mediante la directiva #BIT, lo que permite
trabajar directamente con el terminal:
RB4 = 0;
Ejemplo:
Se configuran los terminales RB1 como salida y el RB0 como entrada (con resistencia de pull-up). La
salida debe tener el mismo valor que la entrada. Se utiliza un interruptor en la entrada y un led en la
salida.
#include <18F4550.h>
#fuses XT,NOWDT
void main() {
Bit_clear (portb,1);
else
port_b_pullups (valor); // Mediante valor = TRUE o valor = FALSE habilita o deshabilita las
#define PIN_A0 40
#define PIN_A1 41
// drenador abierto)
input_state(pin*); // Lee el valor del pin sin cambiar el sentido del terminal.
Las funciones output_x() e input_x() dependen de la directiva tipo #USE *_IO que esté activa.
Directivas:
Con la función output_x() se saca el valor al puerto y con la función input_x() se lee el puerto. La
directiva no modifica previamente el registro TRIS correspondiente.
Hay que asegurarse de que los registros TRIS están correctamente definidos. Entonces, el ejemplo
anterior quedaría:
#include <18F4550.h>
#fuses XT,NOWDT
port_b_pullups (TRUE);
set_tris_B(0x01) ;
output_low(P1N_B1) ;
while (1)
if ( input (PIN_B0) == 1 )
output_low(PIN_Bl) ;
else
output_high (PIN_B1) ;
#include <18F4550.h>
#fuses XT,NOWDT
port_b_pullups (TRUE);
output_low(PIN_Bl) ;
while (1)
if (input (PIN_B0) == 1 )
output_low (PIN_B1);
else
output_high (PIN_B1);
}
#USE FIXED_IO (PUERTO_OUTPUTS=pin* , ...) [PUERTO: A...]
El compilador se encarga de generar el código para definir los puertos de acuerdo con la información
que indica la directiva (donde sólo se indican los terminales de salida), sin tener en cuenta si la
operación es de entrada o de salida. Entonces, el ejemplo anterior quedaría:
#include <18F4550.h>
#fuses XT,NOWDT
#use fixed_io(b_outputs=pin_bl) ←
void main() {
port_b_pullups (TRUE);
output_low(PIN_Bl);
while (1)
if (input(PIN_BO) == 1 )
output_low(PIN_Bl) ;
else
output_high (PIN_B1);
Con punteros
En C se puede acceder a la memoria de datos mediante punteros. Los punteros se deben definir como
INT:
int valor
valor = *porta
#include <18F4550.h>
#fuses XT,NOWDT
void main () {
While (1)
else
La configuración de un puerto depende mucho de las prestaciones de los buses ya que estos son los
portadores de los datos en el Microcontrolador:
- Recopilación varia