Microcontroladores Intel MCS-51.
Arquitectura y programación.

José Carlos Campelo Rivadulla, Ángel Fco. Perles Ivars, Francisco Rodríguez Ballester

Departamento de Informática de Sistemas y Computadores
Universidad Politécnica de Valencia

Servicio de Publicaciones SPUPV - 98.927     I.S.B.N.: 84-7721-572-3

NOTA IMPORTANTE: Este libro no lo vamos a reeditar y figura como descatalogado.
Los últimos ejemplares están debajo del mostrador del SPUPV.

llibre51.jpg (21570 bytes)

Presentación         Contenido         Ficheros         Errata y ampliación (html, pdf)


Presentación

Este libro pretende ser la base para que los alumnos de Ingeniería Técnica Electrónica y todo aquel que lo desee pueda sacar el máximo partido a un dispositivo tan ampliamente extendido como es el microcontrolador.

No es éste el momento para explicar las posibilidades del microcontrolador, cosa que se deja para el primer capítulo. Pero si es importante resaltar que muchos de los que se deciden a probar un microcontrolador fracasan debido a la falta de un material literario que conjugue la arquitectura del "micro", las formas de programación más adecuadas y modelos de conexión de dispositivos.

Desde el punto de la arquitectura del microcontrolador, todos los libros son similares. Sin embargo, si a ello se suma la necesidad de programar en código máquina, se está añadiendo un factor de dificultad que enmascara el verdadero objetivo didáctico de las obras sobre microcontroladores.

Esta obra intenta superar esa barrera partiendo de un lenguaje de programación ampliamente conocido y aceptado: el lenguaje C. Con él, se puede sacar casi todo el partido al micro con unas ventajas añadidas: la portabilidad, la facilidad de mantenimiento y la rapidez de desarrollo. No hay que dejarse engañar por estas maravillosas espectativas; si se quiere obtener la máxima eficiencia, la solución pasará inexorablemente por usar ensamblador. Lo mejor está siempre en el punto medio, y en este caso se pueden combinar las dos posibilidades. Se recomienda que una vez asimilados los conceptos de este libro, se opte también por aprender el ensamblador.

La pregunta que queda en el aire es ¿qué micro usar?. La respuesta es fácil: cualquiera. Todos son similares y, cuando se domina uno, es fácil adaptarse a los otros. En el caso de este libro se ha optado por la familia de microcontroladores Intel MCS-51 por ser la más extendida y la que dispone de mayor información. Además, mucha casas comerciales ofrecen sus propias versiones compatibles, por lo que se dispone de un amplio surtido donde elegir, y con el que no pueden competir otros microcontroladores.

Esperamos que este libro abra los ojos a los lectores sobre las inmensas posibilidades de este tipo de dispositivos. El límite lo pone la imaginación.

 

Los autores

Contenido

1. Los microcontroladores

1.1 Introducción
1.2 Tipos de microprocesadores / microcontroladores y sus aplicaciones
1.3 Características generales de un µC de 8 bits
1.4 Principales fabricantes de µC de 8 bits
1.5 Herramientas de desarrollo para µC

2. Arquitectura de la familia MCS-51

2.1 Presentación de la familia MCS-51
2.2 Encapsulado y patillaje de un 8x51
2.3 Circuito de oscilador
2.4 Organización de la memoria

2.4.1 La memoria de programa
2.4.2 La memoria de datos
2.4.2.1 Memoria de datos externa
2.4.2.2 Memoria de datos interna: 128 bytes primeros
2.4.2.3 Área de registros especiales: SFR

2.5 La operación de RESET
2.6 Sistemas completos con el 8x51

2.6.1 Sistema con un 8031
2.6.2 Sistema con un Atmel AT89C2051
2.6.3 Sistema con un Siemens SAB80C535
2.6.4 Sistema ampliado con un 8031
2.6.4.1 Ampliación de entrada/salida

2.7 Revisión de conceptos

3. Uso de los puertos para entrada/salida digital.

3.1 Características generales
3.2 Estructura física de los puertos

3.2.1 Puerto P1
3.2.2 Puerto P0
3.2.3 Puerto P2
3.2.4 Puerto P3

3.3 Conexión de dispositivos a los puertos
3.4 Programación de los puertos

3.4.1 Empleo de máscaras
3.4.1.1 Operaciones de lectura-modificación-escritura
3.4.2 Control funcional con tablas de búsqueda
3.4.3 Aprovechamiento del procesador booleano

3.5 Cuestiones
3.6 Ejercicios prácticos
3.7 Conexión de algunos dispositivos

