Вы находитесь на странице: 1из 29

1.

7 Introduccin a la Familia de Microcontroladores MCS-51


1.7.1 Breve resea histrica
INTEL fue la compaa que desarroll el primer microprocesador en el
mundo, el 4004 en el ao 1971. Este microprocesador, con solo 2300 transistores,
fue el origen de una gran cantidad de dispositivos que se desarrollaron
posteriormente, los cuales integran actualmente ms de un milln de transistores
en un encapsulado. Tampoco podemos olvidar el hecho que INTEL ha
desarrollado microprocesadores tan exitosos como el 8086, el 80286, el 80386, el
80486 y ms recientemente el Pentium; INTEL es, hoy por hoy, uno de los
mayores productores de microprocesadores en el mundo, con un mercado tan
amplio como codiciado, ya que millones de computadores PC tienen instalado un
microprocesador con su marca.
INTEL tambin fabrica microcontroladores de 8 y de 16 bits; cada uno de
ellos tiene amplias posibilidades de utilizacin y prestaciones que los hacen
adecuados para gran cantidad de aplicaciones. Los microcontroladores INTEL han
tenido una gran aceptacin, hasta el punto que otros fabricantes han optado por
producir sus propias versiones de estos dispositivos, como es el caso de
SIEMENS, ATMEL, y PHILIPS. Estos microcontroladores son la parte inteligente
en una gran cantidad de sistemas como:

Control de procesos automticos, de mquinas herramientas,


aparatos de maniobra, de posicin, de velocidad, etctera.

Sistemas de alarma de todo tipo: indicadores y control de nivel,


regulacin de caudal, apertura automtica de dispositivos,
etctera.

Controladores de perifricos como impresoras, modems,


teclados, unidades de disco, plotters, etctera.

Equipos de sonido y televisores donde son tratadas las seales


de audio y video.
Sistemas industriales para el conteo de elementos, la
generacin de bases de tiempo, etctera.

Dentro de los microcontroladores de 8 bits existen dos generaciones: la


primera es la constituida por la familia MSC-48 la cual dio origen a las dems
familias; mientras que la segunda es la conformada por la familia MCS-51 la
primera generacin an est disponible, aunque es un poco ms limitada en
cuanto a capacidades que la segunda.

1.7.2 La familia MCS-51


Los miembros ms populares de los microcontroladores de la familia MCS-51
son: los 8XX1, y ms concretamente, los 8X51. Las diferencias entre estos dos
miembros se muestran en la tabla Tab.1.7.A. Como se puede observar, existen
tres versiones para cada uno: una versin sin ROM, cuyo prefijo es 80 y sufijo 31;
y versiones con ROM, con sufijo 51; la versin EPROM tiene el prefijo 87. Existe
un miembro un poco ms completo de esta familia, el cual cambia el nmero 1 por
el 2 y posee mayor capacidad de ROM, de RAM y de temporizadores/contadores.
Tab.1.7.A. Miembros de la familia MCS-51
SIN ROM

CON ROM

CON
EPROM

ROM
BYTES

RAM
BYTES

TIMERS
16 BITS

INTERRUPCIONES

8031
8032

8051
8052

8751
8752

4K
8K

128
256

2
3

5
6

1.7.3 Caractersticas de los microcontroladores 8X51


La arquitectura bsica de esta familia de microcontroladores se muestra en la
figura Fig.1.7.A.
Fig.1.7.A Configuracin bsica de la familia MCS-51

256 Bytes en el
8052
Timer 0

Control de
Interrupciones

128 Bytes
RAM

ROM

Timer 0
Timer 0

CPU

Oscilador

Bus de
Control

Puerto Serial

4 Puertos I/O

0V
0V

0V

P0

P1

P2

Direcciones / Datos

P3

TxD

RxD

Entradas
del Contador

Sus caractersticas ms importantes son:

CPU de 8 bits, optimizado para aplicaciones de control.


Procesador Booleano (operacin sobre bits).
Espacio de memoria de programas de 64 KBytes.
Espacio de memoria de datos de 64 KBytes.
4 Kbytes de memoria interna de programa.
128 bytes de memoria RAM interna.
32 lneas de entrada salida, direccionables bit a bit.
2 temporizadores/contadores de 16 bits.
Comunicacin asncrona full duplex.
5 fuentes de interrupcin.
Oscilador interno.

1.7.4 Organizacin de la memoria


Todos los dispositivos de la familia MCS-51 tienen separados los espacios de
direcciones de datos y de programas, como se muestra en la figura Fig.1.7.B. La
separacin lgica de ambas memorias permite que a travs de la memoria de
datos se acceda a direcciones de 8 bits, lo cual permite que los datos puedan ser
manipulados y almacenados ms rpidamente por las CPU de 8 bits.
Fig.1.7.B Organizacin de las memorias de Datos y Programa
MEMORIA DE DATOS
(LECTURA / ESCRITURA)

MEMORIA DE PROGRAMA
(SOLO DE LECTURA)

FFFFh
FFFFh

EXTERNA

EXTERNA

1FFFh
FFh
EA = 1
8052

0FFFh
8051

EA = 0
EXTERNA

SFR
8052

7Fh

INTERNA
8051
0000
00

PSEN

00

RD

WR

La Memoria de Programa solamente puede ser leda, no escrita, se pueden


acceder hasta 64 Bytes en las versiones ROM y EPROM los ms bajos 4 KBytes u
8 KBytes estn dentro del chip, dependiendo del tipo de dispositivo. En la versin
sin ROM, toda la memoria de programa es externa. La sincronizacin de la lectura
para la memoria de programa externa es la seal PSEN (Program Store Enable).
La memoria externa de datos puede ser direccionada hasta 64 KBytes y
puede ser escrita o leda, para lo cual la CPU genera las seales WR y RD,
respectivamente.
Las memorias externas de datos y de programa pueden coexistir, si se
desea, aplicando las seales RD y PSEN a las entradas de una compuerta AND y
utilizando la salida de la compuerta como seal de sincronizacin a la memoria
externa de Programa/Datos.
1.7.5 Memoria de programa
La Memoria de Programa puede ser una combinacin de interna y externa o
totalmente externa. En cualquiera de los dos casos anteriores, en la parte baja de
la memoria de programas se encuentra una serie de posiciones de memoria,
especiales para el tratamiento de las interrupciones.
Una interrupcin se describe como una seal que genera un dispositivo, para
indicarle a la CPU que se requiere su atencin. Las interrupciones nacen de la
necesidad de ejecutar un proceso en un instante preciso y ante la existencia de
varias, pueden crearse prioridades entre ellas, de tal forma que una interrupcin
de baja prioridad puede ser interrumpida por una de ms alta, pero no se presenta
el proceso inverso
Las CPU atiende la interrupcin mediante una rutina especial, realizada en el
programa, la cual es llamada rutina de servicio; una vez que la interrupcin es
atendida, la CPU regresa al punto en el cual haba suspendido sus labores, figura
Fig.1.7.C este proceso se lleva a cabo con la ayuda de la memoria RAM interna,
en la cual se almacena provisionalmente la posicin de la instruccin que estaba
por ejecutarse antes del llamado de interrupcin.
Como pueden existir un buen nmero de interrupciones, generadas por
diferentes condiciones de los dispositivos, cada una de ellas debe tener su propia
rutina de servicio localizada en una posicin especfica de la memoria de
programa. Las interrupciones pueden ser internas o externas, dependiendo de si
la fuente que lo origina estar dentro del microcontrolador o por fuera de este.
Como se muestra en la figura Fig.1.7.D, a cada interrupcin se le asigna una
direccin fija de la memoria de programa. La interrupcin hace que la CPU salte a
esta localidad, donde comienza la ejecucin de una rutina de servicio. La posicin
0003H, por ejemplo, est asociada a la interrupcin Externa 0 si la interrupcin
externa va a ser utilizada, la rutina de servicio debe empezar en esta direccin. Si

