35
 Universidad Autónoma del estado de México  Arquitectura básica de microcontroladores basados en el 80C51 MICROCONTROLADORES BASADOS EN EL CPU 80C51 DESCRIPCION GENERAL El microcontrolador original de 8 bits con cpu 80C51 fue fabricado por Intel. Es obvio que la  paténtenle tiene algo así como una caducidad, por lo que una vez pasado el periodo de producción exclusiva del microcontrolador por parte de Intel de acuerdo a la protección de patentes, se liberó su fabricación y otras compañías tales como Phillips y Atmel crearon nuevos microcontroladores de 8 bits con el cpu del 80C51. Del lado izquierdo, se muestra la distribución de pines del más básico de los microcontroladores basados en el 80C51: e l 80C31. El que se muestra es la versión en empaque DIP, aunque existen versiones para montaje superficial. Cada nuevo fabricante de estos microcontroladores le ha ido agregando características adicionales tales como memoria EPROM interna, o más  pue rt os seriales, o convertidores A/ D, cosas qu e obviamente el microcontrolador original no tiene. Una de las características mas atractivas sea quizás que el conjunto de instrucciones es bastante reducido y muy parecido a la programación de los microprocesadores Int el x86. Esto es, las instrucciones e i ncluso los modos de direccionamiento son muy similares por lo que personas que acostumbran programar en lenguaje ensamblador para x86 no tienen mucha complicación para programar estos microcontroladores. En la actualidad, el 8031, para entrar en materia, es un microcontrolador muy versátil para aplicaciones de control no tan especializado dado su bajo costo y facilidad de  programación. Es por eso que puede tomarse como un dispositivo con el cual puede aprenderse lenguaje ensamblador y comprender de manera más sencilla como funciona un microcontrolador para después adentrarse al manejo de microprocesadores. Esperando que este material sea de ayuda, se describirá en primera instancia el hardware que constituye al microco ntrolador; poste rior mente se describirán el conjunto de instrucciones y finalm ente se expondrán ejercicios de programación básica en ensamblador. ORGANIZACIÓN DE MEMORIA Toda la familia 8051 tiene separados los espacios de memoria de programa y memoria de datos como se mues tra en las figur as 1 y 2. La separ aci ón lógic a de ambos tip os de memori a permi te que la memori a de datos pued a ser accesa da con un dire ccionamiento de 8 bits con lo cual se pued e almacenar y manipular fácilmente. Sin embargo, también se pueden generar direcciones de 16 bits utilizando el registro DPTR. La memoria de programa (ROM, EPROM, etc...) únicamente puede ser leída, como cualquier ROM. Se  pueden tener hasta 64KB de programa de memoria. En el 8051, los 4KB más bajos de memoria de 1  Pines del 8031

HADWARE 8051

Embed Size (px)

Citation preview

Page 1: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 1/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

MICROCONTROLADORES BASADOS EN EL CPU 80C51

DESCRIPCION GENERALEl microcontrolador original de 8 bits con cpu 80C51 fue fabricado por Intel. Es obvio que la paténtenle tiene algo así como una caducidad, por lo que una vez pasado el periodo de producción

exclusiva del microcontrolador por parte de Intel de acuerdo a la protección de patentes, se liberó sufabricación y otras compañías tales como Phillips y Atmel crearon nuevos microcontroladores de 8 bitscon el cpu del 80C51.

Del lado izquierdo, se muestra la distribución de pines del más básico delos microcontroladores basados en el 80C51: el 80C31. El que se muestraes la versión en empaque DIP, aunque existen versiones para montajesuperficial.

Cada nuevo fabricante de estos microcontroladores le ha ido agregandocaracterísticas adicionales tales como memoria EPROM interna, o más

  puertos seriales, o convertidores A/D, cosas que obviamente elmicrocontrolador original no tiene.

Una de las características mas atractivas sea quizás que el conjunto deinstrucciones es bastante reducido y muy parecido a la programación delos microprocesadores Intel x86. Esto es, las instrucciones e incluso losmodos de direccionamiento son muy similares por lo que personas queacostumbran programar en lenguaje ensamblador para x86 no tienenmucha complicación para programar estos microcontroladores.

En la actualidad, el 8031, para entrar en materia, es un microcontrolador 

muy versátil para aplicaciones de control no tan especializado dado su bajo costo y facilidad de programación. Es por eso que puede tomarse como un dispositivo con el cual puede aprenderselenguaje ensamblador y comprender de manera más sencilla como funciona un microcontrolador paradespués adentrarse al manejo de microprocesadores.

Esperando que este material sea de ayuda, se describirá en primera instancia el hardware que constituyeal microcontrolador; posteriormente se describirán el conjunto de instrucciones y finalmente seexpondrán ejercicios de programación básica en ensamblador.

ORGANIZACIÓN DE MEMORIA

Toda la familia 8051 tiene separados los espacios de memoria de programa y memoria de datos comose muestra en las figuras 1 y 2. La separación lógica de ambos tipos de memoria permite que lamemoria de datos pueda ser accesada con un direccionamiento de 8 bits con lo cual se puedealmacenar y manipular fácilmente. Sin embargo, también se pueden generar direcciones de 16 bitsutilizando el registro DPTR.

La memoria de programa (ROM, EPROM, etc...) únicamente puede ser leída, como cualquier ROM. Se pueden tener hasta 64KB de programa de memoria. En el 8051, los 4KB más bajos de memoria de

1

 Pines del 8031

Page 2: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 2/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

 programa son internos (on-chip). En las versiones sin ROM, toda la memoria de programa es externa.El pulso que permite la lectura de memoria de programa externa es  PSEN  (program store enable).

La memoria de datos (RAM) ocupa direccionamiento separado de la memoria de programa. En el8051, los 128 bytes más bajos de memoria de datos son internos (on-chip). Se puede direccionar hasta64KB de memoria de datos externa (RAM). El CPU genera señales de lectura y escritura ( WR y RD

) durante los accesos de memoria RAM externa.

 Figura 1.- Diagrama a bloques del 8051

 Figura 2.- estructura de memoria del 80C51

Las memorias de programa o datos externas pueden ser combinadas si así se desea al aplicar las señalesRD y PSEN a las entradas de una compuerta AND y usar la salida de esta compuerta como pulso delectura para memoria de programa/datos externa.

MEMORIA DE PROGRAMA

2

Page 3: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 3/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

En la figura 3 se muestra la parte baja de la memoria de programa.

Después de un reset, el CPU comienza su ejecución de lalocalidad 0000H. Como se muestra en la figura 3, cada

interrupción tiene una localidad de memoria fija dentro de lamemoria de programa.

Cuando ocurre una interrupción, entonces el CPU brinca a lalocalidad de memoria de programa correspondiente al inicio dedicha interrupción en donde a su vez, debe haber unainstrucción de salto a la rutina de servicio a la interrupción.

Por ejemplo, la interrupción externa 0 tiene asignada la localidad de memoria de programa 0003Hcomo inicio de dicha interrupción; si se va a utilizar esta interrupción, entonces en la dirección 0003Hde la memoria de programa debe iniciar la rutina de servicio a dicha interrupción; muchas de las veces,

como las rutinas son grandes, en la localidad 0003H se encuentra una instrucción de salto queredirecciona el flujo de programa al lugar en donde se encuadra como tal la rutina de servicio a lainterrupción.