3.7.1 Un módulo de leds para entrenamiento de salida
3.7.2 Módulo de interruptores para entrada digital
3.7.3 Visualizador BCD con display de 7 segmentos
3.7.4 Visualizadores LCD
    3.7.4.1 Patillaje y conexión hardware
    3.7.4.2 El visualizador
    3.7.4.3 Juego de caracteres
    3.7.4.4 Operaciones sobre el LCD
    3.7.4.4.1 Instrucciones de inicialización
    3.7.4.4.2 Instrucciones de cursor
    3.7.4.4.3 Instrucciones de pantalla
    3.7.4.4.4 Instrucciones de definición de caracteres
    3.7.4.4.5 Encuesta de estado
    3.7.4.5 Operaciones de datos
    3.7.4.6 Software de control del visualizador LCD
3.7.5 Control de relés
3.7.6 Control de un motor paso a paso
    3.7.6.1 Conceptos básicos
    3.7.6.2 Circuitos de driver del motor
    3.7.6.3 Software de control
3.7.7 Teclados matriciales

4. El sistema de interrupciones

4.1 Introducción
4.2 Descripción del sistema de interrupciones

4.2.1 Niveles de prioridad en las interrupciones
4.2.2 Gestión de las interrupciones

4.3 Interrupciones externas INT0 e INT1
4.4 Revisión de conceptos
4.5 Ejercicios prácticos

5. Temporizadores y contadores

5.1 Introducción
5.2 Los timers T0 y T1

5.2.1 Modos 0 y 1. Contador de 13 y 16 bits
5.2.2 Modo 2. Contador de 8 bits con autorrecarga
5.2.3 Modo 3. Timer 0 como dos contadores de 8 bits
5.2.4 Ejemplos: Retardo de precisión y contador

5.3 Interrupciones en los timers

5.3.1 Ejemplo: Modulación PWM

5.4 Revisión de conceptos
5.5 Ejercicios prácticos

6. Comunicaciones serie

6.1 Introducción
6.2 El puerto serie del 8x51

6.2.1 Modo 0: transmisión síncrona, 8 bits, velocidad fija
6.2.2 Modo 1: transmisión asíncrona, 10 bits, velocidad variable
6.2.3 Modo 2: transmisión asíncrona, 11 bits, dos velocidades. Modo 3: velocidad variable
6.2.3.1 Comunicación multiprocesador

6.3 Un interfaz RS-232-C y RS-485

6.3.1 Usando un PC como terminal

6.4 Interrupciones del puerto serie
6.5 Cuestiones
6.6 Ejercicios prácticos

7. Modos de bajo consumo

7.1 Introducción
7.2 Modos de operación de bajo consumo

7.2.1 Modo Idle
7.2.2 Modo Power Down

8. Conexión al mundo analógico

8.1 Introducción
8.2 Conexión de un conversor A/D ADC0820

8.2.1 Ejemplo: Medida de temperatura

A. El compilador IAR-C

A.1 Introducción
A.2 Características generales
A.3 Representación de datos

A.3.1 Punteros
A.3.2 Campos de bits

A.4 Memoria

A.4.1 Modelos de memoria
A.4.2 Almacenamiento de variables locales
A.4.3 Tamaño de la pila
A.4.4 Funciones recursivas
A.4.5 Entrada/Salida mapeada en memoria

A.5 Extensiones a ANSI C

A.5.1 Declaración de variables SFR
A.5.2 Variables de tipo bit
A.5.3 Atributos del tipo de memoria
A.5.4 Funciones de interrupción
A.5.5 Funciones monitor

A.6 Órdenes #pragma

A.6.1 Language #pragma
A.6.2 Memory #pragma
A.6.3 Function #pragma

A.7 Compilación y enlazado de un programa

A.7.1 Opciones de compilación
A.7.2 Enlazado del programa
A.7.3 Ficheros #include para selección de familia

A.8 Consejos para optimización
A.9 Librerias estándar en IAR-C
A.10 Preparación del entorno
A.11 Ejemplo de sesión de trabajo

B. Ampliación de la E/S: Intel 8255

B.1 Introducción
B.2 Descripción funcional del 8255
B.3 Descripción operacional del 8255

B.3.1 Selección del modo de funcionamiento
B.3.2 Puesta a uno o cero individualizada
B.3.3 Funciones de control de interrupciones

B.4 Modos de operación

B.4.1 Modo 0 (Entrada/Salida Básica)
B.4.2 Modo 1 (Entrada/Salida con diálogo)
B.4.3 Modo 2 (Bus bidireccional)
B.4.4 Lectura del puerto C en los modos 1 y 2

C. Tablas resumen

C.1 Memoria interna y SFR
C.2 Sistema de interrupciones

C.2.1 Interrupciones externas

C.3 Timers
C.4 Comunicaciones serie
C.5 Modos de bajo consumo

Archivos