Anda di halaman 1dari 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

2 5 6 B y te s e n e l 8052 T im e r 0

C o n tr o l d e In te r r u p c io n e s

RO M

1 2 8 B y te s RAM

T im e r 0 T im e r 0

E n tr a d a s d e l C o n ta d o r

CPU

O s c il a d o r

Bus de C o n tr o l

4 P u e r t o s I/ O

P u e r to S e r ia l

0 V 0 V 0 V

P0

P1

P2

P3

TxD

R xD

D ire c c io n e s / D a to s

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
M E M O R IA D E P R O G R A M A (S O L O D E L E C T U R A ) M E M O R IA D E D A T O S (L E C T U R A / E S C R IT U R A )

FFFFh

FFFFh

E XTE R NA

E XTE R NA

1FFFh EA = 1 8052 8051 IN T E R N A 0000 0FFFh EA = 0 E XTE R NA 8052 8051

FFh SFR 7Fh

00

00

PSEN

R D

W R

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

(2) V E C T O R D E IN T E R R U P C IO N

(1) INTERRUPCION

P R O G R A M A P R IN C IP A L

(4) RETORNO DE

INTERRUPCION

(3 ) R U T I N A D E S E R V IC I O D E INTE R R U PC I N

R TI

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

I n t e r r u p c i n E x t e r n a 0 T im e r 0 I n t e r r u p c i n E x t e r n a 1 T im e r 1 P u e r t o S e r ia l T im e r 2

0003h 000Bh 0013h 001Bh 0 0 23 h 0 0 2B h

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

M C S -5 1 P 1 P 0 EA
0 V

R O M EX TE R N A IN S T R

LATC H ADDR

P 3

A LE P 2 P SEN
O E

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 P1 S2 P2 P1 S3 P2 P1 S4 P2 P1 S5 P2 P1 S6 P2

C IC L O D E M A Q U IN A

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

M C S -5 1 P1 P 0 EA A LE
R D W R
I/O
+5V

R A M E X TER N A DATO S

LA TC H ADDR

P 3

P 2
B it s d e P g in a W E O E

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 A C C E S IB L E S O L A M E N T E M E D IA N T E D IR E C C IO N A M IE N T O IN D IR E C T O 80h 7Fh A C C E S IB L E M E D IA N T E D IR E C C IO N A M IE N T O D IR E C T O E IN D IR E C T O 00h R e g is t r o s d e P r o p s it o E s p e c ia : l P u e rto s B i ts d e E s t a d o y d e C o n tr o l T im e r s R e g is tr o s P u n t e r o d e P ila A c u m u la d o r A C C E S IB L E M E D IA N T E D IR E C C IO N A M IE N T O D IR E C T O

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)

SBUF TMOD SP TL0 DPL TL1 DPH TH0 TH1

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. Se usa durante operaciones de multiplicacin y divisin. Para otras instrucciones, este puede ser tratado como cualquier otro registro del Scratch Pad. 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.

B.

PSW.

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. 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.

IP.

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. 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.

SP.

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). 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:

para

este

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 Descripcin

ADD ADD ADD ADD ADDC ADDC ADDC ADDC SUBB SUBB SUBB SUBB INC 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 Rn

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

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 Increment register

INC INC DEC DEC DEC DEC INC MUL DIV DA

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

2 1 1 1 2 1 1 1 1 1

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

Descripcin

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

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 Descripcin

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+DPTR1 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

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 Descripcin

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

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 Descripcin

ACALL LCALL RET RETI AJMP LJMP SJMP JMP JZ JNZ CJNE CJNE CJNE CJNE DJNZ DJNZ NOP

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

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

Rn,#data,rel 3 @Ri,#data,rel3 Rn,rel direct,rel 2 3 1

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 A L1 XT A L2 VCC RST

A T 8 9 C 2 0 51
(R X D ) P 3 . 0 (T X D ) P 3 . 1 ( I N T 0) P 3 . 2 ( I N T 1) P 3 . 3 (T 0 ) P 3 . 4 (T 1 ) P 3 . 5 P3.7 GND 10 (A I N 0 ) P 1 . 0 (A I N 1 ) P 1 . 1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

12 13 14 15 16 17 18 19

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 XT AL1 XT AL2 E A /V P P A LE / P RO G PSE N (T 2 ) P 1 . 0 (T 2 E X ) P 1 . 1 P 1. 2 P 1. 3 P 1. 4 P 1. 5 P 1. 6 P 1. 7 (A D 0 ) P 0 . 0 (A D 1 ) P 0 . 1 (A D 2 ) P 0 . 2 (A D 3 ) P 0 . 3 (A D 4 ) P 0 . 4 (A D 5 ) P 0 . 5 (A D 6 ) P 0 . 6 (A D 7 ) P 0 . 7 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 VCC RS T 9

A T 8 9 C 52
(R X D ) P 3 . 0 (T X D ) P 3 . 1 ( IN T 0 ) P3.2 ( IN T 1 ) P3.3 (T 0 ) P 3 . 4 (T 1 ) P 3 . 5 ( W R ) P3.6 ( RD ) P3.7 GND 20 (A 8 ) P 2 . 0 (A 9 ) P 2 . 1 (A 1 0 ) P 2 . 2 (A 1 1 ) P 2 . 3 (A 1 2 ) P 2 . 4 (A 1 3 ) P 2 . 5 (A 1 4 ) P 2 . 6 (A 1 5 ) P 2 . 7

Anda mungkin juga menyukai