A partir de la dirección inicial reservada para cada interrupción se disponen de 8 bytes de distanciahasta la próxima dirección de inicio de otra interrupción. Entonces los inicios de interrupciones estánespaciados entre sí 8 bytes.

Cabe señalar que si no se utiliza alguno de los espacios de memoria de programa reservados para elmanejo de las interrupciones, éstos se pueden utilizar como memoria de programa de propósito general.

Los 4Kb mas bajos de la memoria de programa pueden residir dentro del microcontrolador o fuera deel. Esta selección se hace vía hardware al poner a uno o cero el pin Vpp EA / . Si este pin está a cero,entonces se le indica al CPU que tiene que general las señales necesarias para leer el programa desdeuna memoria ROM externa; Si este pin está a uno, entonces se le indica al CPU que el programa estádentro de el y no tiene que generar las señales de control para un acceso externo a memoria de programa. En las versiones sin ROM interna siempre se debe poner a cero este para que el programa se pueda leer desde una memoria ROM externa como es el caso del 8031.

Una vez seleccionado el lugar desde donde el CPU debe ejecutar el programa y suponiendo que el programa está en una memoria externa, es necesario conocer el proceso que el CPU sigue para poder leer el programa. En la figura 4 se muestra como debe realizarse la interfaz entre el microcontrolador yla memoria ROM externa para ejecutar el programa desde ésta última.

3

  Figura 3.- parte mas baja de la

memoria de programa

Page 4: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 4/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

Cuando el CPU debe leer una instruccióndesde la memoria, ejecuta una seria deoperaciones antes de leer la instrucción. Este proceso se describe a continuación:

a) Se genera el byte bajo de la dirección a

través del puerto P0 y mediante la señalALE se graba en el latch.  b) En un segundo tiempo, se genera el byte

alto de la dirección a través del puerto P2.c) En un tercer tiempo se genera la señal

 PSEN  que habilita el dato direccionado y

lo pone a la salida de la memoria ROM externa.d) Por ultimo, la instrucción almacenada en la ROM es leída a través del puerto P0.Por cada instrucción que debe leer el CPU de la ROM externa se ejecuta el mismo proceso descritoanteriormente. Se puede notar que el puerto P0 sirve para generar direcciones así como para transferir datos; a esto se le llama que el puerto P0 está multiplexado. Utilizando un diagrama de tiempos, en la

figura 5 se puede ver como se van ejecutando cada una de las señales para poder leer la memoria de programa.

También se puede notar, que la dirección generada por el CPU es de 16 bits, por lo que elmicrocontrolador puede ser conectado a una memoria de hasta 64KB. En caso de tener una memoriamás pequeña, los bits más altos, por así decirlo, sobrantes se pueden utilizar para direccionamiento deotros dispositivos externos.

 Figura 5.- Diagrama de tiempos de la lectura de memoria de programa

4

  Figura 4.- conexión externa del μP con una memoria

 ROM externa

Page 5: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 5/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

MEMORIA DE DATOS

Ya se mencionó que la memoria de datos y  programa se manejan en forma independienteaunque de manera sincronizada. Es obvio quemientras se lee la memoria de programa no se

 puede leer la memoria de datos.Para acceder a la memoria de datos externa, elCPU realiza las siguientes operaciones:

a) genera la dirección baja a través del puerto0 y a mediante la señal ALE es grabada enel latch.

 b) Se genera la parte alta de la dirección en el puerto P2.

c) Se genera la señal  RD o WR según sea el caso de leer o escribir en la memoria RAM de

datos externa respectivamente.d) El microcontrolador escribe o lee los datos, según sea el caso, a través del puerto P0.

Hay que puntualizar que la dirección de la memoria externa de datos puede tener un ancho de 1 o 2 bytes según el tipo de instrucción utilizada. Si la dirección es de 1 byte, entonces solo se utilizará el puerto P0 para generarla. Para direcciones de 2 Bytes, es obvio que la parte alta o segundo byte alto dela dirección se genera a través del puerto P2.

Al igual que para la memoria de programa, en la memoria de datos interna hay que respetar ciertaorganización que el CPU necesita tener para su correcto funcionamiento. En general, el espacio(mapeo) de memoria está dividido en tres secciones: 128 bytes bajos, 128 bytes altos y espacio SFR.Esta memoria de datos se refiere a la memoria interna del microcontrolador. No se debe confundir conel acceso a datos externos de una memoria RAM o dispositivos de entrada y salida.

Sin embargo, la memoria interna de esta familiatiene algunos aspectos interesantes que debentomarse en cuenta.

La arquitectura básica de la familia C51 tiene 128  bytes de RAM interna. Algunos otros como el80C32 tienen 256 bytes de RAM interna siendo estacapacidad la máxima encontrada en la gama de lafamilia C51.

La memoria interna de datos siempre se direccionacon 1 byte. Esto implica que el espacio de memoriainterna que puede direccionar el microcontrolador solo puede ser de hasta 256 bytes. Esto explica la

figura 7 la cual mapea direcciones de memoria interna desde 00H hasta FFH; sin embargo se puede ver una partición de memoria a partir de la dirección 80H.

5

 Figura 6.- Conexión con memoria de datos externa.

 Figura 7.- Organización de memoria RAM interna de

datos.

Page 6: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 6/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

El espacio que comprende de la dirección 00H hasta la 7FH puede ser direccionado de forma directa oindirecta. Pero del espacio que comprende de la dirección 80H hasta la FFH tiene un comportamientodistinto; si se utiliza direccionamiento indirecto se estará apuntando a la memoria RAM interna de propósito general y si se utiliza direccionamiento directo entonces se estará accesando al espacio SFR.Esto es, a pesar que se tiene el mismo rango de memoria, físicamente son dos espacios de memoriadistintos.

Con lo anterior se puede ver como se pueden utilizar los tres espacios de memoria interna descritosanteriormente: los 128 bytes más bajos se pueden direccionar de forma directa o indirecta; los 128 bytes más altos solo se pueden acceder mediante direccionamiento indirecto y el espacio SFR solo puede ser accesado mediante direccionamiento directo.

Y si se preguntan que cosa es el espacio SFR, se puede decir que es el espacio de memoria que ocupantodos los registros de propósito especial que utiliza el microcontrolador para poder realizar todas susoperaciones; en este espacio se guardan datos de configuración del mismo microcontrolador. Por elloen la figura 7 se muestra que la mitad alta del direccionamiento directo contiene a registros tales como: puertos, timers, contadores, puntero de pila etc.

 Figura 8.- Del lado izquierdo, los 128 bytes bajos de memoria RAM interna de datos. Del lado derecho, los 128 bytes

altos de la memoria RAM interna de datos. .

A su vez, los 128 bytes bajos de la memoria RAM interna tiene su propia organización tal como semuestra en la figura 8.

Los 32 bytes más bajos están agrupados en 4 bancos de 8 bytes cada uno. Las instrucciones del  programa llaman a estos registros como R0, R1,….. R7. Estos bancos son utilizados paradireccionamientos indirectos y solo se puede tener seleccionado a uno de los cuatro bancos como banco de utilización “actual”. Para indicarle al CPU cual de estos cuatro bancos se va a utilizar paradireccionamiento indirecto se utiliza el registro llamado PSW (Program status Word) el cual tiene 2 bits que indican cual es el banco que se tiene que utilizar para este fin.

Page 7: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 7/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

