Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ATMega8 y ATMega16.
PROGRAMACIN EN ENSAMBLADOR Y LENGUAJE C
Contenido
CONTENIDO .................................................................................................................................................... I
PRLOGO ....................................................................................................................................................... 1
1.
2.10
3.
EJERCICIOS ...................................................................................................................................... 54
3.3
PROGRAMACIN EN LENGUAJE ENSAMBLADOR .............................................................................. 73
3.3.1 Directiva INCLUDE ................................................................................................................... 74
3.3.2 Directivas CSEG, DSEG y ESEG ............................................................................................... 74
3.3.3 Directiva DB y DW ..................................................................................................................... 75
3.3.4 Directiva EQU ............................................................................................................................ 75
3.3.5 Directiva ORG ............................................................................................................................ 76
3.3.6 Directivas HIGH y LOW ............................................................................................................ 76
3.3.7 Directiva BYTE ........................................................................................................................... 77
3.4
PROGRAMACIN EN LENGUAJE C .................................................................................................... 77
3.4.1 Tipos de Datos ............................................................................................................................ 78
3.4.2 Operadores Lgicos y para el Manejo de Bits ........................................................................... 79
3.4.3 Tipos de Memoria ....................................................................................................................... 79
3.4.3.1
3.4.3.2
3.4.3.3
3.5
PROGRAMAS DE EJEMPLO ................................................................................................................ 81
3.5.1 Parpadeo de un LED .................................................................................................................. 82
3.5.2 Decodificador de Binario a 7 Segmentos ................................................................................... 84
3.5.3 Diseo de una ALU de 4 Bits ...................................................................................................... 86
3.6
RELACIN ENTRE LENGUAJE C Y ENSAMBLADOR ........................................................................... 90
3.7
EJERCICIOS ...................................................................................................................................... 91
4.
ii
4.2.1.2
4.2.1.3
4.2.2
4.2.2.1
4.2.2.2
4.2.2.3
4.2.3
4.2.4
4.2.5
4.2.6
4.2.7.1
4.2.7.2
4.2.7.3
4.2.7.4
4.2.8
4.2.6.1
4.2.6.2
4.2.6.3
4.2.7
4.2.8.1
4.2.8.2
4.2.8.3
iii
6.1.1
6.1.1.1
6.1.1.2
6.1.1.3
6.3.2
6.3.3
6.3.3.1
6.3.3.2
6.3.3.3
6.3.3.4
6.3.3.5
6.3.4
6.3.5
6.3.5.1
6.3.5.2
6.3.5.3
6.3.5.4
6.3.5.5
7.3
BITS DE CONFIGURACIN Y SEGURIDAD........................................................................................ 222
7.4
INTERFAZ JTAG ............................................................................................................................ 224
7.4.1 Organizacin General de la Interfaz JTAG .............................................................................. 225
iv
7.4.2 La Interfaz JTAG y los Mecanismos para la Depuracin en un AVR ...................................... 226
7.5
EJERCICIOS .................................................................................................................................... 228
8.
8.8
9.
9.2.1.6
9.2.1.7
9.2.1.8
9.2.2
9.2.2.1
9.2.2.2
9.2.2.3
9.2.2.4
9.2.2.5
9.2.2.6
9.2.2.7
9.2.2.8
9.3
vi
Prlogo
Comenc a trabajar con microcontroladores en el ao de 1994, precisamente en uno de mis ltimos
cursos de licenciatura. Un microcontrolador tambin suele ser referido como MCU (Micro
Controller Unit), por lo que a lo largo del texto, indistintamente es tratado de una u otra manera.
El primer MCU que utilic fue un 8031, un microcontrolador de 8 bits perteneciente a la familia
MCS-51 de Intel. El 8031 requiere de todo un sistema de acondicionamiento para ser puesto en
marcha. Posteriormente, otros microcontroladores llegaron a mis manos, adquir experiencia
trabajando con el DS5000T, una versin mejorada del 8031, con memoria de programa tipo
NVRAM (RAM no voltil) y un reloj de tiempo real, pero manufacturado por Dallas
Semiconductor. Luego, conoc a la familia de microcontroladores PIC de Microchip, tuve una ligera
experiencia con el HC11 de Motorola y, en los ltimos aos, he trabajado con los
microcontroladores AVR, de ATMEL.
Desde mi incorporacin a la Universidad Tecnolgica de la Mixteca, en 1998, ao con ao he
impartido el curso de microcontroladores, utilizando uno u otro dispositivo, segn la disponibilidad
o requerimientos de las aplicaciones. Con la experiencia adquirida he observado que los
microcontroladores AVR tienen ms recursos en relacin con sus equivalentes en costo de otras
compaas, adems de un rendimiento ms alto.
Por ello, desde el ao 2006 he enfocado mis cursos al manejo de los microcontroladores AVR,
especficamente trabajando con el ATMega8 y el ATMega16. El primer paso para trabajar con estos
dispositivos fue la bsqueda del libro de texto adecuado. Necesitaba un libro que detallara al
hardware y lo vinculara con el software, que sentara las bases para el desarrollo de sistemas y
permitiera a los estudiantes empezar desde cero en los microcontroladores, hasta adquirir ideas
aplicables al desarrollo de sistemas complejos. Y que adems, incluyera aspectos relacionados con
su programacin, tanto en Ensamblador, como en Lenguaje C. Al no encontrarlo, me di a la tarea de
escribirlo.
En este libro pretendo reflejar la experiencia que he adquirido con estos dispositivos. Es un libro de
texto bsico, inicialmente para mis cursos y ms adelante, quizs, tambin sea empleado en otras
universidades o por profesionistas independientes interesados en este apasionante mundo de los
microcontroladores.
Dado que el tema central son los microcontroladores, supongo que los lectores tienen fundamentos
de electrnica digital, esto involucra un conocimiento de sistemas numricos, compuertas lgicas,
registros, memorias, mquinas de estados, etc., incluso algunos aspectos bsicos de programacin
en ensamblador y en Lenguaje C, u otro lenguaje de alto nivel.
Por lo tanto, me enfoco en las caractersticas de los microcontroladores y, slo si es necesario,
profundizo en algn concepto en torno a ellos, pero sin desviarme del tema de inters.
A lo largo del texto, realizo una descripcin del hardware y el software de los microcontroladores
ATMega8 y ATMega16, mostrando cmo los diferentes recursos de hardware pueden ser
manejados en Ensamblador o en Lenguaje C. ste es un aspecto interesante, dado que pretendo
mostrar las ventajas o inconvenientes de desarrollar aplicaciones en diferentes niveles de
programacin. Para todos los recursos internos, he documentado ejemplos completos, los cuales
fueron previamente implementados como prcticas en la Universidad Tecnolgica de la Mixteca.
Dispongo de un captulo dedicado al manejo de dispositivos externos y concluyo con la propuesta
de una metodologa que se puede emplear para construir sistemas con ms requerimientos, la cual
ilustro con el desarrollo de dos sistemas relativamente complejos.
Agradezco a la Universidad Tecnolgica de la Mixteca las facilidades para llevar a cabo la
redaccin de este libro, deseo sea de utilidad para las futuras generaciones de sta y otras
instituciones. Tambin agradezco a todos los alumnos y profesores que, de una u otra manera,
colaboraron en la realizacin y revisin de este texto.
F. Santiago Espinosa
fsantiag@mixteco.utm.mx