la rutina no se utiliza, la posicin de memoria puede ser empleada como memoria


de programa
Fig.1.7.C Esquema de una interrupcin

(1) INTERRUPCION

(2) VECTOR DE
INTERRUPCION

(4) RETORNO DE
INTERRUPCION

PROGRAMA PRINCIPAL

(3) RUTINA DE SERVICIO


DE INTERRUPCIN

RTI

Las rutinas de servicio de las interrupciones estn separadas por intervalos


de 8 bytes; si stas no son lo suficientemente cortas, las rutinas pueden utilizar
instrucciones de salto a una zona ms amplia de la memoria de programas, con
capacidad para contener el tratamiento completo a la interrupcin.
Como se ha indicado, la parte baja de la memoria de programa puede ser de
4 KBytes u 8 KBytes, la cual se puede seleccionar dentro de la memoria interna o
la externa. La seleccin se puede realizar mediante la conmutacin del pin EA
(External Access) a Vcc o Gnd; si este pin se conecta a Vcc, la parte baja se
buscar en la memoria interna del microcontrolador; si se conecta a Gnd, lo har
en la memoria externa; en ambos casos, la parte superior de la memoria de
programas (60 KBytes o 56 KBytes) se buscar en la memoria externa. En los
dispositivos sin ROM, este pin debe conectarse a Gnd para que el programa se
ejecute apropiadamente. Una seal de lectura de la ROM externa, PSEN
(Program Store Enable), se utiliza para todas las bsquedas de memoria externa y
no es activada en ningn caso para bsquedas en la memoria interna.

Fig.1.7.D Vectores de Interrupcin en la memoria de programa


0000h

Interrupcin Externa 0

0003h

Timer 0

000Bh

Interrupcin Externa 1

0013h

Timer 1

001Bh

Puerto Serial

0023h

Timer 2

002Bh

0FFFh

En la figura Fig.1.7.E se muestra la configuracin a utilizar para la ejecucin


del programa de memoria externa. Se puede observar que 16 lneas de I/O
(puertos P0 y P2) son dedicados a las funciones de bus durante la ejecucin de la
memoria externa. El puerto P0 es multiplexado en el tiempo como bus de
direcciones y de datos. Este emite la parte baja del contador de programas (PCL)
como una direccin y luego pasa un estado flotante, esperando la llegada del
cdigo proveniente de la memoria de programas.
Fig.1.7.E Configuracin del MCS-51 con memoria externa de Programa

MCS-51
P1

ROM EXTERNA

P0

INSTR

EA
0V

P3

LATCH

ALE

ADDR

P2
PSEN

OE

Durante el tiempo en el cual el byte bajo del contador de programas es


estable en P0, la seal ALE (Address Latch Enable) fija este byte en el cerrojo de
direcciones. Mientras tanto, el puerto P2 emite la parte alta del contador de
programas (PCH). Finalmente, se emite el pulso de sincronizacin PSEN y el
cdigo es ledo por el microcontrolador. El direccionamiento de programas es
siempre de 16 bits de ancho, aunque el total disponible de memoria de programas

sea menor a esta cantidad. La ejecucin de programas externos sacrifica dos de


los cuatro puertos de 8 bits, P0 y P2, para direccin a la memoria de programas.
Las secuencias de bsqueda y ejecucin de las instrucciones no dependen
de la utilizacin de la memoria interna o externa lo que quiere decir que, en ambos
casos, los tiempos de ejecucin sern los mismos.
1.7.6 Ciclo de mquina
En esta familia de microcontroladores, un ciclo de mquina consiste en una
secuencia de seis estados, numerados desde S1 hasta S6. Cada estado est
formado por dos perodos de la seal del reloj, y se denominan fases, P1 y P2; por
lo tanto, un ciclo de mquina, toma 12 periodos de reloj, (figura Fig.1.7.F). Si la
frecuencia de reloj es de 12 MHz, el ciclo mquina tendr una duracin de un
microsegundo.
Fig.1.7.F Ciclo de mquina
S1
P1

P2

S2
P1

P2

S3
P1

P2

S4
P1

P2

S5
P1

P2

S6
P1

P2

CICLO DE MAQUINA

1.7.7 Memoria de datos


La familia MCS-51 puede acceder hasta 64 Kbytes de memoria externa de
datos. La figura Fig.1.7.G muestra la configuracin para utilizar hasta dos KBytes
de memoria externa.
En este caso, la ejecucin se est realizando desde la ROM interna. De
nuevo, el puerto P0 est siendo multiplexado como bus de direcciones y datos de
la RAM, y tres lneas del puerto P2 se utilizan para paginarla. La CPU genera la
seales RD y WR necesarias durante el acceso de la RAM externa. El
direccionamiento de la memoria externa puede ser de uno o dos bytes de ancho.
El direccionamiento de un byte se logra por el puerto P0, en conjunto con una o
ms lneas de I/O para paginar la RAM, como se muestra en la figura Fig.1.7.G.
Tambin se puede utilizar el direccionamiento de dos bytes, en cuyo caso el byte
alto de la direccin es emitido por el puerto P2.

Fig.1.7.G Configuracin del MCS-51 con memoria externa de Datos

MCS-51

RAM EXTERNA

P0

P1

EA

DATOS
+5V

LATCH

ALE
RD

P3

ADDR

P2

WR
I/O

Bits de Pgina

WE

OE

El mapa de memoria interna se puede observar en la figura Fig.1.7.H. El


espacio de memoria se muestra dividido en tres bloques, los cuales son llamados
por lo general como los 128 bajos, los 128 altos y el espacio de los SFR (Special
Function Registers) o Registros de Propsito Especial.
Fig.1.7.H Memoria de Datos Interna
FFh
ACCESIBLE SOLAMENTE
MEDIANTE
DIRECCIONAMIENTO
INDIRECTO

ACCESIBLE MEDIANTE
DIRECCIONAMIENTO
DIRECTO

80h
7Fh
ACCESIBLE MEDIANTE
DIRECCIONAMIENTO
DIRECTO E INDIRECTO
00h

Registros de Propsito
Especia:l
Puertos
Bits de Estado
y de Control
Timers
Registros
Puntero de Pila
Acumulador

El direccionamiento de la memoria es siempre de un byte de ancho, lo que