Los siguientes 16 bytes, es decir, de la dirección 20H hasta la 2FH forman un bloque de memoria quees direccionable bit a bit. A su vez este espacio se subdirecciona desde la 00H hasta 7F. El uso de esteespacio se verá en algunas instrucciones que permiten acceder a bits en lugar de bytes.

A partir de la dirección 80H comienza los 128 bytes altos de memoria RAM interna (solo en lasversiones que tiene 256 bytes de RAM). Esta parte de la memoria solo puede utilizarse con

direccionamiento indirecto. Recordar que si se intenta entrar a una dirección arriba de 80H condireccionamiento directo se estará accediendo al bloque de SFR y no a la memoria RAM internasuperior.

La figura 9 muestra el espacio SFR y algunas de laslocalidades más utilizadas en las instrucciones de estosmicrocontroladores.

Finalmente, cuando se realiza un RESET, el apuntador de  pila contiene la dirección 7H, con lo que se estaríaapuntando al registro R7 del banco 0; Esto puede

cambiarse al modificar el apuntador de pila a algún valor superior que apunte a algún lugar de memoria en los 128  bytes bajos que se sepa no estorbará para nuestra programación.

CONJUNTO DE INSTRUCCIONES DE LA FAMILIA 80C51

Las instrucciones de estos microcontroladores están optimizadas para aplicaciones de control de 8 bits.Se tienen varios modos de direccionamiento para el acceso rápido de la RAM interna y facilitar lasoperaciones en estructuras de datos pequeñas. También se tienen instrucciones que soportandireccionamiento de un solo bit para aplicaciones de lógica booleana.

Para poder programar, es necesario conocer algunos conceptos referentes a los modos dedireccionamiento así como los registros que pueden intervenir en las instrucciones así como losregistros que configuran como deben interpretarse algunas de las instrucciones.

En primer lugar, se tiene el registro PSW el cual contiene varios bits de estado que reflejan el estadoactual del CPU. Este contiene un bit de acarreo, un bit de acarreo auxiliar, dos bits que indican el  banco de memoria interna a utilizar para direccionamientos indirectos, un bit de overflow(desbordamiento), un bit de paridad y dos banderas de estado definibles por el usuario. El orden delregistro PSW se muestra en la figura 10.

 Figura 9.- Espacio de memoria correspondiente aSFR.

Page 8: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 8/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

 Figura 10.- Registro PSW en la familia 80C51

El bit de acarreo a parte de utilizarse en las operaciones aritméticas, también sirve como acumulador  para varias operaciones booleanas.

Los bits RS0 y RS1 son usados para seleccionar uno de los cuatro bancos de registros que semencionan en la figura 8. Varias instrucciones se refieren a estas localidades de memoria como R0, R1,hasta R7. La selección de cual banco se va a utilizar se basa en estos dos bits en tiempo de ejecución.

El bit de paridad refleja el numero de 1s en el acumulador. Si P=1 significa que el acumulador tiene unnumero impar de 1s, y si P=0 el acumulador tiene un numero par de 1s.

Existen 6 modos de direccionamiento para la familia 80C51 y son:a) Direccionamiento directo. b) Direccionamiento indirecto.c) Instrucciones entre registros.

d) Instrucciones a registros específicos.e) Direccionamiento inmediato.f) Direccionamiento indexado.

DIRECCIONAMIENTO DIRECTOEn este direccionamiento, el operando está especificado por una dirección de 8 bits contenido en elcódigo de operación de la instrucción. Únicamente la memoria RAM interna y la zona de SFR’s se pueden direccionar directamente. Un ejemplo de este tipo de direccionamiento es el siguiente:

MOV A,50H

La instrucción anterior indica que el contenido de la posición de memoria 50H debe ser copiado alregistro A. Nótese que el sentido de asignación den la instrucción es de derecha a izquierda. Es decir,del lado derecho de la coma se tiene la fuente y de lado izquierdo se encuentra el destino.

DIRECCIONAMIENTO INDIRECTOEn el direccionamiento indirecto la instrucción especifica una registro el cual contiene la dirección deloperando. Es decir, no se da directamente la dirección del operando y en su lugar se hace referencia aalgún registro R0-R7 de alguno de los 4 bancos de la memoria baja de RAM interna. Un ejemplo deeste tipo de direccionamiento es el siguiente:

MOV A,@R0

8

Page 9: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 9/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

La instrucción anterior indica que la dirección apuntada por el registro R0 se copia al registro A. Se puede usar este tipo de direccionamiento tanto para RAM interna como para RAM externa.

INSTRUCCIONES ENTRE REGISTROSEste tipo de instrucciones se refiere a la posibilidad de poder mover datos entre el espacio RAM internoo externo y alguno de los 4 bancos de memoria que a su vez cada banco tiene 8 registros (de R0 a R7).

En cuanto a la instrucción de código fuente no se ve mucha diferencia con respecto al direccionamientodirecto, sin embargo, a bajo nivel, el código de operación de la instrucción es más corto y optimiza elcódigo de programa. Un ejemplo es el siguiente:

MOV A,R0

La instrucción anterior indica que el contenido del registro R0 se copia al registro A. Nótese ladiferencia con el direccionamiento indirecto al no tener @ antes de especificar el registro R0.

INSTRUCCIONES A REGISTROS ESPECÍFICOSEste direccionamiento se refiere al acceso a registros específicos del SFR. Con esto, la instruccióncomo tal no necesita un byte de dirección o registro R0-R7, si que la instrucción por si misma implicaque se tiene que acceder a este espacio de memoria. De hecho este tipo de direccionamiento se pareceal direccionamiento de registros. La diferencia, insistiendo en el punto, el código de operación quetiene la instrucción.

DIRECCIONAMIENTO INMEDIATOEste direccionamiento se utiliza cuando se quiere copiar o asignar a algún registro un numeroconstante. Incluso, en el código de operación de la instrucción se incluye el numero constante como parte del mismo. El ejemplo es:

MOV A,#50H

Esta instrucción copia el número 50 hexadecimal al registro A. Nótese que se utiliza el símbolo dealmohadilla (#) para indicar que se utiliza una constante y no una dirección de memoria de datos.

DIRECCIONAMIENTO INDEXADOEste tipo de direccionamiento se utiliza para leer tablas o listas desde la memoria de programa. Seutiliza un registro tal como el DPTR o PC para apuntar al inicio de la tabla y al acumulador comoíndice de la misma. El ejemplo para este tipo de direccionamiento seria:

MOVC A,@A+PC

 Nótese que la dirección apuntada se forma al sumar el contenido del registro A y PC. A su vez funcionacomo un direccionamiento indirecto ya que con la suma de ambos registros se obtiene una direcciónque a su vez contiene el dato que se necesita. También nótese que nemónico es MOVC y no MOV; laC al final del nemónico significa que se van a mover datos de código de programa y no de código dedatos. Entonces este tipo de direccionamiento solo puede ser utilizado para entrar a la memoria de programa y no a la memoria de datos.

9

Page 10: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 10/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

Las instrucciones de la familia 80C51 pueden dividirse en grupos:a) Instrucciones aritméticas. b) Instrucciones lógicas.c) Instrucciones de transferencia de datos.d) Instrucciones para accesos de memoria

externas.

e) Instrucciones booleanas.f) Instrucciones de salto condicional y no

condicional.

