Académique Documents
Professionnel Documents
Culture Documents
tecnologa de fabricacin de los circuitos integrados. Este desarrollo ha permitido construir las centenas de
miles de transistores en un chip. Esto fue una condicin previa para la fabricacin de un microprocesador. Las
primeras microcomputadoras se fabricaron al aadirles perifricos externos, tales como memoria, lneas de
un circuito integrado que contena tanto al procesador como perifricos. As es cmo fue desarrollada la
cierto. Difieren uno del otro en muchos sentidos. La primera y la ms importante diferencia es su
funcionalidad. Para utilizar al microprocesador en una aplicacin real, se debe de conectar con componentes
tales como memoria o componentes buses de transmisin de datos. Aunque el microprocesador se considera
una mquina de computacin poderosa, no est preparado para la comunicacin con los dispositivos
perifricos que se le conectan. Para que el microprocesador se comunique con algn perifrico, se deben
utilizar los circuitos especiales. As era en el principio y esta prctica sigue vigente en la actualidad.
Por otro lado, al microcontrolador se le disea de tal manera que tenga todas las componentes integradas en
el mismo chip. No necesita de otros componentes especializados para su aplicacin, porque todos los
circuitos necesarios, que de otra manera correspondan a los perifricos, ya se encuentran incorporados. As
Para entender con ms facilidad las razones del xito tan grande de los microcontroladores, vamos a prestar
atencin al siguiente ejemplo. Hace unos 10 aos, disear un dispositivo electrnico de control de un
ascensor de un edificio de varios pisos era muy difcil, incluso para un equipo de expertos. Ha pensado
alguna vez en qu requisitos debe cumplir un simple ascensor? Cmo lidiar con la situacin cuando dos o
ms personas llaman al ascensor al mismo tiempo? Cul llamada tiene la prioridad? Cmo solucionar las
cuestiones de seguridad, de prdida de electricidad, de fallos, de uso indebido? Lo que sucede despus de
resolver estos problemas bsicos es un proceso meticuloso de disear los dispositivos adecuados utilizando
un gran nmero de los chips especializados. Este proceso puede tardar semanas o meses, dependiendo de la
complejidad del dispositivo. Cuando haya terminado el proceso, llega la hora de disear una placa de circuito
impreso y de montar el dispositivo.Un dispositivo enorme! Es otro trabajo difcil y tardado. Por ltimo, cuando
todo est terminado y probado adecuadamente, pasamos al momento crucial y es cuando uno se concentra,
Esto suele ser el punto en el que la fiesta se convierte en un verdadero trabajo puesto que los dispositivos
electrnicos casi nunca funcionan apropiadamente desde el inicio. Preprese para muchas noches sin dormir,
correcciones, mejoras... y no se olvide de que todava estamos hablando de cmo poner en marcha un simple
ascensor.
Cuando el dispositivo finalmente empiece a funcionar perfectamente y todo el mundo est satisfecho, y le
paguen por el trabajo que ha hecho, muchas compaas de desarrollo estarn interesadas en su trabajo. Por
supuesto, si tiene suerte, cada da le traer una oferta de trabajo de un nuevo inversionista. Sin embargo, si lo
requieren para trabajar en el control de los elevadores de un nuevo edificio que tiene cuatro pisos ms de los
que ya maneja su sistema de control. Sabe cmo proceder? Cree acaso que se pueden controlar las
demandas de sus clientes? Pensamos que usted va a construir un dispositivo universal que se puede utilizar
en los edificios de 4 a 40 pisos, una obra maestra de electrnica. Bueno, incluso si usted consigue construir
una joya electrnica, su inversionista le esperarar delante de la puerta pidiendo una cmara en el ascensor o
una msica relajante en caso de fallo de ascensor. O un ascensor con dos puertas.
De todos modos, la ley de Murphy es inexorable y sin duda usted no podr tomar ventaja a pesar de todos los
esfuerzos que ha hecho. Por desgracia, todo lo que se ha dicho hasta ahora sucede en la realidad. Esto es lo
que dedicarse a la ingeniera electrnica realmente significa. Es as como se hacan las cosas hasta
aparicin de los microcontroladores diseados - pequeos, potentes y baratos. Desde ese momento su
programacin dej de ser una ciencia, y todo tom otra direccin ...
El dispositivo electrnico capaz de controlar un pequeo submarino, una gra o un ascensor como el
anteriormente mencionado, ahora est incorporado en un slo chip. Los microcontroladores ofrecen una
amplia gama de aplicaciones y slo algunas se exploran normalmente. Le toca a usted decidir qu quiere que
haga el microcontrolador y cargar un programa en l con las instrucciones apropiadas. Antes de encender el
dispositivo es recomendable verificar su funcionamiento con ayuda de un simulador. Si todo funciona como es
debido, incorpore el microcontrolador en el sistema. Si alguna vez necesita cambiar, mejorar o actualizar el
programa, hgalo. Hasta cundo? Hasta quedar satisfecho. Eso puede realizarse sin ningn problema.
Saba usted que todas las personas pueden ser clasificadas en uno de 10 grupos, en los que estn
familiarizados con el sistema de numeracin binario y en los que no estn familiarizados con l. Si no
entendi lo anterior significa que todava pertenece al segundo grupo. Si desea cambiar su estado, lea el
siguiente texto que describe brevemente algunos de los conceptos bsicos utilizados ms tarde en este libro
(slo para estar seguro de que estamos hablando en los mismos trminos).
1.2 NMEROS, NMEROS, NMEROS...
La matemtica es una gran ciencia! Todo es tan lgico y simple... El universo de los nmeros se puede
describir con slo diez dgitos. No obstante, realmente tiene que ser as? Necesitamos exactamente esos
10 dgitos? Por supuesto que no, es slo cuestin del hbito. Acurdese de las lecciones de la escuela. Por
ejemplo, qu significa el nmero 764? Cuatro unidades, seis decenas y siete centenas. Muy simple! Se
podra expresar de una forma ms desarrollada? Por supuesto que s: 4 + 60 + 700. An ms desarrollado?
S: 4*1 + 6*10 + 7*100. Podra este nmero parecer un poco ms cientfico? La respuesta es s otra vez:
4*100 + 6*101 + 7*102. Qu significa esto realmente? Por qu utilizamos exactamente estos nmeros 100,
101 y 102 ? Por qu es siempre el nmero 10? Es porque utilizamos 10 dgitos diferentes (0, 1, 2...8, 9). En
otras palabras, es porque utilizamos el sistema de numeracin en base 10, es decir el sistema de numeracin
decimal.
SISTEMA DE NUMERACIN BINARIO
Qu pasara si utilizramos slo dos nmeros 0 y 1? Si slo pudiramos afirmar (1) o negar (0) que algo
existe. La respuesta es nada especial, seguiramos utilizando los mismos nmeros de la misma manera que
utilizamos hoy en da, no obstante ellos pareceran un poco diferentes. Por ejemplo: 11011010.Cuntas son
realmente 11011010 pginas de un libro? Para entenderlo, siga la misma lgica como en el ejemplo anterior,
pero en el orden invertido. Tenga en cuenta que se trata de aritmtica con slo dos dgitos 0 y 1, es decir, del
diferencia entre estas dos representaciones yace en el nmero de dgitos necesarios para escribir un nmero.
Un dgito (2) se utiliza para escribir el nmero 2 en el sistema decimal, mientras que dos dgitos (1 y 0) se
utilizan para escribir aquel nmero en el sistema binario. Ahora est de acuerdo que hay 10 grupos de
gente? Bienvenido al mundo de la aritmtica binaria! Tiene alguna idea de dnde se utiliza?
complicados no pueden especificar con exactitud la diferencia entre dos magnitudes (dos valores de voltaje,
por ejemplo), si son demasiado pequeos (ms pequeos que unos pocos voltios). La razn son los ruidos
elctricos y fenmenos que se presentan dentro de lo que llamamos entorno de trabajo real (algunos
ejemplos de estos fenmenos son los cambios imprevisibles de la tensin de alimentacin, cambios de
temperatura, tolerancia a los valores de los componentes etc...). Imagnese una computadora que opera sobre
nmeros decimales al tratarlos de la siguiente manera: 0=0V, 1=5V, 2=10V, 3=15V, 4=20V... 9=45V!?
Una solucin mucho ms fcil es una lgica binaria donde 0 indica la ausencia de voltaje, mientras que 1
indica la presencia de voltaje. Simplemente, es fcil de escribir 0 o 1 en vez de no hay voltaje o hay
voltaje. Mediante el cero lgico (0) y uno lgico (1) la electrnica se enfrenta perfectamente y realiza con
facilidad todas las operaciones aritmticas. Evidentemente, se trata de electrnica que en realidad aplica
aritmtica en la que todos los nmeros son representados con slo dos dgitos y donde slo es importante
saber si hay voltaje o no. Por supuesto, estamos hablando de electrnica digital.
En el principio del desarrollo de las computadoras era evidente que a la gente le costaba mucho trabajar con
nmeros binarios. Por eso, se estableci un nuevo sistema de numeracin, que utilizaba 16 smbolos
diferentes. Es llamado el sistema de numeracin hexadecimal. Este sistema est compuesto de 10 dgitos a
los que estamos acostumbrados (0, 1, 2, 3,... 9) y de seis letras del alfabeto A, B, C, D, E y F. Cul es el
propsito de esta combinacin aparentemente extraa? Basta con mirar cmo todo en la historia de los
nmeros binarios encaja perfectamente para lograr una mejor comprensin del tema.
El mayor nmero que puede ser representado con 4 dgitos binarios es el nmero 1111. Corresponde al
nmero 15 en el sistema decimal. En el sistema hexadecimal ese nmero se representa con slo un dgito F.
equivalencias? El mayor nmero escrito con ocho dgitos binarios es a la vez el mayor nmero de dos dgitos
en el sistema hexadecimal. Tenga en cuenta que una computadora utiliza nmeros binarios de 8 dgitos.
CDIGO BCD
El cdigo BCD (Binary-Coded Decimal - Cdigo binario decimal) es un cdigo binario utilizado para
representar a los nmeros decimales. Se utiliza para que los circuitos electrnicos puedan comunicarse con
los perifricos utilizando el sistema de numeracin decimal o bien utilizando el sistema binario dentro de su
propio mundo. Consiste en nmeros binarios de 4 dgitos que representan los primeros diez dgitos (0, 1, 2,
3...8, 9). Aunque cuatro dgitos pueden hacer 16 combinaciones posibles en total, el cdigo BCD normalmente
El sistema de numeracin binario es el que utilizan los microcontroladores, el sistema decimal es el que nos
resulta ms comprensible, mientras que el sistema hexadecimal presenta un balance entre los dos. Por eso,
es muy importante aprender cmo convertir los nmeros de un sistema de numeracin a otro, por ejemplo,
cmo convertir una serie de ceros y unos a una forma de representacin comprensible para nosotros.
CONVERSIN DE NMEROS BINARIOS A DECIMALES
Los dgitos en un nmero binario tienen ponderaciones diferentes lo que depende de sus posiciones dentro
del nmero que estn representando. Adems, cada dgito puede ser 1 o 0, y su ponderacin se puede
determinar con facilidad al contar su posicin empezando por la derecha. Para hacer una conversin de un
nmero binario a decimal es necesario multiplicar las ponderaciones con los dgitos correspondientes (0 o 1) y
sumar todos los resultados. La magia de la conversin de un nmero binario a decimal funciona de maravilla...
Cabe destacar que es necesario utilizar slo dos dgitos binarios para representar a todos los nmeros
decimales de 0 a 3. Por consiguiente, para representar los nmeros de 0 a 7 es necesario utilizar tres dgitos
binarios, para representar los nmeros de 0 a 15 - cuatro dgitos etc. Dicho de manera sencilla, el mayor
nmero binario que se puede representar utilizando n dgitos se obtiene al elevar la base 2 a la potencia n.
24 - 1 = 16 - 1 = 15
Por consiguiente, al utilizar 4 dgitos binarios, es posible representar los nmeros decimales de 0 a 15, que
Para realizar una conversin de un nmero hexadecimal a decimal, cada dgito hexadecimal debe ser
multiplicado con el nmero 16 elevado al valor de su posicin. Por ejemplo:
CONVERSIN DE NMEROS HEXADECIMALES A BINARIOS
No es necesario realizar ningn clculo para convertir un nmero hexadecimal a binario. Los dgitos
hexadecimales se reemplazan simplemente por los cuatro dgitos binarios apropiados. Ya que el dgito
hexadecimal mximo es equivalente al nmero decimal 15, es necesario utilizar cuatro dgitos binarios para
El sistema de numeracin hexadecimal, junto con los sistemas binario y decimal, se consideran los ms
importantes para nosotros. Es fcil realizar una conversin de cualquier nmero hexadecimal a binario,
adems es fcil de recordarlo. Sin obstante, estas conversiones pueden provocar una confusin. Por ejemplo,
qu significa en realidad la sentencia: Es necesario contar 110 productos en una cadena de montaje?
Dependiendo del sistema en cuestin (binario, decimal o hexadecimal), el resultado podra ser 6, 110 o 272
productos, respectivamente. Por consiguiente, para evitar equivocaciones, diferentes prefijos y sufijos se
aaden directamente a los nmeros. El prefijo $ o 0x as como el sufijo h marca los nmeros en el sistema
hexadecimal. Por ejemplo, el nmero hexadecimal 10AF se puede escribir as: $10AF, 0x10AF o 10AFh. De
manera similar, los nmeros binarios normalmente obtienen el sufijo % o 0B. Si un nmero no tiene ni sufijo ni
prefijo se considera decimal. Desafortunadamente, esta forma de marcar los nmeros no es estandarizada,
La siguiente es tabla comparativa que contiene los valores de nmeros 0-255 representados en tres sistemas
de numeracin diferentes. Esto es probablemente la manera ms fcil de entender lgica comn aplicada a
Como ya hemos visto, para escribir un nmero negativo en matemticas, basta con aadirle el prefijo -
(signo menos). Sin embargo, en la programacin, al acabarse el proceso de la compilacin, se quedan slo
los nmeros binarios, volvindose las cosas ms complicadas. Se utilizan slo dos dgitos - 0 y 1, mientras
que todos los dems nmeros, smbolos y signos se forman por medio de las combinaciones de estos dos
dgitos. En el caso de los nmeros negativos, la solucin es la siguiente: En los nmeros negativos, el bit ms
significativo (el bit del extremo izquierdo) representa el signo del nmero (donde 0 ser positivo y 1 negativo).
En el caso de un nmero de 8 bits, para representar un valor numrico slo quedan 7 bits. De acuerdo a este
tipo de codificacin el nmero +127 es el mayor nmero positivo con signo que se puede representar con 8
bits. Asimismo, hay cero (0) positivo y negativo (refirase a la tabla de la derecha). La siguiente pregunta
sera: Cmo es posible saber de qu nmero se trata? Por ejemplo, si ponemos el nmero 10000001, es -1
o 129? No se preocupe, de eso se encarga el compilador. sta es la razn por la que se declaran variables al
La teora dice que un bit es la unidad bsica de informacin...Vamos a olvidarlo por un momento y demostrar
qu es eso en la prctica. La respuesta es - nada especial- un bit es un slo dgito binario. Similar a un
sistema de numeracin decimal en el que los dgitos de un nmero no tienen la misma ponderacin (por
ejemplo, los dgitos en el nmero 444 son los mismos pero tienen los valores diferentes), el significado de un
bit depende de la posicin que tiene en nmero binario. En este caso no tiene sentido hablar de unidades,
centenas etc. en los nmeros binarios, sus dgitos se denominan el bit cero (el primer bit a la derecha), el
primer bit (el segundo bit a la derecha) etc. Adems, ya que el sistema binario utiliza solamente dos dgitos (0
No se confunda si se encuentra con un bit que tiene el valor 4, 16 o 64. Son los valores representados en el
sistema decimal. Simplemente, nos hemos acostumbrado tanto a utilizar los nmeros decimales que estas
expresiones llegaron a ser comunes. Sera correcto decir por ejemplo, el valor del sexto bit en cualquier
nmero binario equivale al nmero decimal 64. Pero todos somos humanos y los viejos hbitos mueren
BYTE
Un byte consiste en 8 bits colocados uno junto al otro. Si un bit es un dgito, es lgico que los bytes
representen los nmeros. Todas las operaciones matemticas se pueden realizar por medio de ellos, como
por medio de los nmeros decimales comunes. Similar a los dgitos de cualquier nmero, los dgitos de un
byte no tienen el mismo significado. El bit del extremo izquierdo tiene la mayor ponderacin, por eso es
denominado el bit ms significativo (MSB). El bit del extremo derecho tiene la menor ponderacin, por eso es
denominado el bit menos significativo (LSB). Puesto que los 8 dgitos de un byte se pueden combinar de 256
maneras diferentes, el mayor nmero decimal que se puede representar con un byte es 255 (una combinacin
representa un cero).
Un nibble o un cuarteto representa una mitad de byte. Dependiendo de la mitad del nmero en cuestin
Usted seguramente ha pensado alguna vez en cmo es la electrnica dentro de un circuito integrado digital,
un microcontrolador o un microprocesador. Cmo son los circuitos que realizan las operaciones matemticas
complicadas y toman decisiones? Saba que sus esquemas, aparentemente complicadas consisten en slo
britnico George Boole en la mitad del siglo 19 - es decir, antes de la invencin de la primera bombilla! En
breve, la idea principal era de expresar las formas lgicas por medio de las funciones algebraicas. Tal idea
pronto se transform en un producto prctico que se convirti ms tarde en lo que hoy en da conocemos
como circuitos lgicos Y (AND), O (OR) o NO (NOT). El principio de su funcionamiento es conocido como
algebra de Boole.
CIRCUITOS LGICOS
Algunas instrucciones de programa utilizadas por un microcontrolador funcionan de la misma manera que las
compuertas lgicas, pero en forma de comandos. A continuacin vamos a explicar el principio de su
funcionamiento.
COMPUERTA Y (AND)
Una compuerta lgica Y dispone de dos o ms entradas y de una salida. En este caso la
compuerta utilizada dispone de slo dos entradas. Un uno lgico (1) aparecer en su salida slo en
caso de que ambas entradas (A Y B) sean llevadas a alto (1). La tabla a la derecha es la tabla de
verdad que muestra la relacin entre las entradas y salidas de la compuerta. El principio de
funcionamiento es el mismo cuando la compuerta disponga de ms de dos entradas: la salida
proporciona un uno lgico (1) slo si todas las entradas son llevadas a alto (1).
Cualquier otra combinacin de voltajes de entrada proporcionar un cero lgico (0) en su salida.
Utilizada en el programa, la operacin Y lgico es realizada por una instruccin de programa, de la
que vamos a hablar ms tarde. Por ahora basta con conocer que Y lgico en un programa se
refiere a la realizacin de este tipo de operacin sobre los bits correspondientes de dos registros
diferentes.
COMPUERTA O (OR)
COMPUERTA NO (NOT)
La compuerta lgica NO dispone de una sola entrada y una sola salida, por lo que funciona muy simplemente.
Cuando un cero lgico (0) aparezca en su entrada, la salida proporciona un uno lgico (1) y viceversa. Esto
significa que esta compuerta invierte las seales por s mismas y por eso es denominada inversor.
En el programa la operacin lgica NO se realiza sobre un byte. El resultado es un byte con los bits
invertidos. Si los bits de un byte se consideran nmero, el valor invertido es un complemento a ese
nmero. El complemento de un nmero es el valor que se aade al nmero hasta llegar al mayor
nmero binario de 8 dgitos. En otras palabras, la suma de un dgito de 8 nmeros y de su
complemento es siempre 255.
COMPUERTA XOR (O EXCLUSIVA)
En el programa, esta operacin se utiliza con frecuencia para comparar dos bytes. La resta se
puede utilizar con el mismo propsito (si el resultado es 0, los bytes son iguales). A diferencia de la
resta, la ventaja de esta operacin lgica es que no es posible obtener los resultados negativos.
REGISTROS
Un registro o una celda de memoria es un circuito electrnico que puede memorizar el estado de un byte.
REGISTROS SFR
A diferencia de los registros que no tienen ninguna funcin especial y predeterminada, cada microcontrolador
dispone de un nmero de registros de funciones especiales (SFR), con la funcin predeterminada por el
fabricante. Sus bits estn 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. Imagnese ocho interruptores que manejan el funcionamiento de
un circuito pequeo dentro del microcontrolador. Los registros SFR hacen exactamente lo mismo.
En otras palabras, el estado de los bits de registros se fija dentro de programa, los registros SFR
dirigen los pequeos circuitos dentro del microcontrolador, estos circuitos se conectan por los pines
del microcontrolador a un dispositivo perifrico utilizado para... Bueno, depende de usted.
Para hacer til un microcontrolador, hay que conectarlo a un dispositivo externo, o sea, a un perifrico. Cada
microcontrolador. Por qu se denominan como puertos de entrada/salida? Porque usted puede cambiar la
funcin de cada pin como quiera. Por ejemplo, usted desea que su dispositivo encienda y apague los tres
seales LEDs y que simultneamente monitoree el estado lgico de 5 sensores o botones de presin. 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
Una de las caractersticas ms importantes de los pines de entrada/salida (E/S) es la corriente mxima que
para activar un LED u otro dispositivo de baja corriente (10-20mA). Mientras ms pines de E/S haya, ms baja
es la corriente mxima de un pin. En otras palabras, todos los puertos de E/S comparten la corriente mxima
conectan los pines al polo positivo del voltaje de la fuente de alimentacin y su efecto se puede ver al
configurar el pin como una entrada conectada a un interruptor mecnico o a un botn de presin. 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 el microcontrolador. Por ejemplo, al
escribir un uno lgico (1) a un bit del registro de control (SFR), el pin apropiado del puerto se configura
automticamente como salida. Eso significa que el voltaje llevado a ese pin se puede leer como 0 o 1 lgico.
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.
UNIDAD DE MEMORIA
La unidad de memoria es una parte del microcontrolador utilizada para almacenar los datos. La manera ms
fcil de explicarlo es compararlo con un armario grande con muchos cajones. Si marcamos los cajones
claramente, ser fcil acceder a cualquiera de sus contenidos al leer la etiqueta en la parte delantera del
cajn.
De manera similar, cada direccin de memoria corresponde a una localidad de memoria. El
contenido de cualquier localidad se puede leer y se le puede acceder al direccionarla. La memoria
se puede escribir en la localidad o leer.
La memoria ROM se utiliza para guardar permanentemente el programa que se est ejecutando. El tamao
de programa que se puede escribir depende del tamao 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. Por ejemplo, si usted es principiante, su programa exceder pocas
veces el lmite de varios cientos de instrucciones. Hay varios tipos de memoria ROM.
La ROM enmascarada es un tipo de ROM cuyo contenido es programado por el fabricante. El trmino de
mscara viene del proceso de fabricacin, donde las partes del chip se plasman en las mascaras utilizadas
durante el proceso de fotolitografa. En caso de fabricacin de grandes series, el precio es muy bajo. Olvide la
idea de modificarla...
OTP ROM (One Time Programmable ROM) - ROM programable una sola vez
La memoria programable una sola vez permite descargar un programa en el chip, pero como dice su nombre,
una sola vez. Si se detecta un error despus de descargarlo, lo nico que se puede hacer es descargar el
UV EPROM (UV Erasable Programmable ROM) - ROM programable borrable por rayos ultravioleta
El encapsulado de este microcontrolador tiene una ventana reconocible en la parte alta. Eso
permite exponer la superficie del chip de silicio a la luz de ultravioleta y borrar el programa
completamente en varios minutos. Luego es posible descargar un nuevo programa en l.
La instalacin de esta ventana es complicada, lo que por supuesto afecta al precio. Desde nuestro
punto de vista, desgraciadamente, de manera negativa...
Memoria Flash
Este tipo de memoria se invent en los aos 80 en los laboratorios de la compaa INTEL, como forma
desarrollada de la memoria UV EPROM. Ya que es posible escribir y borrar el contenido de esta memoria
prcticamente un nmero ilimitado de veces, los microcontroladores con memoria Flash son perfectos para
estudiar, experimentar y para la fabricacin en pequea escala. Por la gran popularidad de esta memoria, la
mayora de los microconroladores se fabrican con tecnologa flash hoy en da. Si usted va a comprar un
Al apagar la fuente de alimentacin, 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. Por ejemplo, si el programa ejecuta la adicin (de cualquier cosa) es necesario tener un
registro que representa lo que se llama suma en vida cotidiana. Con tal propsito, uno de los registros de la
El contenido de la EEPROM se puede cambiar durante el funcionamiento (similar a la RAM), pero se queda
tanto, la EEPROM se utiliza con frecuencia para almacenar los valores creados durante el funcionamiento,
que tienen que estar permanentemente guardados. Por ejemplo, si usted ha diseado una llave electrnica o
un alarma, sera estupendo permitir al usuario crear e introducir una contrasea por su cuenta. Por supuesto,
la nueva contrasea tiene que estar guardada al apagar la fuente de alimentacin. En tal caso una solucin
INTERRUPCIN
La mayora de programas utilizan interrupciones durante ejecucin de programa regular. El propsito del
cuando ocurre algo, el microcontrolador reacciona de alguna manera... Por ejemplo, al apretar el botn del
bajando el volumen etc. Si el microcontrolador pasar la mayora del tiempo comprobando varios botones sin
algn pin o bit, el microconrolador deja su trabajo de esperar a un experto que reaccionar slo en caso de
La seal que informa al procesador central acerca de tal acontecimiento se denomina INTERRUPCIN.
Como indica su nombre, esto es una unidad que controla todos los procesos dentro del microcontrolador.
BUS
El bus est formado por 8, 16 o ms cables. Hay dos tipos de buses: el bus de direcciones y el bus de datos.
El bus de direcciones consiste en tantas lneas como sean necesarias para direccionar la memoria. Se utiliza
para transmitir la direccin de la CPU a la memoria. El bus de datos es tan ancho como los datos, en este
caso es de 8 bits o lneas de ancho. Se utiliza para conectar todos los circuitos dentro del microcontrolador.
COMUNICACIN EN SERIE
La conexin paralela entre el microcontrolador y los perifricos a travs de los puertos de entrada/salida es
una solucin perfecta para las distancias cortas - hasta varios metros. No obstante, en otros casos cuando es
necesario establecer comunicacin entre dos dispositivos a largas distancias no es posible utilizar la conexin
Hoy en da, la mayora de los microcontroladores llevan incorporados varios sistemas diferentes para la
comunicacin en serie, como un equipo estndar. Cul de estos sistemas se utilizar en un caso concreto,
Una de las cosas ms importantes en cuanto a la comunicacin en serie es el Protocolo que debe ser
estrictamente observado. Es un conjunto de reglas que se aplican obligatoriamente para que los dispositivos
puedan interpretar correctamente los datos que intercambian mutuamente. Afortunadamente, los
La velocidad de transmisin serial (baud rate) es el trmino utilizado para denotar el nmero de bits
transmitidos por segundo [bps]. Fjese que este trmino se refiere a bits, y no a bytes! El protocolo
normalmente requiere que cada byte se transmita junto con varios bits de control. Eso quiere decir que un
byte en un flujo de datos serial puede consistir en 11 bits. Por ejemplo, si velocidad de transmisin serial es
Circuito inter-integrado es un sistema para el intercambio de datos serial entre los microcontroladores y los
circuitos integrados especializados de generacin. Se utiliza cuando la distancia entre ellos es corta (el
receptor y el transmisor estn normalmente en la misma placa de circuito impreso). La conexin se establece
por medio de dos lneas - una se utiliza para transmitir los datos, mientras que la otra se utiliza para la
sincronizacin (la seal de reloj). Como se muestra en la figura, un dispositivo es siempre el principal (master -
maestro), el que realiza el direccionamiento de un chip subordinado (slave - esclavo) antes de que se inicie la
comunicacin. De esta manera un microcontrolador puede comunicarse con 112 dispositivos diferentes. La
velocidad de transmisin serial es normalmente 100 Kb/seg (el modo estndar) o 10 Kb/seg (modo de
velocidad de transmisin baja). Recientemente han aparecido los sistemas con la velocidad de transmisin
serial 3.4 Mb/sec. La distancia entre los dispositivos que se comunican por el bus I2C est limitada a unos
metros.
Un bus serial de interfaz de perifricos es un sistema para la comunicacin serial que utiliza hasta cuatro
lneas (normalmente solo son necesarias tres) - para recibir los datos, para transmitir los datos, para
sincronizar y (opcional) para seleccionar el dispositivo con el que se comunica. Esto es la conexin full duplex,
Este tipo de conexin es asncrona, lo que significa que no se utiliza una lnea especial para transmitir la seal
de reloj. En algunas aplicaciones este rasgo es crucial (por ejemplo, en mandar datos a distancia por RF o por
luz infrarroja). Puesto que se utiliza slo una lnea de comunicacin, tanto el receptor como el transmisor
reciben y envan los datos a velocidad misma que ha sido predefinida para mantener la sincronizacin
necesaria. Esto es una manera simple de transmitir datos puesto que bsicamente representa una conversin
OSCILADOR
Los pulsos uniformes generados por el oscilador permiten el funcionamiento armnico y sncrono
de todos los circuitos del microcontrolador. El oscilador se configura normalmente de tal manera
que utilice un cristal de cuarzo o resonador cermico para estabilizacin de frecuencia. Adems,
puede funcionar como un circuito autnomo (como oscilador RC). Es importante decir que las
instrucciones del programa no se ejecutan a la velocidad impuesta por el mismo oscilador sino
varias veces ms despacio. Eso ocurre porque cada instruccin se ejecuta en varios ciclos del
oscilador. En algunos microcontroladores se necesita el mismo nmero de ciclos para ejecutar
todas las instrucciones, mientras que en otros el tiempo de ejecucin 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 ejecucin de una instruccin de programa no es 50 nS, sino 200, 400 o 800 nS
dependiendo del tipo del microcontrolador.
CIRCUITO DE ALIMENTACIN
Hay que mencionar dos cosas dignas de atencin con relacin al circuito de la fuente de alimentacin de
microcontroladores:
El oscilador del microcontrolador utiliza cristal de cuarzo para su funcionamiento. Aunque no se trata de la
solucin ms simple, hay muchas razones para utilizarlo. La frecuencia del oscilador es definida con precisin
y muy estable, as que siempre genera los pulsos del mismo ancho, lo que los hace perfectos para medicin
de tiempo. Tales osciladores se utilizan en los relojes de cuarzo. Si es necesario medir el tiempo transcurrido
entre dos eventos, basta con contar los pulsos generados por este oscilador. Esto es exactamente lo que
hace el temporizador.
La mayora de los programas utiliza estos cronmetros electrnicos en miniatura. Generalmente son registros
SFR de 8 o 16 bits cuyo contenido se aumenta automticamente con cada pulso. Una vez que se llena el
Si el temporizador utiliza el oscilador de cuarzo interno para su funcionamiento, es posible medir el tiempo
entre dos eventos (el valor de registro en el momento de iniciar la medicin es T1, en el momento de finalizar
la medicin es T2, el tiempo transcurrido es igual al resultado de la resta T2 - T1). Si los registros se aumentan
con los pulsos que vienen de la fuente externa, tal temporizador se convierte en un contador.
En prctica, los pulsos generados por el oscilador de cuarzo son llevados al circuito una vez por cada ciclo de
mquina directamente o por el pre-escalador, lo que aumenta el nmero en el registro del temporizador. Si
una instruccin (un ciclo de mquina) dura cuatro perodos del oscilador de cuarzo, este nmero ser
cambiado un milln de veces por segundo (cada microsegundo) al incorporar al cuarzo que oscila con una
frecuencia de 4 MHz.
Es fcil de medir los intervalos de tiempo cortos de la manera descrita anteriormente (hasta 256
microsegundos porque es el mayor nmero que un registro puede contener). Esta obvia desventaja se puede
superar de varias maneras: al utilizar el oscilador ms lento, por medio de registros con ms bits, del pre-
escalador o de la interrupcin. Las primeras dos soluciones tienen algunas debilidades as que se recomienda
Un pre-escalador es un dispositivo electrnico utilizado para dividir la frecuencia por un factor predeterminado.
Esto quiere decir que se necesita llevar 1, 2, 4 o ms pulsos a su entrada para generar un pulso a la salida. La
puede ser cambiada dentro del programa. El pre-escalador se utiliza cuando es necesario medir los perodos
Si el registro del temporizador es de 8 bits, el mayor nmero que se puede escribir en l es 255 (en los
sobreflujo (overflow). Permitido por el programa, el desbordamiento puede provocar una interrupcin, lo que
abre completamente nuevas posibilidades. Por ejemplo, el estado de registros utilizados para contar
segundos, minutos o das puede ser implementado en una rutina de interrupcin. El proceso entero (excepto
la rutina de interrupcin) se lleva a cabo internamente, lo que permite que los circuitos principales del
CONTADORES
Si un temporizador se suministra por los pulsos ingresados por el pin de entrada en el microcontrolador, se
produce un contador. Evidentemente, es el mismo circuito electrnico. La nica diferencia es que los pulsos
para contar se ingresan por el pin de entrada y que su duracin (anchura) no es definida. Por eso, no se
pueden utilizar para medicin de tiempo, sino que se utilizan para otros propsitos, por ejemplo: contar los
productos en la cadena de montaje, nmero de rotaciones del eje de un motor, pasajeros etc. (dependiendo
microcontrolador.
Si el perro guardin est habilitado, cada vez que cuenta hasta el mximo valor en el que ocurre el
desbordamiento del registro se genera una seal de reinicio del microcontrolador y la ejecucin de programa
inicia en la primera instruccin. El punto es evitar que eso ocurra al utilizar el comando adecuado.
La idea se basa en el hecho de que cada programa se ejecuta en varios bucles, ms largos o cortos. Si las
instrucciones que reinician el temporizador perro guardin se colocan en lugares estratgicos del programa,
aparte los comandos que se ejecutan regularmente, el funcionamiento del perro guardin no afectar a la
ejecucin del programa. Si por cualquier razn (ruidos elctricos frecuentes en la industria) el contador de
programa se queda atrapado dentro de un bucle infinito, el valor del registro continuar aumentado por el
temporizador perro guardin alcanzar el mximo valor, el registro se desbordar y, aleluya! Ocurre el
reinicio!
CONVERTIDOR A/D
Las seales del mundo real son muy diferentes de las que entiende el microcontrolador (ceros y
unos), as que deben ser convertidas para que el microcontrolador pueda entenderlas. Un
convertidor analgico-digital es un circuito electrnico encargado de convertir las seales continuas
en nmeros digitales discretos. En otras palabras, este circuito convierte un nmero real en un
nmero binario y se lo enva a la CPU para ser procesado. Este mdulo se utiliza para medir el
voltaje en el pin de entrada.
El resultado de esta medicin es un nmero (el valor digital) utilizado y procesado ms tarde en el programa.
ARQUITECTURA INTERNA
Todos los microcontroladores actuales utilizan uno de dos modelos bsicos de arquitectura
Son dos maneras diferentes del intercambio de datos entre la CPU y la memoria.
Arquitectura de von-Neumann
Los microcontroladores que utilizan la arquitectura von- Neumann disponen de un solo bloque de
memoria y de un bus de datos de 8 bits. Como todos los datos se intercambian por medio de estas
8 lneas, este bus est sobrecargado, y la comunicacin por si misma es muy lenta e ineficaz. La
CPU puede leer una instruccin o leer/escribir datos de/en la memoria. Los dos procesos no
pueden ocurrir a la vez puesto que las instrucciones y los datos utilizan el mismo bus. Por ejemplo,
si alguna lnea de programa dice que el registro de la memoria RAM llamado SUM debe ser
aumentado por uno (instruccin: incf SUMA), el microcontrolador har lo siguiente:
1. Leer la parte de la instruccin de programa que especifica QU es lo que debe realizar (en
este caso es la instruccin para incrementar incf)
2. Seguir leyendo la misma instruccin que especifica sobre CUL dato lo debe realizar (en este
caso es el contenido del registro SUMA)
3. Despus de haber sido incrementado, el contenido de este registro se debe escribir en el
registro del que fue ledo (direccin del registro SUMA)
Los microcontroladores que utilizan esta arquitectura disponen de dos buses de datos diferentes.
Uno es de 8 bits de ancho y conecta la CPU con la memoria RAM. El otro consiste en varias lneas
(12, 14 o 16) y conecta a la CPU y la memoria ROM. Por consiguiente, la CPU puede leer las
instrucciones y realizar el acceso a la memoria de datos a la vez. Puesto que todos los registros de
la memoria RAM son de 8 bits de ancho, todos los datos dentro del microcontrolador que se
intercambian son de la misma anchura. Durante el proceso de la escritura de programa, slo se
manejan los datos de 8 bits. En otras palabras, todo lo que usted podr cambiar en el programa y a
lo que podr afectar ser de 8 bits de ancho. Todos los programas escritos para estos
microcontroladores sern almacenados en la memoria ROM interna del microcontrolador despus
de haber sido compilados a cdigo mquina. No obstante, estas localidades de memoria ROM no
tienen 8, sino 12, 14 o 16 bits. 4, 6 o 8 bits adicionales representan una instruccin que especifica a
la CPU qu hacer con los datos de 8 bits.
Todos los datos en el programa son de un byte (8 bits) de ancho. Como un bus de datos
utilizado para lectura de programa tiene unas lneas ms (12, 14 o 16), tanto la instruccin
como el dato se pueden leer simultneamente al utilizar estos bits adicionales. Por eso,
todas las instrucciones se ejecutan en un ciclo salvo las instrucciones de salto que son de
dos ciclos.
El hecho de que un programa (la ROM) y los datos temporales (la RAM) estn separados,
permite a la CPU poder ejecutar dos instrucciones simultneamente. Dicho de manera
sencilla, mientras que se realiza la lectura o escritura de la RAM (que marca el fin de una
instruccin), la siguiente instruccin se lee por medio de otro bus.
En los microcontroladores que utilizan la arquitectura de von-Neumann, nunca se sabe
cunta memoria ocupar algn programa. Generalmente, la mayora de las instrucciones
de programa ocupan dos localidades de memoria (una contiene informacin sobre QU se
debe realizar, mientras que la otra contiene informa cin sobre CUL dato se debe
realizar). Sin embargo, esto no es una frmula rgida, sino el caso ms frecuente. En los
microcontroladores que utilizan una arquitectura Harvard, el bus de la palabra de programa
es ms ancho que un byte, lo que permite que cada palabra de programa est compuesto
por una instruccin y un dato. En otras palabras, una localidad de memoria - una
instruccin de programa.
JUEGO DE INSTRUCCIONES
En este caso la idea es que el microcontrolador reconoce y ejecuta slo operaciones bsicas (sumar, restar,
copiar etc...) Las operaciones ms complicadas se realizan al combinar stas (por ejemplo, multiplicacin se
lleva a cabo al realizar adicin sucesiva). Es como intentar explicarle a alguien con pocas palabras cmo
llegar al aeropuerto en una nueva ciudad. Sin embargo, no todo es tan oscuro. Adems, el microcontrolador
es muy rpido as que no es posible ver todas las acrobacias aritmticas que realiza. El usuario slo puede
ver el resultado final de todas las operaciones. Por ltimo, no es tan difcil explicar dnde est el aeropuerto si
se utilizan las palabras adecuadas tales como: a la derecha, a la izquierda, el kilmetro etc.
CISC es opuesto a RISC! Los microcontroladores diseados para reconocer ms de 200 instrucciones
diferentes realmente pueden realizar muchas cosas a alta velocidad. No obstante, uno debe saber cmo
utilizar todas las posibilidades que ofrece un lenguaje tan rico, lo que no es siempre tan fcil...
por la eleccin! No obstante, a primera vista, no es fcil la eleccin del microcontrolador ms adecuado como
parece a la primera vista. El problema no es el pequeo rango de dispositivos a elegir, sino todo lo contrario!
cuntas entradas/lneas son necesarias para su funcionamiento, realizara el dispositivo otras operaciones
adems encender/apagar un rel, necesita algn modulo especializado tal como el de comunicacin en serie,
convertidor A/D etc. Cuando usted tiene una clara imagen de lo que quiere, el rango de seleccin se reduce
Si est pensando en todas estas cosas por primera vez, todo le parecer un poco confuso. Por esa razn,
vaya paso a paso. Antes que nada, seleccione al fabricante, es decir, la familia de microcontroladores que
ofrece. Luego, aprenda a trabajar con un modelo particular. Slo aprenda lo que necesite aprender, no entre
demasiado en detalles. Resuelva el problema especfico y le pasar una cosa increble - ser capaz de
Ms o menos, todo se parece a montar en bicicleta: despus de varias cadas inevitables en el principio, ser
capaz de mantener el equilibrio y montar en cualquier otra bicicleta. Por supuesto, nunca se olvida tanto de
Los microcontroladores PIC desarrollados por Microchip Technology son probablemente la mejor opcin si es
El nombre verdadero de este microcontrolador es PICmicro (Peripheral Interface Controller), conocido bajo el
nombre PIC. Su primer antecesor fue creado en 1975 por la compaa General Instruments. Este chip
denominado PIC1650 fue diseado para propsitos completamente diferentes. Diez aos ms tarde, al aadir
una memoria EEPROM, este circuito se convirti en un verdadero microcontrolador PIC. Hace unos pocos
aos la compaa Microchip Technology fabric la 5 billonsima muestra. Si est interesado en aprender ms
If you are interested in learning more about it, just keep on reading.
La idea principal de este libro es proporcionar la informacin necesaria al usuario para que sea capaz de
utilizar los microcontroladores en la prctica despus de leerlo. Para evitar explicaciones pesadas y las
historias infinitas sobre las caractersticas tiles de los microcontroladores diferentes, este libro describe el
funcionamiento de un modelo particular que pertenece a la clase media alta. Es PIC16F887 - bastante
poderoso para ser digno de atencin y bastante simple para poder ser utilizado por cualquiera. As, los
siguientes captulos describen este microcontrolador en detalle y tambin se refieren a la familia PIC entera.
Resolucin
Frecuenci
ROM RAM Entrada del Comparad Temporizadore
Familia Pines a de reloj. Comunica
[Kbytes] [bytes] s A/D convertido ores s de 8/16 bits
[MHz]
r A/D
0.375 -
PIC10FXXX 16 - 24 6-8 4-8 0-2 8 0-1 1x8
0.75
14 -
PIC16FXXX 0.75 - 3 25 - 134 20 0-3 8 0-2 1x8
44
18 -
PIC16HVXXX 1.5 25 20 - - - 1x8
20
14 -
PIC16FXXX 1.75 - 14 64 - 368 20 0 - 13 8 or 10 0-2 1 - 2 x 8 1 x 16 USART
64
14 -
PIC16HVXXX 1.75 - 3.5 64 - 128 20 0 - 12 10 2 2 x 8 1 x 16 USART
20
768 - 28 -
PIC18FXXKXX 8 - 64 64 10 - 13 10 2 1 x 8 3 x 16 USART
3936 44
INSTRUCCIN DESCRIPCIN OPERACIN BANDERA CLK *
programa est conectada a la CPU por ms de 8 lneas. Hay microcontroladores de 12, 14 y 16 bits,
dependiendo de la anchura del bus. La tabla anterior muestra las caractersticas principales de estas tres
categoras.
Como se puede ver en la tabla de la pgina anterior, salvo los monstruos de 16 bits PIC 24FXXX y PIC
24HXXX - todos los microcontroladores tienen la arquitectura Harvard de 8 bits y pertenecen a una de las tres
grandes grupos. Por eso, dependiendo del tamao de palabra de programa existen la primera, la segunda y la
tercera categora de microcontroladores, es decir microcontroladores de 12, 14 o 16 bits. Puesto que disponen
del ncleo similar de 8 bits, todos utilizan el mismo juego de instrucciones y el esqueleto bsico de hardware
Los microcontroladores PIC con palabras de programa de 14 bits parecen ser la mejor opcin para los
JUEGO DE INSTRUCCIONES
El juego de instrucciones para los microcontroladores 16F8XX incluye 35 instrucciones en total. La razn para
un nmero tan reducido de instrucciones yace en la arquietectura RISC. Esto quiere decir que las
instrucciones son bien optimizadas desde el aspecto de la velocidad operativa, la sencillez de la arquitectura y
la compacidad del cdigo. Lo malo de la arquitectura RISC es que se espera del programador que haga frente
a estas instrucciones. Por supuesto, esto es relevante slo si se utiliza el lenguaje ensamblador para la
programacin. Este libro se refiere a la programacin en el lenguaje de alto nivel C, lo que significa que la
mayor parte del trabajo ya fue hecho por alguien ms. As, slo se tienen que utilizar instrucciones
relativamente simples.
Todas las instrucciones se ejecutan en un ciclo. La nicas excepciones pueden ser las instrucciones de
ramificacin condicional o las instrucciones que cambian el contenido del contador de programa. En ambos
casos, dos ciclos de reloj son necesarios para la ejecucin de la instruccin, mientras que el segundo ciclo se
ejecuta como un NOP (No operation). Las instrucciones de un ciclo consisten en cuatro ciclos de reloj. Si se
utiliza un oscilador de 4 MHz, el tiempo nominal para la ejecucin de la instruccin es 1S. En cuanto a las
*1 Si un registro de E/S est modificado, el valor utilizado ser el valor presentado en los pines del
microcontrolador.
*2 Si la instruccin se ejecuta en el registro TMR y si d=1, el pre-escalador ser borrado.