implica que el espacio de direcciones es de solamente 256 bytes. Sin embargo,
los modos de direccionamiento pueden de hecho acomodar 384 bytes, usando
dos diferentes modos de direccionamiento de las instrucciones. El
direccionamiento directo ms alto que 7FH utiliza un espacio de memoria,
mientras que un direccionamiento indirecto ms alto que 7FH accede a un espacio
diferente de memoria. Debido a esto, la figura Fig.1.7.H muestra los 128 bytes
altos y el espacio de los SFR compartiendo el mismo bloque de direcciones 80H
hasta FFH, aunque ellos son fsicamente entidades separadas. Se de aclarar que
el rea de direccionamiento slo indirecto (posiciones de RAM 80H a FFH) est

presente nicamente en los microcontroladores 8XX2.


Los 128 bytes bajos estn presentes en todos los dispositivos MCS-51 y su
mapa se encuentra en la figura Fig.1.7.I. Como se puede observar, se ha dividido
en tres segmentos principales:
Fig.1.7.I Los 128 bytes bajos de RAM interna

1.7.7.1 Banco de registros


Los 32 bytes ms bajos (00H a1FH) se agrupan en cuatro bancos de 8
registros. Las instrucciones del programa llaman a estos registros R0 hasta R7.
Dos bits en la palabra de estado (PSW) seleccionan cual banco de registros est
en uso. Esto permite un uso ms eficiente del espacio de cdigo, as como
instrucciones que involucran registros, ms cortas que aquellas que utilizan

direccionamiento indirecto. Por defecto cuando se aplica un RESET al


microcontrolador, el banco en uso es el 0.
1.7.7.2 Areas direccionables bit a bit
Los 16 bytes siguientes (20H a 2FH), conforman un bloque en el que se
puede direccionar directamente bit por bit. El conjunto de instrucciones de los
MCS-51 incluyen una amplia variedad de instrucciones orientadas hacia bits, y los
128 bits de esta rea se pueden manejar directamente por estas. Las direcciones
de los bits de esta rea van desde 00H hasta7FH.
1.7.7.3 rea de RAM del usuario
Las posiciones restantes de la memoria RAM interna (30H al 7FH)
conforman la RAM de trabajo del usuario o Scratch Pad.
La tabla Tab.1.7.B muestra la disposicin de los registros de propsito
especial o SFR (Special Function Registers), los cuales se pueden acceder
solamente por direccionamiento directo. Aquellos registros que se encuentran en
la columna izquierda de la tabla tambin son direccionables bit a bit. Los registros
encerrados entre parntesis existen en los 8XX2, y no en los 8XX1. Vase que no
todas las direcciones estn ocupadas; las direcciones desocupadas no estn
implementadas en el integrado. Al realizar lecturas en estas direcciones se
obtendrn datos aleatorios, mientras que escribir en ellas no tendrn efecto
alguno. Estas posiciones se reservan para futuros productos MCS-51, que
poseern nuevas caractersticas.
Tab.1.7.B rea de Registros de Propsito Especial SFR

F8
F0
E8
E0
D8
D0
C8
C0
B8
B0
A8
A0
98
90
88
80

B
ACC
PSW
(T2CON)
IP
P3
IE
P2
SCON
P1
TCON
P0

(RCAP2L)

(RCAP2H)

(TL2)

(TH2)

TL0
DPL

TL1
DPH

TH0

TH1

SBUF
TMOD
SP

FF
F7
EF
E7
DF
D7
CF
C7
BF
B7
AF
A7
9F
97
8F
PCON 87

La funcin de cada uno de los registros de propsito especial se describe a


continuacin
1.7.7.3.1 Registros direccionables bit a bit
ACC.

Es el registro acumulador, sobre el cual se realizan las


operaciones lgicas, aritmticas, de transferencia,
etctera.

B.

Se usa durante operaciones de multiplicacin y divisin. Para


otras instrucciones, este puede ser tratado como cualquier otro
registro del Scratch Pad.

PSW.

Program Status Word o Palabra de Estados del Programa.


Contiene informacin del estado del programa y las banderas
que son afectadas como resultados de operaciones.

P0, P1, P2, y P3. Puertos 0 a 3 son los cerrojos de los puertos 0,1,2 y 3
respectivamente.
IE.

Interrupt Enable o Habilitador de Interrupciones. Permite que se


atiendan las interrupciones que el usuario considere
convenientes.

IP.

Interrupt Priority o Prioridad de Interrupciones. Cada interrupcin


puede programarse con un grado de prioridad, de tal manera
que una interrupcin con alta prioridad no pueda ser
interrumpida por otra de prioridad ms baja, pero si se presenta
el efecto inverso.

SCON. Serial Port Control o Control del Puerto Serial. Establece los
parmetros para la transmisin o recepcin de datos a travs
del puertos serial (ancho del dato, bits de inicio y parada,
velocidad, etctera.)
TCON. Timer/Counter Control o Control de Temporizador/Contador.
Controla dos modos de operacin de los temporizadores y
maneja las interrupciones asociadas, as como los bancos de
activacin.
1.7.7.3.2 Registros no direccionables bits a bit
SBUF. Serial Buffer o Buffer Serial de datos. Son dos registros que se
utilizan para la transmisin y recepcin de datos a travs del
puerto serial.

TMOD.

Timer/Counter Mode Control o Control de Modo de


Temporizador/Contador. Selecciona los modos de operacin de
los timers, si actan como temporizadores o como contadores,
etctera.

SP.

Stack Pointer o Puntero de Pila. Este se incrementa antes que


un dato sea almacenado a causa de una instruccin PUSH o
CALL. La pila es un rea de la memoria RAM, que se utiliza
para almacenar temporalmente informacin bsica del
programa, antes de atender una interrupcin la pila puede
residir en cualquier sitio de la memoria RAM pero el puntero se
inicializa despus del RESET con 07H. Esto ocasiona que la
pila se inicie en la direccin 08H.

DPTR. Data Pointer o Puntero de Datos. Est constituido por una arte
alta (DPH) y una parte baja (DPL) y contiene una direccin de
16 bits. Se puede manejar como un registro de 16 bits o como
dos registros independientes de 8 bits.
T0 y T1. Timers o Temporizadores. Son registros de 16 bits que pueden
actuar como temporizadores o contadores e incluyen dos
registros de 8 bits TH0, TL0, TH1 y TL1.
PCON. Power Control o Control de Poder. Posee un bit que cambia la
velocidad de comunicacin serial y en versiones CHMOS de
esta familia, puede modificar el rgimen de trabajo del
microcontrolador, reduciendo el consumo de energa.
1.7.7.3.3 Registros exclusivos de los microcontroladores 8XX2
T2CON. Lo mismo queTMOD yTCON, pero aplicado al timer adicional
que posee esta versin de microcontrolador.
RCAP2. Capture Register o Registros de Captura. Incluye dos registros
de 8 bits (RCAP2H y PCAP2L) que trabajan en conjunto con el
TIMER2.
TH2.

La misma funcin de T0 y T1 descritos anteriormente.

En la figura Fig.1.7.J se tiene una estructura ms detallada de la familia de