A continuación, de la tabla 1 a la tabla 8 se presenta una lista de todas las instrucciones agrupadas deacuerdo a la lista anterior. Se describe los modos de direccionamiento que soporta cada instrucción asícomo el tiempo de ejecución de cada una de ellas suponiendo que se utiliza un cristal (u oscilador externo) de 12MHz.

Tabla 1.-Instrucciones aritméticas

Tabla 2.- Instrucciones lógicas

10

Page 11: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 11/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

Tabla 3.- Instrucciones de transferencias de datos

Tabla 4.- instrucciones para accesos de memorias externas (datos y programa)

Tabla 5.-Instrucciones booleanas

11

Page 12: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 12/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

Tabla 6.- instrucciones de salto con

A continuación se presenta en forma alfabética un resumen de todas las variantes posibles que se tienen

dependiendo del modo de direccionamiento utilizado. Se presenta también el tamaño en bytes de cadainstrucción así como los pulsos necesarios (periodo de oscilación) para la ejecución de la misma.

12

Page 13: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 13/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

Tabla 7.- Resumen de instrucciones

13

Page 14: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 14/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

Tabla 7.- Resumen de instrucciones (cont)

14

Page 15: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 15/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

Tabla 7.- Resumen de instrucciones (cont)

15

Page 16: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 16/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

Tabla 7.- Resumen de instrucciones (cont)

TIMING DEL CPUTodos los microcontroladores de la familia 80C51 tienenun oscilador integrado que puede utilizarse si así sedesea como fuente de reloj para el CPUPara usar este oscilador interno conecte un cristal o unresonador cerámico entre los pines XTAL1 y XTAL2del microcontrolador además de capacitores hacia tierracomo se muestra en la figura 11.

En la figura 12 se muestra como conectar una señal dereloj externo. Esto particularmente se utiliza cuando sevan a conectar varios microcontroladores o se hará unared de microcontroladores y se desea que estén

sincronizados a un solo reloj. Es bastante raro ver este tipo de configuraciones sin embargo se

importante señalar que se pueden sincronizar varios microcontroladores a una misma señal de reloj.

16 

 Figura 11.- conexión de un cristal para usar el 

oscilador interno y generar el reloj para el CPU.

Page 17: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 17/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

 Figura 12.- Conexión externa de una señal de reloj

Una vez visto como generar la señal de reloj para el CPU se debe explicar el concepto de “ciclos demáquina”. Un ciclo de maquina puede considerarse como el tiempo que utiliza el CPU para poder realizar la instrucción más simple de su set de instrucciones.

Para la familia 80C51, un ciclo de maquina consiste en 6 estados, nombrados de S1 a S6. cada estadoutiliza dos periodos del reloj. De esta forma, un ciclo de maquina utiliza 12 periodos de reloj o vistodesde el punto de vista de tiempo, un ciclo de maquina se realiza en 1µs utilizando un oscilador de 12MHz. La figura 13 es un esquema de la división del tiempo que hace el CPU con respecto a la señal dereloj.

 Figura 13.- Ciclo de maquina para la familia 80C51

17 

Ciclo de maquina

Page 18: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 18/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

INTERRUPCIONESLa familia de microcontroladores tiene como mínimo 5fuentes de interrupción: 2 interrupciones externas, 2interrupciones de Timers y 1 interrupción del puertoserie.

Para configurar el comportamiento de lasinterrupciones es necesario utilizar el registro IE(interrup enable). Este registro permite habilitar elreconocimiento de las interrupciones cuando estas se

generan así como habilitar en forma individual la cadauna de las interrupciones. Nótese que el bit utilizalógica negada.

En otras palabras, de acuerdo a la figura 14, el bit  EA  del registro IP le indica al microcontrolador que seutilizaran las interrupciones, mas no le indica cual deellas se utilizará.

Para indicar a cual de las interrupciones se atenderá(una vez habilitada la posibilidad de atender interrupciones con el bit  EA ) se utilizan los bits EX0,

ET0, EX1, ET1 y ES. Respectivamente, activarían: interrupción externa 0, interrupción del timer 0,interrupción externa 1, interrupción del timer 1 e interrupción del puerto serial. Todos estos activan suinterrupción al colocar un 1 o la desactivan si se coloca un 0. Véase la figura 14.

Cada fuente de interrupción puede también ser colocada en una prioridad alta o baja configurandoel registro IP (interrup priority) mostrado en lafigura 15.

Una interrupción de baja prioridad puede ser interrumpida por una interrupción de alta prioridad pero no al revés. Sin embargo, interrupciones delmismo nivel no pueden interrumpirse entre si. Sidos interrupciones son requeridas en formasimultanea y ambas son de distinta prioridad, lainterrupción de prioridad alta será atendida antes dela interrupción de prioridad baja.

En caso de que dos interrupciones sean requeridas yestas sean del mismo nivel, entonces internamente

18

 Figura 15.- Registro IP (interrupt priority)

 Figura 14.- registro IE (interrup enable)

Page 19: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 19/35

g g ( p p y)

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

se elegirá cual de ellas se atenderá comprobando cual de ellas llegó primero. En la figura 16 se muestrael sistema de control de interrupciones.

En operación, todas las banderas de interrupción son latcheadas dentro del sistema de control deinterrupciones durante 5 estados del ciclo de máquina y en el estado 6 es verificado para ver si hayalguna interrupción pendiente. Si alguna de las banderas de interrupción está activa entonces el sistema

de interrupción genera una instrucción LCALL hacia la localidad apropiada de memoria de programasiempre y cuando no se esté atendiendo a una interrupción de alta prioridad. Para que una interrupción pueda ser detectada correctamente, se debe procurar que el pulso de interrupción dure al menos 12ciclos de reloj.

En caso de que no se utilice el registro de prioridad (registro IP) existe una prioridad por default encaso de que las interrupciones lleguen en forma simultanea; en este caso se considera que todas lasinterrupciones están en prioridad 2. la tabla 8 muestra la prioridad cuando todas las interrupciones sonde baja prioridad (o nivel 2).

Tabla 8.- Prioridades cuando no se especifica

una interrupción de nivel 1 (alta prioridad)

FUENTE PRIORIDADIE0 Mas alta

::::

Mas baja

TF0IE1TF1

RI+TI

La instrucción LCALL generada por hardware al recibir una interrupción provoca que el contenido delcontador de programa (PC) sea colocado en la pila y carga al PC con la dirección de inicio de la rutinadel servicio de interrupción. Se debe recordar que el inicio de cada servicio de interrupción tiene una

dirección fija en la memoria de programa al inicio de la misma (ver figura 3). Únicamente el PC esautomáticamente colocado en la pila durante el servicio a una interrupción. Ningún otro registro escolocado en la pila por lo que el programador tiene la libertad de decidir que registro se colocará en la pila y así optimizar su programa.

19

Page 20: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 20/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

 Figura 16.- Sistema de control de interrupciones.

Respecto a las direcciones de inicio de cada una de las interrupciones, que de paso cabe mencionar quea estas direcciones de inicio se les llama vectores de interrupción, se sabe que tienen una dirección fija.Estas direcciones fijas se muestran en la tabla 9

Tabla 9.- Vectores de interrupción

FUENTE DIRECCIÓN(VECTOR)

RST 0000H

IE0 0003H

TF0 000BH

IE1 0013H

TF1 001BHRI+TI 0023H