microcontroladores MCS-51. Se pueden observar, adems de los bloques y los
buses, los pines de conexin. Estos pines se muestran en la figura Fig.1.7.K y
corresponden uno a uno con la figura anterior. La siguiente es la descripcin de
estos pines:

Fig.1.7.J Estructura interna del microcontrolador 8051

Direcciones/Datos

Direcciones/Datos

Vcc. Es la alimentacin del integrado y se debe conectar por tanto a +5


voltios dc. Aunque la familia Atmel permite una rango de
alimentacin entre +2volt a +6 volt.
Gnd. Tierra o referencia del circuito.
ALE/PROG. Address Latch Enable o Habilitador del Cerrojo de
Direcciones. Por este pin se emite la seal para enclavar el byte
bajo de las direcciones, cuando se accede a la memoria
externa. Tambin es la entrada de los puntos de programacin
de la memoria EPROM

Fig.1.7.K Configuracin de pines del microcontrolador 8051

PSEN. Program Store Enable o Habilitador de Almacenado de


Programa. Es la seal de sincronizacin para leer la memoria
externa del programa. PSEN slo se origina cuando se lee la
memoria externa.
EA/VPP. External Address o Direccin Externa. Cuando se mantiene en
un nivel lgico alto, slo se ejecuta el programa de la memoria
interna, a menos que contador de programa exceda de 0FFFH
para los 8X51 o 1FFFH para los 8X52. Si este pin se mantiene
a un nivel bajo, el programa que se ejecuta es el de la memoria
externa, independientemente de la direccin del programa
durante la programacin de la memoria PROM, este pin recibe
un voltaje que oscila entre 5 voltios y la tensin de
programacin.
XTAL1 y XTAL2. Entrada y salida del oscilador, respectivamente se
puede utilizar un cristal de cuarzo un resonador cermico.
RESET. Entrada para la reinicializacin del sistema. El RESET se
produce cuando se coloca este pin a un nivel alto, por lo menos
durante dos ciclos de mquina.
Puertos. Todos son bidireccionables de 8 bits. Cuando se escribe 1 a
los pines, estos se pueden usar como entradas de alta
impedancia. Como salida, cada pin del puerto P0 puede
manejar 8 cargas TTL-LS, el resto de los puertos puede
manejar slo cuatro cargas TTL-LS. Estos puertos tambin
pueden actuar de la siguiente manera:

Puerto 0 (P0. ) Es multiplexado como la parte de baja de la direccin y


del bus de datos durante el acceso a la memoria externa.
Adems, emite los cdigos durante la programacin de la
EPROM y los recibe en la verificacin del programa.
Puerto 1 (P1). Durante la programacin y verificacin de la EPROM
recibe la parte baja de las direcciones. Dos bits ms bajos
tienen una funcin adicional en los 8 XX2:
P1.0:T2 Timer2 o Temporizador2. Entrada externa
temporizador/contador (solamente en los 8XX2).

para

este

P1.1:T2EX. Captura y recarga de disparo para el Timer2.


Puerto 2 (P2). Emite la parte alta de las direcciones durante el acceso
externo de memoria y cuando el acceso de datos tiene 16 bits;
asimismo durante la programacin y verificacin de la EPROM.
Puerto 3 (P3).
Este tiene funciones alternas especiales bien
determinadas, tales como:

P3.0:RXD. Entrada del puerto serial.

P3.1:TXD. Salida del puerto serial.

P3.2:INT0. Entrada de la interrupcin externa 0.

P3.3:INT1. Entrada de la interrupcin externa 1.

P3.4:T0. Entrada externa del temporizador/contador 0.

P3.5:T1. Entrada externa del temporizador/contador 1.

P3.6:WR. Seal de escritura para elementos externos.


P3.7:RD. Seal de lectura para elementos externos.
1.7.8 Temporizadores / Contadores
Un timer trabaja como temporizador cuando incrementa o decrementa su
cuenta con base en los impulsos recibidos por reloj de instruccin del equipo. Lo
har como contador, cuando su cuenta cambia ante la variacin de una condicin
externa al dispositivo. Los dos estados son excluyentes y pueden ser
programados por el usuario con varias opciones de operacin y activacin.
Si se ha de usar el puerto serial, uno de los timers debe proveer la base de
tiempo requerida para la comunicacin serial asncrona.

1.7.9 Comunicaciones
En puerto serie trabaja el modo full duplex, lo que significa que puede
transmitir y recibir datos simultneamente. La familiaMCS-51 posee cuatro modos
de comunicacin, dentro de los cuales se encuentran sincrnicos y asncronicos,
con velocidades variables por usuario.
En estos modos de comunicacin no solamente le permiten dialogar con
otros microcontroladores de la misma familia, sino con la de otros fabricantes, con
memoria seriales e incluso con computadores personales tipo PC.
1.7.10 Microcontrolador 8051
Todos los miembros de la familia MCS-51 ejecutan del mismo conjunto de
instrucciones, las cuales estn orientadas hacia aplicaciones de 8 bits. Estas
instrucciones disponen de una amplia variedad de modos de direccionamiento
para acceder a la RAM interna, facilitando las operaciones de byte sobre una
pequea estructura de datos. Tambin, estas permiten la manipulacin directa de
bits para sistemas lgicos y de control que requieran procesamiento Booleano.
1.7.10.1 Modos de direccionamiento
Los modos de direccionamiento son las formas en las cuales se puede
acceder a la informacin existente, bien sea dentro de la RAM interna, la externa,
la zona de registros de propsito especial o la ROM de programa. Existen varias
clases de direccionamiento:
1.7.10.1.1 Direccionamiento inmediato
El operando fuente es un valor constante que sigue al operando destino. El
smbolo # indica este tipo de direccionamiento.
Ejemplo:
MOV SP,#34H
ANL A,#101B

;carga al puntero de pila con el nmero hexadecimal 34)


;realiza operacin AND entre el acumulador y el binario 101

1.7.10.1.2 Direccionamiento directo.


El operando se localiza por un campo de direccin de 8 bits; slo la RAM
interna y las zona de los registros de propsito especial (SFR) pueden ser
direccinados directamente.
Ejemplo:
MOV SP,34H

;carga al puntero de pila con lo existente en la posicin


;hexadecimal 34 de la RAM interna

1.7.10.1.3 Direccionamiento indirecto


La instruccin especifica un registro que contiene la direccin del operando;
ambas memorias (RAM y ROM) pueden ser direccinadlas indirectamente. El
signo @ identifica este tipo de direccionamiento.
El direccionamiento de 8 bits se consigue a travs de registro SP o de los
registros R0 y R1 del banco de registros seleccionado (por medio de los bits 3 y 4
del PSW), mientras que el direccionamiento de los 16 bits slo se puede realizar
por medio del puntero de datos (DPTR).
Ejemplo:
MOV A,@R0

;carga al acumulador con lo existente en la posicin de


;memoria descrita por el contenido del registro R0 activo.

Para aclarar lo anterior, supongamos que R0 contiene el valor 40H y en la