.Físicamente las interrupciones son manejadas por el hardware mostrado en la figura 16. De acuerdo aesta figura, se puede ver que cada una de las interrupciones externas ( 0 INT  1 INT  ) tienen dosalternativas de entrada lo cual se verá mas adelante en la descripción de los registros que configurantanto a estas interrupciones como a lo timers.

Aunque no es muy común considerar al reset como una interrupción, éste debe ser tratado como tal;cuando llega un pulso de reset a través del pin RST, se detiene cualquier ejecución que se estérealizando en el microcontrolador. Por ello se puede considerar que el reset es la interrupción de mas

alta prioridad y que está por sobre todo el sistema. Además que el reset también tiene su vector deinterrupción como se muestra en la 9.

Cuando sucede un reset el microcontrolador pone en todos sus registros de funcionamiento (o deconfiguración si así se le quiere decir) en valores conocidos (valores por default). Estos valores semuestran en la figura 17.

20

Page 21: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 21/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

 Figura 17.- valores de los SFR’s en un reset Figura 18.- circuito power-on reset  

Para asegurar que el microcontrolador haga un reset al conectar la alimentación del sistemanormalmente se utiliza un circuito denominado “power-on reset”. Este circuito mostrado en la figura 18asegura que el microcontrolador haga un reset y a su vez que alteraciones o ruido de la alimentación provoquen un reset falso. Se puede conectar un push buton en paralelo con el capacitor para crear uncircuito que también permita hacer resets en forma manual con solo presionar dicho botón.

REGISTROS DE FUNCION ESPECIAL (SFR)

En la figura 19 se ve el mapa de memoriainterna (los 128 bytes altos de RAM

interna) correspondiente a los SFR’s.  Nótese que no todos los espacios dememoria tienen asignado algún nombre.

Los espacios sin nombre no estánimplementados físicamente en elmicrocontrolador. Leer de esaslocalidades retornará un valor aleatorio yescribir a esas localidades no tendráningún efecto.

Se debe tener cuidado de ingresar a laslocalidades de memoria noimplementadas ya que pueden ser utilizadas por otros microcontroladores que se basen en el 80C51 para funcionalidades extendidas. En la tabla 10 se describen los registros de función especial básicosde la familia 80C51.

Tabla 10.- Registros de función especial (SFR)

REGISTRO FUNCION

ACCEs el registro acumulador. Muchas instrucciones lo utilizan para operar. Lasinstrucciones solo hacer referencia a el como registro A.

21

 Figura 19.- Mapeo de los SFR’s en la memoria interna de programa

Page 22: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 22/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

BEs un registro que se utiliza en operaciones de multiplicación y división. Para otrasinstrucciones este registro puede ser usado como de propósito general.

PSW (Program StatusWord)

Palabra de estado de programa. Este registro contiene información del status del programa como se detallo en secciones anteriores.

SP (Stack Pointer)Es el apuntador de pila. Es un registro de 8 bits que apunta a la pila del programa. Por default, este registro apunta a la dirección 08H.

DP (Data Pointer)

Es el apuntador de datos. Es un registro de 16 bits el cual puede ser utilizado en parte

alta (DPH) o parte baja (DPL) o como un registro de 16 bits (DPTR). El uso de esteregistro es para direccionamiento de memoria de datos o programa externo.

Puertos 0 al 3Son registros usados como buffer de los puertos P0 al P3 externos. El estado de estosregistros internos es reflejado en los pines externos.

SBUF (Serial Data Buffer)Es el buffer del puerto serie. Físicamente está formado por dos registros: un registro derecepción de datos seriales y un registro de transmisión de datos.

Timers básicosSon cuatro registros que manipulan a los timers/counters. Estos son TH0-TL0 para eltimer 0 y TH1-TL1 para el timer 1.

Registros de controlEstos registros configuran el funcionamiento de los timers, energía delmicrocontrolador, puerto serial e interrupciones. Estos registros son IP, IE, TMOD,TCON, SCON y PCON.

22

Page 23: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 23/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

CONTADORES / TEMPORIZADORES

El 80C51 tiene dos timers/contadores de 16 bits: timer 0 y timer 1; Ambos pueden ser configurados para operar ya sea como timers o contadores de eventos. Se tienen también 2 registros para configurar a

los timers/contadores los cuales son TMOD y TCON y que serán descritos en breve.Cuando se esta utilizando la función de timer (temporizador), el registro que lo maneja es incrementadocada ciclo de maquina. De esta forma, se puede pensar que funciona como contador de ciclos demáquina. Como cada ciclo de maquina consiste en 12 periodos de oscilación del reloj, la frecuencia deconteo es 1/12 de la frecuencia del oscilador.

Cuando se está utilizando la función de contador, el registro que lo maneja es incrementado enrespuesta a una transición de 1 a 0 en el pin T0 o T1. Es muy común utilizar esta función comocontador de eventos externos.

En la figura 20 se muestra al registro TMOD. Se puede ver que el registro esta dividido en dossecciones (dos nibles): el nible bajo indica el funcionamiento del timer 0 y el nible alto indica elfuncionamiento para el timer 2; El registro TMOD se utiliza particularmente para especificar que modode operación tendrá cada uno de los timers (se tienen 2). De allí el nombre del registro: Timer MODe(TMOD). Cada nible contiene 3 campos: Arranque (Gate), operación (C/T  ) y modo (M0, M1).

El campo de operación (C/T  ) se utiliza para especificar si los registros asociados a los timers seránutilizados como timers o como contadores. Si C/T  =1, entonces los registros funcionaran comocontadores; si C/T  =0, entonces los registros funcionarán como timers. Se debe recordar que contador se refiere a que los registros incrementarán su cuenta a través de los pines externos Tx, y timers serefiere a que los registros incrementarán su cuente a través del reloj interno.

 Figura 20.- Registro TMOD

El campo Gate indica el modo de arranque de los timers/contadores; Si Gate=1 y el campo TRx=1 (elcampo TRx está en el registro TCON que se verá en la siguiente sección) entonces los registrosasociados a los timers solo funcionaran si el pin externo  INTx tiene un nivel alto; Estó seria como uncontrol por hardware del arranque de los timers, es decir, los timer incrementaran su cuenta ya sea enforma externa (a través del pin Tx) o de forma interna (con el reloj interno) siempre y cuando el pin

23

Page 24: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 24/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

externo  INTx tenga un nivel alto. Si Gate=0 y TRx=1, entonces los timers/contadores funcionarán sinimportar que nivel tenga el pin externo  INTx .

Se debe tener cuidado con la asociatividad de los pines y los registros internos. Al hablar del campoTRx, se está haciendo referencia ya sea a TR0 o TR1; al hablar del pin externo Tx, se está haciendoreferencia ya sea a T0 o T1; al hablar del pin externo  INTx , se está haciendo referencia ya sea a

0 INT  o

1 INT  . Lo anterior es para aclarar que si se desea configurar al timer 0, entonces los camposy pines externos que intervienen en ello deben ser coincidentes en el numero, es decir, para el timer 0

 pueden estar involucrados T0, TR0 o 0 INT  o los tres, y para el timer 1 pueden estar involucrados T1,TR1 o 1 INT  o los tres. Se debe tener especial cuidado en los registros, campos y pines queintervienen en cada timer para poder realizar una configuración exitosa de los mismos.

Por último, existen 4 modos de operación de los timers especificados en el campo (M0, M1); Es obvioque los modos de funcionamiento son modo 0, modo 1, modo 2 y modo 3 los cuales se describen acontinuación:

a) Modo 0 (timer/contador de 13 bits)

Este modo de operación se implementó en el 8031 para mantener la compatibilidad con su predecesor el 8048, generalmente en nuevos diseños no se emplea este modo de operación.

En este modo de operación los timers se pueden configurar como un contador de 13 bits, los 5 bits mas bajos de TLx son un contador de 0-31 (preescalador) y THx es un contador de 8 bits.Los 3 bits más altos de TLx son aleatorios y deben de ignorarse. Cuando en la cuenta TLx llegaa 31 y se incrementa, se resetea a cero e incrementa a THx.

Recordando que los timers son una fuente de interrupción, cuando en este modo se pasa detodos 1’s a todos 0’s (cuentan los 13 bits), se generará una interrupción (se activa la banderaTFx) que puede o no ser atendida.

En la figura 21 se muestra el diagrama a bloques de este modo de funcionamiento.

 Figura 21.- Funcionamiento del timer 1 en el modo 0

 b) Modo 1 (timer/contador de 16 bits)Este modo de operación funciona igual que el modo cero, excepto que la cuenta se extiendehasta FFFFH (65535). Es el modo de operación más utilizado en los diseños actuales. TLx seincrementa desde 0 hasta 255 y al siguiente incremento se “resetea” e incrementa a THx en uno.

24

Page 25: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 25/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

Cuando en este modo se pasa de todos 1’s a todos 0’s (cuentan los 16 bits), se generará unainterrupción (se activa la bandera TFx) que puede o no ser atendida.

c) Modo 2 (timer/contador de 8 bits con autorecarga)

Este modo de operación funciona igual que el modo cero, excepto que el registro TLx se utilizacomo un contador de 8 bits y el registro THx se utiliza como “valor de recarga”. Cuando elcontenido de TLx cambia de todos “1” a todos “0” se genera la interrupción respectiva y setransfiere a TLx el valor de THx, el contenido de THx permanece sin cambio. La figura 22muestra esquemáticamente este modo de funcionamiento.

 Figura 22.- Funcionamiento del timer 1 en el modo 2

d) Modo 3 (Doble timer/contador de 8 bits) En este modo de operación el timer 1 mantiene su cuenta y se deshabilita. El timer 0 se divideen dos contadores separados; TL0 hace las veces de timer 0 y es TH0 hace las veces de timer 1.

Con lo anterior, TL0 utiliza los bits T0, TR0, 0 INT  , Gate y C/T. A su vez, TL0 generará lainterrupción correspondiente al timer 0. Entonces, TL0 Puede ser configurado para funcionar como timer o como contador.

TH0 a pesar de que funciona como otro contador de 8 bits, es asegurado para funcionar exclusivamente como timer y no como contador. De esta forma, TH0 utilizará solo el bit TR1 para empezar su funcionamiento sin importar C/T y Gate. Ahora, TH0 manejara la interrupcióncorrespondiente al timer 1.

En la figura 23 se muestra el esquema de funcionamiento de este modo de operación.

25

Page 26: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 26/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

 Figura 23.- Funcionamiento del timer 0 en el modo 3

Existe otro registro que configura a los timers: El registro TCON. En la figura 23 se muestran loscampos y la descripción del registro TCON.

 Figura 24.- Registro TCON 

El registro TCON tiene cuatro campos para el control de los timers y las interrupciones externas: ITx,IEx, TRx y TFx (donde x puede ser 0 o 1).

El campo ITx se utiliza para definir el tipo de interrupción atendida. Si ITx=1, entonces la interrupción

externa se reconocerá por flanco de bajada, es decir, solo una interrupción será detectada cuando existauna transición de 1 a 0 no importando cuanto tiempo se quede en 0. Si ITx=0, entonces la interrupciónexterna se reconocerá por nivel bajo, es decir, en una transición de 1 a 0 se pueden detectar múltiplesinterrupciones dependiendo del tiempo que la señal de interrupción se quede en nivel bajo en relacióncon los ciclos de máquina.

El campo IEx es manejado por hardware; es la bandera de detección de interrupción externa. Cuando segenera una interrupción este bit automáticamente se pone a 1 y al pasar a la rutina de servicio a lainterrupción se pone a 0 en forma automática.

26 

Page 27: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 27/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

El campo TRx se utiliza para habilitar o deshabilitar los timers. Si TRx=0, entonces el timer correspondiente se apaga (deshabilita). Si TRx=1, entonces el timer correspondiente se enciende(habilita). Aplica independientemente si el timer funciona como timer o como contador.

El campo TFx es manejado por hardware; es la bandera de detección de sobreflujo de los timers. Esto a

su vez generará una interrupción del timer en cuestión. Cuando hay un sobreflujo del timer, TFx se pone a 1. Al atender dicha interrupción, esta bandera se pone a 0 en forma automática.

INTERFAZ SERIAL ESTANDAR 

La familia 80C51 tiene un puerto serial full duplex, lo que significa que se pueden transmitir y recibir datos en forma simultanea. Otra característica interesante es que la recepción de datos tiene un buffer loque implica que después de haber recibido un dato, inmediatamente se puede comenzar a recibir otrodato sin perder el anterior. El único cuidado que se debe tener es guardar el primer dato antes de que setermine de recibir el segundo dato ya que de no hacerlo, el primer dato se perderá al ser sustituido por 

el segundo dato.Se tienen dos SFR’s asociados al puerto serial y aunque tienen el mismo nombre a nivel programaciónson dos registros diferentes a nivel hardware, es decir, tienen direcciones de memoria distintos. El SFR al cual se está haciendo referencia es el SBUF. Cuando se recibe un dato por el puerto serie, éste seescribe en el registro SBUF; al terminar la recepción se genera una interrupción para avisar que se tienelisto un dato y que hay que recuperarlo, leerlo o guardarlo en alguna posición de memoria para evitar la perdida de éste, lo que se hace leyendo al registro SBUF. Entonces, ya sea para enviar o recibir datos por el puerto serial, se escribe o lee respectivamente al registro SBUF.

El puerto serial de la familia 80C51 puede operar de 4 formas descritas a continuación:

a) Modo 0 (registro de corrimiento): Operación Half Duplex , los datos se envían y reciben (perono simultáneamente) a través de la terminal RXD mediante frames de 8 bits, el LSB (bit menossignificativo) primero. La velocidad es fija a la doceava parte de la frecuencia del oscilador. Lafrecuencia de corrimiento, que es igual a la velocidad de transmisión se presenta en la terminalTXD durante la transmisión y recepción, esta señal se utiliza para sincronizar el receptor otransmisor. En este modo se inicia la recepción cuando el bit REN es uno y el bit RI es cero (enel registro SCON).

 b) Modo 1 (8 bits): Operación Full Duplex Asíncrono de 10 bits. Los datos seriales se envían através de la terminal TXD y se reciben a través de la terminal RXD. Un frame completo constade un bit de start también llamado de inicio (siempre un cero), seguido de ocho bits de datoscomenzando por el LSB (bit menos significativo) y un bit de stop también llamado de paro(siempre un uno). Los bits de START y STOP se adicionan por hardware, el software escribe olee el dato de ocho bits en el registro SBUF. La velocidad de transmisión se puede variar utilizando el timer 1 como generador de baud rate (velocidad de transmisión/recepción).