posicin 40H se tiene un valor 55H; despus de la instruccin, el acumulador
quedar con el valor 55H. Esta forma de direccionamiento es muy til para
situaciones en las cuales se requiere el manejo de tablas y traslado continuo de
datos, por ejemplo.
1.7.10.1.4. Direccionamiento por registro
La instruccin especifica uno de los registros del banco el uso. Como se
describi, los 8X5X poseen cuatro bancos de registros, los cuales se direccionan a
travs de los bits 3 y 4 del PSW; cada banco contiene a su vez, 8 registros, desde
R0 hasta R7.
Ejemplo:
MOV R1,#34

;el registro R1 activo se carga con el nmero decimal 34

En algunas instrucciones, este modo de direccionamiento tiene un cdigo


ms eficiente que el direccionamiento directo o inmediato (ocupan menos bytes en
la memoria de programa).
1.7.10.1.5 Direccionamiento implcito
Algunas instrucciones son especficas en cuanto al registro involucrado en la
operacin; no necesitan mencionar el operando porque est implcito en el cdigo
de operacin.
Ejemplo:
CLR A
INC R7

;todos los bits de registro acumulador se colocan en 0


;se incrementa el contenido de registro R7

1.7.10.1.6 Direccionamiento indexado


Slo es posible con la memoria de programas y nicamente permite la
lectura; es til para acceder a tablas de datos que se encuentran en la memoria de
programas. Un registro de 16 bits (el DPTR o contador programa) debe apuntar a
la fase de la tabla y el acumulador se utiliza como desplazamiento para acceder al
dato de inters. En otras palabras, al dato se accede por la suma de los
contenidos del acumulador y el puntero base.
Otro tipo de direccionamiento indexado se utiliza en el caso de "saltos" de
instruccin, en donde la direccin destino del salto es la suma del puntero base y
el acumulador.
1.7.10.2 Conjunto de instrucciones
En la familia de microcontroladores MCS-51, el conjunto de instrucciones
est formado por 69 de ellas, aunque algunas poseen distintos modos de
direccionamiento, lo que proporciona un total de 111 cdigos diferentes. El
conjunto de instrucciones se puede dividir en los siguientes tipos:

Instrucciones aritmticas
Instrucciones lgicas
Instrucciones para la transferencia de datos en memoria interna
Instrucciones para la transferencia de datos en memoria externa
Instrucciones para el tratamiento de tablas
Instrucciones Booleanas
Instrucciones de salto

1.7.10.2.1 Instrucciones aritmticas


Tab.1.7.C Instrucciones aritmticas
Memnico Operandos Ciclos

ADD
ADD
ADD
ADD
ADDC
ADDC
ADDC
ADDC
SUBB
SUBB
SUBB
SUBB
INC

A,Rn
A,direct
A,@Ri
A,#data
A,Rn
A,direct
A,@Ri
A,#data
A,Rn
A,direct
A,@Ri
A,#data
A

1
2
1
2
1
2
1
2
1
2
1
2
1

Descripcin

Add register to Accumulator


Add direct byte to Accumulator
Add indirect RAM to Accumulator
Add immediate data to Accumulator
Add register to Accumulator with Carry
Add direct byte to Accumulator with Carry
Add indirect RAM to Accumulator with Carry
Add immediate data to Acc with Carry
Subtract Register from Acc with borrow
Subtract direct byte from Acc with borrow
Subtract indirect RAM from ACC with borrow
Subtract immediate data from Acc with borrow
Increment Accumulator

INC
INC
INC
DEC
DEC
DEC
DEC
INC
MUL
DIV
DA

Rn
direct
@Ri
A
Rn
direct
@Ri
DPTR
AB
AB
A

1
2
1
1
1
2
1
1
1
1
1

Increment register
Increment direct byte
Increment direct RAM
Decrement Accumulator
Decrement Register
Decrement direct byte
Decrement indirect RAM
Increment Data Pointer
Multiply A & B
Divide A by B
Decimal Adjust Accumulator

En la tabla Tab.1.7.C se tienen las instrucciones aritmticas. En ella se


indican los modos de direccionamiento que se pueden utilizar para acceder al
operando y los ciclos de mquina que tarda la ejecucin de cada instruccin.
.
De la tabla Tab.1.7.C se observan algunas cosas importantes:

Existen dos operaciones para la suma; una de ellas considera el acarre


o carry, mientras que la otra no.
En la sustraccin siempre participa el acarreo.
Se pueden incrementar o decrementar algunos bytes de la memoria RAM
sin la participacin del acumulador.
Una de las operaciones de incremento se realiza sobre el registro DPTR
de 16 bits.
Existen un par de instrucciones (MUL y DIV) que utilizan como fuentes y
destinos o registros A y B, con lo cual se permite la multiplicacin y
divisin de operndose 8 bits.
Existe la operacin DAA, dedicada a realizar el ajuste de la suma de
numerosas BCD.

1.7.10.2.2 Instrucciones lgicas


La tabla Tab.1.7.D contiene las instrucciones lgicas y los modos de
direccionamiento permitidos. Se observa que las operaciones Booleanas se
pueden realizar sobre cualquiera de los 128 byte bajos de la RAM y el espacio de
los SFR, utilizando direccionamiento directo, sin necesidad de utilizar el
acumulador. Las rotaciones solo son posibles sobre el acumulador y lo desplazan
un bit, bien sea a travs del carry o no. La instruccin SWAP intercambia los
nibbles del acumulador, siendo una instruccin muy utilizada en manipulacin de
nmeros BCD. De este conjunto de instrucciones, las nicas que afectan el carry
son RLC A y RRC A.

Tab.1.7.D Instrucciones Lgicas


Memnico Operandos Ciclos

ANL
ANL
ANL
ANL
ANL
ANL
ORL
ORL
ORL
ORL
ORL
ORL
XRL
XRL
XRL
XRL
XRL
XRL
CLR
CPL
RL
RLC
RR
RRC
SWAP

A,Rn
A,direct
A,@Ri
A,#data
direct,A
direct,#data
A,Rn
A,direct
A,@Ri
A,#data
direct,A
direct,#data
A,Rn
A,direct
A,@Ri
A,#data
direct,A
direct,#data
A
A
A
A
A
A
A

1
2
1
2
2
3
1
2
1
2
2
3
1
2
1
2
2
3
1
1
1
1
1
1
1

Descripcin

AND Register to Accumulator


AND direct byte to Accumulator
AND indirect RAM to Accumulator
AND immediate data to Accumulator
AND Accumulator to direct byte
AND immediate data to direct byte
OR register to Accumulator
OR direct byte to Accumulator
OR indirect RAM to Accumulator
OR immediate data to Accumulator
OR Accumulator to direct byte
OR immediate data to direct byte
Exclusive-OR register to Accumulator
Exclusive-OR direct byte to Accumulator
Exclusive-OR indirect RAM to Accumulator
Exclusive-OR immediate data to Accumulator
Exclusive-OR Accumulator to direct byte
Exclusive-OR immediate data to direct byte
Clear Accumulator
Complement Accumulator
Rotate Accumulator Left
Rotate Accumulator Left through the Carry
Rotate Accumulator Right
Rotate Accumulator Right through the Carry
Swap nibbles within the Accumulator

1.7.10.2.3 Instrucciones de transferencia de datos


La tabla Tab.1.7.E muestra las instrucciones disponibles para movimiento de
datos y los modos de direccionamiento que se puede utilizar con cada uno de
ellas.
La instruccin MOV <dest>,<src> permite transferir datos entre la RAM
interna y el rea de registros SFR, sin la participacin del acumulador. Se debe
recordar que los 128 bytes altos de la RAM slo pueden ser direccinados
indirectamente, mientras que el rea de los SFR slo se puede acceder por
direccionamiento directo.
La instruccin MOV DPTR,#dato permite transferir datos de 16 bits para
inicializar del puntero de datos en el tratamiento de tablas de la memoria de
programa, o para acceder a los datos de la memoria externa. La instruccin PUSH
<src> incrementa inicialmente en puntero de pila (SP o Stack Pointer) y
posteriormente copia de datos dentro de la pila. La instruccin POP <dest> copia
de datos desde la pila hacia registro destino y posteriormente decrementa el

puntero de pila. Se debe recordar que la pila est situada dentro de la memoria
RAM interna y el puntero de pila est sealando hacia el banco 1 de registros pero
puede reubicarse, de tal manera que se localice en el rea del Scratch Pad.
La operacin XCH A,<byte> hace que el acumulador y el byte direccinado
intercambien sus datos. La instruccin XCHD A,@Ri es similar, pero solamente los
nibbles bajos participan en el intercambio.
Tab.1.7.E Instrucciones de Transferencia de datos
Memnico Operandos Ciclos

MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOVC
MOVC
MOVX
MOVX
MOVX
MOVX
PUSH
POP
XCH
XCH
XCH
XCHD

A,Rn
1
A,direct
2
A,@Ri
1
A,#data
2
Rn,A
1
Rn,direct
2
Rn,#data
2
direct,A
2
direct,Rn
2
direct,direct 3
direct,@Ri 2
direct,#data 3
@Ri,A Move 1
@Ri,direct 2
@Ri,#data 2
DPTR,#data 3
A,@A+DPTR 1
A,@A+PC 1
A,@Ri
1
A,@DPTR 1
@Ri,A
1
@DPTR,A 1
direct
2
direct
2
A,Rn
1
A,direct
2
A,@Ri
1
A,@Ri
1

Descripcin

Move register to Accumulator


Move direct byte to Accumulator
Move indirect RAM to Accumulator
Move immediate data to Accumulator
Move Accumulator to register
Move direct byte to register
Move immediate data to register
Move Accumulator to direct byte
Move register to direct byte
Move direct byte to direct
Move indirect RAM to direct byte
Move immediate data to direct byte
Accumulator to indirect RAM
Move direct byte to indirect RAM
Move immediate data to indirect RAM
Load Data Pointer with a 16-bit constant
Move Code byte relative to DPTR to Acc
Move Code byte relative to PC to Acc
Move External RAM (8-bit addr) to Acc
Move External RAM (16-bit addr) to Acc
Move Acc to External RAM (8-bit addr)
Move Acc to External RAM (16-bit addr)
Push direct byte onto stack
Pop direct byte from stack
Exchange register with Accumulator
Exchange direct byte with Accumulator
Exchange indirect RAM with Accumulator
Exchange low-order Digit indirect RAM with Acc

En la tabla Tab.1.7.E se muestran las instrucciones para acceder a la


memoria externa de datos. Solamente se puede utilizar el direccionamiento
indirecto para lograrlo. El acceso a la memoria externa se puede obtener mediante
dos alternativas: por direccionamiento de un byte, @Ri, donde Ri es cualquiera de
los registros R0 o R1 del banco de registro seleccionado, o el direccionamiento de
2 bytes, @DPTR.

Se debe recordar que el direccionamiento de 16 bits dedica los puertos P0 y


P2 para generar la direccin de acceso; por este motivo, cuando se pretende
acceder a un banco pequeo de memorias RAM, lo ms ventajoso es utilizar el
direccionamiento de un byte, ya que permite utilizar algunas de las lneas del
puerto dos para otras aplicaciones. El direccionamiento de 2 byte slo se justifica
en caso de poseer una memoria RAM de 64 Kbytes.
Observe que en todas las instrucciones, el acumulador es siempre el destino
o la fuente del dato. Las seales de sincronizacin de lectura y escritura (RD y
WR) se activan nicamente durante la instruccin MOVX; normalmente estas
seales permanecen inactivas. Cuando no se posee memoria externa, los pin
correspondientes se utilizan como lneas extras de entrada/salida.
La tabla Tab.1.7.E tambin muestra las dos instrucciones disponibles para la
lectura de tablas en la memoria de programa. Como stas instrucciones acceden
solamente a la memoria de programas, las tablas slo pueden ser ledas, no
actualizadas. El memnico es MOVC, para mover constante. Si la tabla que se
accede est en la memoria externa de programa, entonces la seal para la
sincronizacin de la lectura que es PSEN.
La primera instruccin MOVC puede acomodar una tabla de hasta 256
entradas, enumeradas desde 0 hasta 255. El nmero de la entrada deseaba se
carga en el acumulador y el puntero de datos seala el comienzo de la tabla; la
ejecucin de la instruccin copiar el valor deseado de la tabla en el acumulador.
La otra instruccin MOVC trabaja de la misma manera, excepto que el
contador de programa (PC) se ajusta como base de la tabla y a sta se accede a
travs de una subrutina. De nuevo, el acumulador contiene la entrada deseada y
las subrutina se llama, de manera similar a esto:
MOV A,#Entrada
CALL Tabla

Las subrutina Tabla debe ser algo como lo siguiente:


Tabla: MOVC A,@A+PC
RET
DB 5
DB 7
DB 8

La instruccin siguiente a la base de la tabla, en la memoria de programa,


debe ser RET (retorno de interrupcin). Este tipo de tabla puede tener hasta 255
entradas, numerads desde 1 hasta 255. La entrada nmero 0 no se puede
utilizar, porque una vez que la instruccin MOVC se ejecuta, el contador de
programa se actualiza con la direccin de la instruccin RET. Una entrada

numerada como 0 retornar el cdigo de la operacin de la instruccin RET.


1.7.10.2.4 Instrucciones Booleanas
La familia MCS-51 contiene un procesador Booleano (orientado hacia
operaciones sobre bits) muy completo. La memoria RAM contiene 128 bits
direccinables y el espacio de los SFR puede soportar otros 128 bits
direccinables , como se describi anteriormente. Los bits direccionados desde
00H hasta 7FH pertenecen al rea de los 128 bits bajos, mientras que los
direccionados desde 80H hasta 0FFH pertenecen al espacio de los SFR.
Todas las lneas de los puertos son direccionables bit a bit, de manera que
cada una puede ser tratada como puerto de un bit. Las instrucciones se muestran
en la tabla Tab.1.7.F y se observa que stas no solamente acceden a los bits
para saltos condicionales; tambin hay un conjunto de cargas, activacines,
limpiezas, complementos y operaciones AND y OR.
En cuanto a los saltos condicionales, las instrucciones verifican el estado de
los bits direccinados y ejecutan un salto relativo al contador del programa, si la
condicin se cumple. El rango del salto relativo est localizado entre las -128 a +
127 posiciones, con relacin al valor del contador de programa (la instruccin
actual + 1 byte).
Tab.1.7.F Instrucciones Booleanas
Memnico Operandos Ciclos