c) Modo 2 (9 bits): Este modo de operación es similar al modo 1, con dos excepciones. Primero,el número de bits del frame es once ya que se inserta un noveno bit antes del bit de STOP.Cuando se transmite, el noveno bit se obtiene del bit TB8 en el registro SCON y se asume que

27 

Page 28: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 28/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

TB8 fue escrito antes de iniciar la transmisión de datos. Cuando se recibe, el noveno bit dedatos se puede leer de RB8 en el registro SCON.

Segundo, que el baud rate (velocidad de transmisión/recepción) no es programable a través deltimer 1 si no que es programable a dos velocidades fijas ya sea a 1/32 o 1/64 la frecuencia deloscilador (cristal o resonador utilizado).

El noveno bit transmitido comúnmente es utilizado como bit de paridad. Recordando que la paridad es un método de detección de errores de transmisión.

d) Modo 3 (9 bits): La forma de operar en modo tres es la misma que el modo dos, excepto que lavelocidad de transmisión se puede variar como en el modo uno.

Dentro de los modos de operación se ha hablado del registro SCON (serial-control). Este registro esutilizado precisamente para configurar al puerto serial. Este registro, como se muestra en la figura 25,contiene también banderas de interrupción y el bit de paridad (noveno bit de transmisión) en caso deque éste sea utilizado.

 Figura 24.- Registro SCON 

 El campo RI es la bandera de interrupción de recepción del puerto serial. Se pone a uno cuando terminade llegar el octavo bit en el modo 0, o a la mitad del bit de stop en los demás modos (excepto cuando seutiliza el campo SM2). El bit RI debe ser limpiado por software.

El campo TI es la bandera de interrupción de transmisión del puerto serial. Se pone a uno cuandotermina de enviarse el octavo bit en el modo 0, o a la mitad del bit de stop en los demás modos. El bitRI debe ser limpiado por software.

El campo RB8 en los modos 2 y 3, es el noveno bit que ha sido recibido (posiblemente paridad). En elmodo 1, si SM2=0, RB8 es el bit de stop que ha sido recibido. En el modo 0 RB8 no se utiliza.

28

Page 29: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 29/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

El campo TB8 es el noveno bit que será transmitido en los modos 2 y 3. Este bit se puede manipular  por software a como el programador lo desee poniéndolo a uno o cero.

El campo REN se utiliza para habilitar la recepción serial. Para habilitar la recepción REN debe estar  puesto a uno. Para deshabilitar la recepción REN debe ponerse a cero. Este bit puede considerarsecomo el “switch” de la recepción independientemente de la habilitación de la interrupción del puerto

serial el cual se configura en el registro IE.El Campo SM2 habilita la característica de comunicación multiprocesador en los modos 2 y 3. En elmodo 2 o 3, si SM2=1 entonces RI no será activado (puesto a 1 para generar la interrupción del puertoserial) si el noveno bit recibido (RB8) es 0. En el modo 1 , si SM2=1entonces RI no será activado si un bit de stop valido no ha sido recibido. En el modo 0, SM2 debe ser cero.

Por último, los campos SM0 y SM1 se utilizan para especificar el modo de operación del puerto serial,esto es, selecciona el modo 0, 1, 2 o 3 de funcionamiento.

Configuración de velocidades de transmisión (baud rate)

Dependiendo del modo de operación del puerto serial existen varias opciones de configuración para lasvelocidades de transmisión. La velocidad de transmisión en el modo 0 es fija a 1/12 de la frecuenciadel oscilador.

La velocidad de transmisión en el modo 2 depende del valor del bit SMOD en el registro PCON. SiSMOD=0 entonces la velocidad de transmisión es de 1/64 de la frecuencia del oscilador; si SMOD=1entonces la velocidad de transmisión es de 1/32 de la frecuencia del oscilador. Para el modo 2, laecuación 1 determina la velocidad de transmisión del puerto serial.

oscilador del   frecuenciaratebaud SMOD

×=64

2 Ec. 1

Las velocidades de transmisión para los modos 1 y 3 son determinados por la velocidad de sobreflujodel timer 1 y por el bit SMOD del registro PCON. La ecuación 2 determina la velocidad de transmisióndel puerto serial

132

2timer  sobreflujode  frecuenciaratebaud 

SMOD

×=  Ec. 2

El timer 1 debe ser deshabilitado para esta aplicación. El timer por si mismo puede ser configuradocomo timer o contador y en cualquiera de sus tres modos de operación. En la mayoría de laaplicaciones, el timer se configura en el modo de auto recarga (modo 2 de operación como timer). Eneste caso, la velocidad de transmisión está dada por la ecuación 3. 

( )[ ]12561232

2

TH 

oscilador del   frecuenciaratebaud 

SMOD

−×

×=  Ec. 3

29

Page 30: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 30/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

La ecuación 3 muestra como determinar la velocidad de transmisión; pero en ocasiones en mas útildespejar a TH1 para saber cual debe ser el valor de recarga para una velocidad determinada. Laecuación 4 muestra el despeje de TH1 para generar una velocidad de transmisión determinada en losmodos 1 y 3 del puerto serial.

×

×−=

ratebaud 

oscilador del   frecuenciaTH 

SMOD

384

22561  Ec. 4

También se pueden generar velocidades de transmisión muy bajas habilitando la interrupción del timer 1 y configurando el timer para funcionar en el modo de 16 bits (modo 1). Al generarse la interrupcióndel timer 1 se manipula al puerto serial y así se tiene un generador de velocidades de transmisión conrecargas de 16 bits.

En la tabla 11 se muestran las formas de generar velocidades de transmisión comunes así como lasconfiguraciones que deben tener lo bits de control y registros que intervienen para este fin.

Tabla 11.- configuraciones de bits y registros para velocidades de transmisión serial comunes

Aunque el registro PCON es utilizado en la comunicación serial, su función es más para controlar laenergía que utiliza el microcontrolador. Como se muestra en la figura 25, solo 1 de los 5 campos delregistro PCON es utilizado en la comunicación serial. Por lo tanto se hará la descripción de esteregistro en esta sección.

30

Page 31: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 31/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

 Figura 25.- Registro PCON 

El campo SMOD como ya se vio anteriormente, se utiliza para determinar la velocidad de transmisión

del puerto serial.

El campo IDL se utiliza para poner el microcontrolador en un modo que se puede denominar comoocioso. Si IDL=0 entonces el funcionamiento del microcontrolador es normal; si IDL=1 elmicrocontrolador entra en modo ocioso. En este modo de funcionamiento, el reloj interno esdesconectado de casi todos los circuitos internos con lo que no se seguirán ejecutando instrucciones dela memoria de programa. Sin embargo, las funciones de los timers, interrupciones y puerto serial siguenfuncionando. También, el contenido de la memoria RAM interna lo cual incluye a los SFR’s semantiene intacta. La forma de salir del modo ocioso es de dos formas: al generarse una interrupción oal generarse un reset.

El campo PD se utiliza para poner al microcontrolador en el modo de bajo consumo. Si PD=0, elmicrocontrolador funciona en forma normal; si PD=1 entonces el microcontrolador entra en el modo de  bajo consumo de energía. A diferencia del modo ocioso, el modo de bajo consumo detiene lasinterrupciones, los timers y el puerto serial. Todo el contenido de la memoria RAM interna incluyendolos SFR’s se mantienen intactos. La única forma de salir de este modo es generando un pulso de reset.

Los campos GF0 y GF0 son banderas de propósito general y el usuario puede utilizarlos según sea suconveniencia.