CLR
LR
SETB
SETB
CPL
CPL
ANL
ANL
ORL
ORL
MOV
MOV
JC
JNC
JB
JNB
JBC

C
bit
C
bit
C
bit
C,bit
C,/bit
C,bit
C,/bit
C,bit
bit,C
rel
rel
bit,rel
bit,rel
bit,rel

1
2
1
2
1
2
2
2
2
2
2
2
2
2
3
3
3

Descripcin

Clear Carry
Clear direct bit
Set Carry
Set direct bit
Complement Carry
Complement direct bit
AND direct bit to CARRY
AND complement of direct bit to Carry
OR direct bit to Carry
OR complement of direct bit to Carry
Move direct bit to Carry
Move Carry to direct bit
Jump if Carry is set
Jump if Carry not set
Jump if direct Bit is set
Jump if direct Bit is Not set
Jump if direct Bit is set & clear bit

1.7.10.2.5 Instrucciones de salto


La tabla Tab.1.7.G muestra la lista de saltos incondicionales y condicionales
disponibles para la familia de microcontroladores MCS-51.
Tab.1.7.G Instrucciones de salto
Memnico Operandos Ciclos

ACALL
LCALL
RET
RETI
AJMP
LJMP
SJMP
JMP
JZ
JNZ
CJNE

addr11
addr16

addr11
addr16
rel
@A+DPTR
rel
rel
A,direct,rel

2
3
1
1
2
3
2
1
2
2
3

CJNE

A,#data,rel

CJNE

Rn,#data,rel 3

CJNE

@Ri,#data,rel3

DJNZ
DJNZ
NOP

Rn,rel
direct,rel

2
3
1

Descripcin

Absolute Subroutine Call


Long Subroutine Call
Return from Subroutine
Return from interrupt
Absolute Jump
Long Jump
Short Jump (relative addr)
Jump indirect relative to the DPTR
Jump if Accumulator is Zero
Jump if Accumulator is Not Zero
Compare direct byte to Acc and Jump if Not
Equal
Compare immediate to Acc and Jump if Not
Equal
Compare immediate to register and Jump if Not
Equal
Compare immediate to indirect and Jump if Not
Equal
Decrement register and Jump if Not Zero
Decrement direct byte and Jump if Not Zero
No Operation

Las instrucciones de salto (JuMP) muestran tres variantes:SJMP, AJMP y


LJMP - que difieren en el formato de la direccin destino. La instruccin SJMP
codifica la direccin destino como una constante de 8 bits, tratndola como un
desplazamiento relativo, similar al descrito en el punto anterior. As, la longitud del
salto se limita en el rango entre -128 y 127 byte relativos a la instruccin que sigue
a la instruccin SJMP. La instruccin ocupa dos bytes en la memoria de
programas.
La instruccin LJMP codifica la instruccin destino como una direccin de 16
bits; por lo tanto, la direccin destino puede estar localizada en cualquier sitio de la
memoria de programa de 64 Kbytes. La instruccin tiene una longitud de 3 bytes.
La instruccin AJMP codifica la direccin destino como una constante de 11
bits; cuando se ejecuta esta instruccin, los 11 bits correspondientes a la direccin
destino se copian en los 11 bits ms bajos del contador de programa. As, la
direccin destino puede ser un punto cualquiera de la memoria de programa
situado en el mismo bloque de 2 KBytes de la instruccin siguiente al salto. La
instruccin tiene dos bytes de largo.

En todos los casos, el programador especifica la direccin destino en el


ensamblador de la misma manera: como una etiqueta o como una direccin de 16
bits. El ensamblador colocar la direccin destino en el formato correcto para la
instruccin dada. La instruccin JMP @A+DPTR est diseada para el caso de
saltos. La direccin destino se calcula al momento de ejecucin, como las suma
del registro de 16 bits DPTR y el acumulador. Tpicamente, el DPTR contiene la
direccin de la base de la tabla y el acumulador el ndice de acceso. Supongamos,
por ejemplo, que se leer de un teclado un valor comprendido entre 0 y 4 y este
valor se carga en el acumulador.
Como cada valor debe tener un tratamiento diferente, las instrucciones que
permite esto tienen, ms o menos la siguiente estructura:
MOV DPTR,#Tabla
MOV A, Indice
RL
A
JMP @A+DPTR

La tabla respectiva tendra la forma:


Tabla: AJMP
AJMP
AJMP
AJMP

CASO_0
CASO_1
CASO_2
CASO_3

La instruccin RL A multiplica por dos el valor ndice, ya que cada instruccin


en la tabla de saltos ocupa dos byte de la memoria de programa.
La tabla Tab.1.7.G muestra tambin una instruccin las variantes de la
instruccin de llamada a subrutina (CALL): LCALL y ACALL. Ambas se tratan de la
misma manera a como suceda en el caso de los saltos. La instruccin LCALL
utiliza un formato de 16 bits, mientras que ACALL lo hace con un formato de 11
bits.
El programador especifica una etiqueta o una direccin de 16 bits y el
ensamblador se encarga de colocarle el formato correcto a la direccin.
Las subrutinas deben finalizar con una instruccin RET, la cual obliga a que
el programa retorne a la instruccin siguiente a la que hizo la llamada con la
instruccin CALL. La instruccin RETI se utiliza para regresar de la rutina de
servicio a una interrupcin.
La tabla Tab.1.7.G contiene la lista de las instrucciones disponibles para los
saltos relativos en la familia MCS-51. todos los saltos especifican el destino como
un desplazamiento relativo al byte siguiente de la instruccin, los saltos estn
limitados al rango comprendido entre -128 y 127 bytes. Como se describi en los
casos anteriores, el programador especifica la direccin destino como una etiqueta

una constante de 16 bits. Si el salto est por fuera del rango descrito, el
ensamblador escribir el mensaje "Destination out of Range" (Destino fuera de
rango) en el listado de errores del programa.
Las instrucciones JZ y JNZ verifican directamente el acumulador, ya que no
se posee una bandera de cero en el registro PSW. La instruccin DJNZ
(Decrement and Jump if Not Zero - decremento y salto si no es cero) se utiliza
para controlar bucles. Para ejecutar unas instrucciones N nmero de veces, se
carga un contador con N y se termina el bucle con la instruccin DJNZ , como se
muestran el siguiente ejemplo:
MOV Contador,#10
Loop:

;comienzo del bucle


;Instrucciones
;Fin del bucle
DJNZ contador,Loop

Las instrucciones contenidas en el bucle se ejecutarn, en este caso diez


veces.
La instruccin CJNE (Compare and Jump if Not Equal - compare y salte si no
es igual) tambin se puede utilizar para operaciones de control de bucles. El salto
se realiza solamente si los dos bytes no son iguales.
Otra aplicacin de estas instrucciones es la comparacin entre dos
cantidades sin signo: si el primero es menor que el segundo, el carry se activa (se
ponen 1); si es mayor o igual, el carry se coloca en 0.
1.7.11 El microcontrolador ATMEL AT89C2051
1.7.11.1 Descripcin del AT89C52
El AT89C2051 es un microcontrolador CMOS de 8-bits de alto rendimiento y
bajo voltaje de trabajo que contiene 2 Kilobytes de memoria PEROM (Flash
programmable and erasable read only memory). Este dispositivo se fabrica usando
la tecnologa de memoria no voltil de alta densidad y es compatible a nivel de
conjunto de instrucciones y distribucin de pins con el standard industrial MCS-51.
Al combinar el verstil CPU de 8-bits con la memoria Flash en un solo chip, el
AT89C2051 de Atmel es un microcontrolador potente que provee una solucin
altamente flexible y efectiva en costo para la realizacin de aplicaciones de
control.
El AT89C2051 provee las siguiente opciones standard: 2 Kbytes de Flash,
128 bytes de RAM, 15 lneas I/O, dos timer/counter de 16 bits, cinco vectores de

arquitectura de interrupcin de dos niveles, puerto serial full-duplex, un


comparador anlogo de precisin, oscilador en el propio chip y circuitera de reloj.
En adicin, el AT89C2051 esta diseado con lgica esttica lo que permite
una operacin con frecuencia cero. Soporta adems dos modos de ahorro de
poder seleccionables por software. El modo Idle detiene el CPU mientras permite
que la RAM, timer/counter, el puerto serial y el sistema de interrupcin continen
funcionando. El modo Power Down mantiene los contenidos de la RAM pero
detiene el oscilador deshabilitando, por lo tanto, todas las otras funciones del chip
hasta que ocurra el siguiente Reset por hardware.
1.7.11.2 Caractersticas del AT89C2051

Compatible con la familia MCS-51

2 Kbytes de Memoria Flash reprogramable

Permite 1000 ciclos de Grabacin/Borrado del Flash

Rango de operacin desde 2.7 a 6.0 voltios DC.

Operacin esttica completa: 0 [Hz] a 24 [MHz]

Proteccin contra lectura de Memoria de Programa (Cerrojo) de dos


niveles

128 bytes de RAM interna

15 lineas I/O programambles

2 Timer/Counter de 16 bits

6 Fuentes de interrupcin

Canal UART Serial programable

Salidas en corriente con capacidad directa de manejo de LEDS

Comparador anlogo interno

Modos de ahorro de energia Power Idle y Power Down

1.7.11.3 Configuracin de Pins para el AT89C2051


El AT89C2051 viene en un encapsulado de 20 pins (DIP 20) y la ditribucin
del patillaje se muestra en la figura Fig.1.7.L.
Fig.1.7.L AT89C2051:Configuracion de Pins

5
4
2
3
6
7
8
9
11

20
XT AL1

VCC

RS T

XT AL2

AT89C2051
(RXD) P 3.0
(T XD) P 3.1
(INT 0) P3.2
(INT 1) P3.3
(T 0) P 3.4
(T 1) P 3.5
P3.7

12
(A IN0) P 1.0
13
(A IN1) P 1.1
14
P1.2
15
P1.3
16
P1.4
17
P1.5
18
P1.6
19
P1.7

GND
10

1.7.12 El microcontrolador ATMEL AT89C52


1.7.12.1 Descripcin del AT89C52
El AT89C52 es un microcontrolador CMOS de 8-bits de alto rendimiento y
bajo voltaje de trabajo que contiene 8 Kilobytes de memoria PEROM (Flash
programmable and erasable read only memory). Este dispositivo se fabrica usando
la tecnologa de memoria no voltil de alta densidad y es compatible a nivel de
conjunto de instrucciones y distribucin de pins con el standard industrial 80C51 y
80C52.
Al combinar el verstil CPU de 8-bits con la memoria Flash en un solo chip, el
AT89C2051 de Atmel es un microcontrolador potente que provee una solucin
altamente flexible y efectiva en costo para la realizacin de aplicaciones de
control.
El AT89C52 provee las siguiente opciones standard: 8 Kbytes de Flash, 256
bytes de RAM, 32 lneas I/O, tres timer/counter de 16 bits, seis vectores de
arquitectura de interrupcin de dos niveles, puerto serial full-duplex, oscilador en el
propio chip y circuitera de reloj.
En adicin, el AT89C2051 esta diseado con lgica esttica lo que permite
una operacin con frecuencia cero. Soporta adems dos modos de ahorro de
poder seleccionables por software. El modo Idle detiene el CPU mientras permite

que la RAM, timer/counter, el puerto serial y el sistema de interrupcin continen


funcionando. El modo Power Down mantiene los contenidos de la RAM pero
detiene el oscilador deshabilitando, por lo tanto, todas las otras funciones del chip
hasta que ocurra el siguiente Reset por hardware.
1.7.12.2 Caractersticas del AT89C52

Compatible con la familia MCS-51


8 Kbytes de Memoria Flash reprogramable
Permite 1000 ciclos de Grabacin/Borrado del Flash
Rango de operacin desde 2.7 a 6.0 voltios DC.
Operacin esttica completa: 0 [Hz] a 24 [MHz]
Proteccin contra lectura de Memoria de Programa (Cerrojo) de dos
niveles
256 bytes de RAM interna
32 lineas I/O programambles
3 Timer/Counter de 16 bits
8 Fuentes de interrupcin
Canal UART Serial programable
Modos de ahorro de energia Power Idle y Power Down

1.7.12.3 Configuracin de Pins para el AT89C52


El AT89C2051 viene en un encapsulado de 40 pins (DIP 40) y la ditribucin
del patillaje se muestra en la figura Fig.1.7.M.
Fig.1.7.M AT89C52:Configuracion de Pins
19
18
31
30
29
1
2
3
4
5
6
7
8
10
11
12
13
14
15
16
17

40
X T A L1

VCC

X T A L2

RS T

E A/V P P
A LE P
/ R OG
PS EN
(T 2) P 1.0

(A D0) P 0.0

(T 2 E X ) P 1.1

(A D1) P 0.1

P 1.2

(A D2) P 0.2

P 1.3

(A D3) P 0.3

P 1.4

(A D4) P 0.4

P 1.5

(A D5) P 0.5

P 1.6

(A D6) P 0.6

P 1.7

(A D7) P 0.7

AT89C52
(R X D ) P 3.0

(A 8) P 2.0

(T X D ) P 3.1

(A 9) P 2.1

(IN T 0
) P 3.2

(A 10) P 2.2

(IN T 1
) P 3.3

(A 11) P 2.3

(T 0) P 3.4

(A 12) P 2.4

(T 1) P 3.5

(A 13) P 2.5

(W R) P 3.6

(A 14) P 2.6

(RD) P 3.7

(A 15) P 2.7
GN D
20

39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28

Вам также может понравиться