Como comentario final del registro PCOM si los campos PD y IDL son puestos al mismo tiempo PDtoma precedencia. Para los bits 6 al 4 se debe procurar no fijarlos a uno. Un Reset los coloca a cero.

BIBLIOGRAFÍA

Este documento está basado en el Data HandBook IC20 de Phillips de los microcontroladores basadosen el 80C51.

31

Page 32: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 32/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

COMO PROGRAMAR A LA FAMILIA 80C51

Se debe recordar que la familia 80C51 es una especie de subconjunto de los microprocesadores x86;con ello, es de esperarse que la mayor parte de las instrucciones así como la forma en que operan seamuy similar a la familia x86.

Lo que hay que aprender es cómo hacer la distribución de nuestro programa dentro de la memoria de programa; esto depende del compilador a utilizar. Se utilizará el ensamblador de Avocet Systems elcual provee un ensamblador y un linker e incluso un simulador.

Para poder generar un programa que el microcontrolador entienda desde la E/EPROM se realizan dos pasos en particular:

a) Traducir los nemonicos a lenguaje de maquina.

32

Page 33: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 33/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

 b) Colocar el programa en lenguaje de maquina dentro de un “frame” o marco de datos adicionales para su transferencia a la memoria ROM de programa.

a) Ensamblar el programa: El código fuente escrito en nemonicos debe estar en un archivo conextensión “.asm”. Este archivo debe editarse en algún editor de tipo ASCII, cualquiera que éste sea.Una vez editado el programa se debe escribir en la línea de comandos desde la carpeta donde se

encuentre el programa ensamblador de la siguiente forma:

< ruta >\ avmac51 < archivo.asm >

Este comando creará un archivo “.obj” el cual es la traducción de los nemonicos a código demaquina y tiene el mismo nombre que el archivo “.asm”. Cabe mencionar que puede omitirse laextensión del archivo “.asm” a la hora de compilar el programa.

El ensamblador tiene la capacidad de detectar errores de sintaxis por lo que si existe alguno, no segenerará el archivo “.obj” hasta que el error halla sido corregido.

b) Linkear el programa: Este proceso significa colocarle al archivo “.obj” un frame o marco de datosque se utilizan para la transmisión de los mismos desde el programador que es el que se encarga degrabar el programa en la memoria E/EPROM hasta ésta última. Este frame tiene información acerca de la dirección a partir de la cual se inicia la grabación del programa, datos para detección deerrores, información de número de bytes a grabar y otros datos que por el momento no nosdetendremos a estudiar.

El frame utilizado depende del microcontrolador a utilizar. Intel utiliza un frame distinto a motorotao Texas Instruments. La familia 80C51 al ser creada por Intel, utiliza un frame específico paramicroprocesadores y microcontroladores Intel.

El programa linkeador genera entre otros, un archivo con extensión “.hex”. Este archivo es el quese cargará posteriormente en el software del programador y es el que se grabará en la memoriaE/EPROM. El nombre del archivo “.hex” normalmente es el mismo del archivo “.obj” a partir delcual se crea y del “.asm” a partir del cual se genera el “.obj” aunque si se desea se pueden generar archivos con distintos nombres.

Para generar el archivo “.hex” se debe escribir en la línea de comandos lo siguiente:

< ruta >\ avlink < archivo.abj=archivo.hex >

Se puede omitir la extensión de los archivos de tal forma que puede queda <archivo=archivo>. Unavez realizado esto, el archivo generado “.hex” es el que se debe cargar hacia la memoria E/EPROMmediante algún programador de memorias.

DIRECTIVAS DEL ENSAMBLADOR AVMAC51

Las directivas son una especie de palabras reservadas que utiliza el ensamblador para saber como debeensamblarse el programa. A continuación se presentan algunas de esas directivas.

33

Page 34: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 34/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

DEFSEG: Esta directiva sirve para definir el nombre de algún segmento de programa que se utilizarádentro del mismo. Se puede tomar la equivalencia en C o C++ al prototipo de una función. Estadirectiva se utiliza en conjunto con la directiva START. Por ejemplo:

 DEFSEG RST, START=0H 

Lo anterior indica al ensamblador que existirá un segmento llamado “ RST ”.START: Le indica a la directiva DEFSEG en que dirección de memoria de programa debe colocar elsegmento definido por DEFSEG. Por ejemplo:

 DEFSEG RST, START=0H 

Lo anterior indica que el segmento denominado “ RST ” debe iniciar (debe colocarse) en la dirección dememoria de programa 00H.

EQU: Se utiliza para asignar valores numéricos a etiquetas. Por ejemplo:

PUERTO: EQU 20

Lo anterior significa que cada vez que el ensamblador encuentre la palabra (o cadena) “PUERTO” debeser tomado como un número 20. En el sentido estricto, se estaría asignando el numero a la cadena“PUERTO”.

El uso de la etiqueta “PUERTO” puede variar. En ocasiones puede usarse como una mera constante o bien, se puede utilizar como una variable. Por ejemplo la instrucción: 

MOV A,#PUERTO

Esta instrucción hace que en el registro A tenga un valor 20 ya que “PUERTO” mediante la directivaEQU tomó ese valor y se está utilizando direccionando inmediato.

Ahora veamos las siguientes dos instrucciones:

MOV A,PUERTOMOV PUERTO,#A

En las instrucciones anteriores, puerto en realidad estaría funcionando como una variable. Sirecordamos el concepto de variable de C o C++, ésta es una localidad de memoria a la cual se la haasignado una identificador (nombre). Estas variables pueden ser de tipo entero, real o carácter.

Entonces en el caso de la primera instrucción, se estaría moviendo el contenido de “PUERTO” que eneste caso es tomado como una dirección y colocado en el registro A. La segunda instrucción seria locontrario, el contenido de A es colocado en “PUERTO”. Nótese que al usar direccionamiento directo,“PUERTO” se utiliza para guardar o extraer datos de la localidad 20 de memoria de datos. Por ello esque se dice que en este caso “PUERTO” puede ser utilizado como un identificador (variable) con lalimitante que seria el equivalente a una variable entera o de carácter de C o C++

34

Page 35: HADWARE 8051

5/11/2018 HADWARE 8051 - slidepdf.com

http://slidepdf.com/reader/full/hadware-8051 35/35

Universidad Autónoma del estado de México Arquitectura básica de microcontroladores basados en el 80C51

Es obvio que con las demás formas de direccionamiento, “PUERTO” tendrá otras connotaciones. Lafacilidad de uso del direccionamiento directo hace que podamos asignar nombres a posiciones dememoria de datos lo cual es ampliamente utilizado en lenguaje ensamblador para no tener que estar aprendiéndose las direcciones de los datos utilizados en el programa. Es mas fácil aprenderse unnombre de una posición de memoria que su dirección misma.

SEG: Indica el inicio de un segmento previamente definido por la directiva DEFSEG. Por ejemplo:SEG RST

CICLO: MOV P1,#01ACALL DELAYMOV P1,#02ACALL DELAY

En el listado anterior todas las instrucciones y etiquetas después de la directiva SEG RST perteneceránal segmento RST hasta que no se encuentre otra directiva SEG que indique el inicio de otro segmento.

El equivalente de C o C++ sería escribir el cuerpo de una función la cual ya ha sido definida como

 prototipo al inicio del programa (en ensamblador con la directiva DEFSEG).

DB:

END:

ORG:

35