Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 102 -
NOMBRE DE LA PRCTICA Microcomputadora con el 8051
OBJETIVO ESPECFICO: Conocer las componentes y la programacin de un Microcontrolador 8051
INTRODUCCIN: SISTEMAS BASADOS EN MICROCONTROLADOR
Un sistema de computadora basado en microcontrolador es diferente funcionalmente a un sistema basado en un microprocesador. El primero se utiliza de una forma ms eficiente en un sistema que ejecuta un programa dedicado (o fijo) repetitivamente sin la necesidad de ser reprogramado. A un microcontrolador con frecuencia es llamado computadora en un chip. El nombre anterior se le otorga ya que contiene todos los componentes de un sistema de computadora (bus, CPU, memoria y puertos E/S) en un solo circuito integrado. APLICACIONES TIPICAS DE LOS MICROCNTROLADORES Ejemplos en los cuales se incluye el uso de programas fijos repetitivos son los siguientes:
Videograbadoras Mquinas contestadoras Instrumentacin mdica Automviles Hornos de micro-ondas Bsculas digitales Bombas de gasolina Cajeros automticos
EL MICROCONTROLADOR 8051 El 8051 fue creado por INTEL en 1981 y tiene las caractersticas siguientes:
o CPU de 8 bits o Procesador Booleano con el cual puede realizar operaciones bit a bit o 128 bytes de RAM interna o 4 Kbytes de memoria de programa interna (ROM) o 5 fuentes de interrupcin con 2 niveles de prioridad PRACTICA N0. 10 Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 103 - o 32 bits de entrada/salida direccionables bit a bit o 1 puerto serie Full dplex (UART) o 2 Contadores-Temporizadores de 16 bits programables o 1 oscilador para las seales de reloj o Posibilidad de direccionar hasta 64Kbytes de memoria de programa externa o Posibilidad de direccionar hasta 64Kbytes de memoria de datos externa o varias velocidades desde 12MHz
Posteriormente han sido desarrolladas otras versiones del 8051 con distintas caractersticas de RAM, ROM, etc..
ARQUITECTURA INTERNA DEL 8051
LA DISTRIBUCIN DE MEMORIA DEL 8051 El 8051 est diseado en base a lo que se conoce como Arquitectura Hardvard. Dicha arquitectura divide el espacio total de memoria en dos reas distintas: de cdigo o de programa y de datos.
MEMORIA DE CODIGO O DE PROGRAMA. El 8051 tiene 4096 bytes de memoria de cdigo interna. El rango se puede incrementar, usando memoria externa, hasta un total de 64 KB. Interrupciones internas Interrupciones externas 4K ROM 4K ROM 128 bytes RAM 128 bytes RAM Timer0 Timer0 Timer1 Timer1 Control del bus Control del bus 4 Puertos E/S (32 lneas) 4 Puertos E/S (32 lneas) Puerto serie Puerto serie 8051 CPU 8051 CPU OSC OSC Controlador de interrupciones Controlador de interrupciones Entradas a contadores Bus de datos/direcciones P0 P1 P2 P3 RD WR RxD TxD SFR Interrupciones internas Interrupciones externas 4K ROM 4K ROM 128 bytes RAM 128 bytes RAM Timer0 Timer0 Timer1 Timer1 Control del bus Control del bus 4 Puertos E/S (32 lneas) 4 Puertos E/S (32 lneas) Puerto serie Puerto serie 8051 CPU 8051 CPU OSC OSC Controlador de interrupciones Controlador de interrupciones Entradas a contadores Bus de datos/direcciones P0 P1 P2 P3 RD WR RxD TxD SFR MEMORIA DE PROGRAMA DEL 8051 MEMORIA DE PROGRAMA DEL 8051 MEMORIA DE PROGRAMA DEL 8051 & 4K Bytes Interna 4K Bytes Interna 0000 0FFF 4K Bytes Interna 4K Bytes Interna 0000 0FFF 60 K Bytes Externa 60 K Bytes Externa 1000 FFFF 60 K Bytes Externa 60 K Bytes Externa 1000 FFFF O 64 K Bytes Externa 64 K Bytes Externa 0000 FFFF 64 K Bytes Externa 64 K Bytes Externa 0000 FFFF El tamao de la memoria de programa externa puede ampliarse hasta 64kbytes. Los primeros 4k (8 K para el 8052 ) pueden residir en el chip. Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 104 -
MEMORIA DE DATOS INTERNA. La capacidad de memoria de datos interna es de 256 bytes. La mitad baja, 128 bytes, se usa para almacenamiento por el programa de variables de datos. La parte superior se reserva para los Registros de Funciones Especiales (SFR).
REGISTROS DE FUNCIONES ESPECIALES. Los SFRs se usan para almacenar los valores, en bytes, que controlan la operacin del 8051. Aquellos registros cuya direccin es divisible por 8 se puede direccionar por bit. El espacio de memoria para los SFRs est contenido de los bytes 128 (80H) al 255 (FFH). Este espacio de memoria es accesible solo a travs de direccionamiento directo. Algunas de las direcciones en el espacio de SFRs son direccionables tanto en forma de byte como de bit. As que otras solo son direccionables en forma de byte. Estos registros tienen valores que el 8051 utiliza conforme ejecuta instrucciones.
MEMORIA DIRECCIONABLE POR BIT. Aparte de los SFRs direccionables por bit, tambin se pueden direccionar 16 bytes de memoria interna de datos de esta manera. Esto le permite al programador manipular los datos en un sentido bit a bit, lo cual es una de las caractersticas ms sobresalientes del 8051. MEMORIA EXTERNA DE DATOS. Si se requiere de ms memoria para almacenamiento de datos, el 8051 puede direccionar en forma externa un adicional de 64 KB de RAM. Memoria de Datos Interna Memoria de Datos Interna Accesible solo con Direccionamiento Directo Accesible solo con Direccionamiento Directo Accesible con Direccionamiento Directo e Indirecto Accesible con Direccionamiento Directo e Indirecto Accesible Solo con Direccionamiento Indirecto Accesible Solo con Direccionamiento Indirecto Registros de Funcin Especial Puertos Bits de status y control Registros de Timers Stack pointer Acumulador Etc. 00H 7FH 80H FFH 128 bytes Ms bajos 128 bytes Ms altos Externa Externa Relacin de reas de almacenamiento en el C 8051 Relacin de reas de almacenamiento en el C 8051 Interna o externa Interna o externa Externa Externa Memoria de programas Memorias de Datos Interna Memorias de Datos Externa Espacio de Registros de Funcin Especial SFR 0000H 0FFFH 1000H FFFFH 00H 7FH 80H FFH 0000H FFFFH El 8051 tiene espacios de direcciones separados para memoria de programa y memoria de datos. Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 105 -
DIAGRAMA FUNCIONAL DE PINES DEL 8051
El 8051 se encuentra disponible en un encapsulado tipo DIP de 40 pines. Sus
FUNCIONES ALTERNAS DE LOS PUERTOS DEL 8051 Cada uno de los puertos de E/S tiene una funcin alternativa que le permite mayor versatilidad al 8051. El Puerto 0 sirve para multiplexar la parte baja de direcciones y al bus de datos durante el acceso a cdigo y memoria de datos externos. El Puerto 1 tiene funciones alternativas solo en el 8052. Los bits 0 y 1 sirven como T2 y T2EX respectivamente. El Puerto 2 emite el byte de la parte alta de direcciones durante el acceso a memoria, de cdigo o datos, externa que utiliza direcciones de 16 bits. El puerto 3 tiene las funciones listadas en seguida:
P3.0 RXD (Entrada de puerto serie) P3.1 TXD (Salida de puerto serie) P3.2 INT0 (Interrupcin externa 0) P3.3 INT1(Interrupcin externa 1) P3.4 T0 (Entrada para temporizador 0) P3.5 T1 (Entrada para temporizador 1) P3.6 WR (pulso de escritura para memoria ext.) P3.7 RD (pulso de lectura para memoria ext)
MIEMBROS Y PRODUCTOS DE LA FAMILIA MCS-51
Los tres miembros originales de la familia son el 8031, 8051 y 8751, en seguida se describen sus caractersticas.
8031 y 8051. Estos dispositivos proveen una solucin efectiva en costo para aquellas aplicaciones de control que requieren de hasta 64 KB de cdigo y/o 64 KB de almacenamiento. El 8031 contiene: 128 bytes de memoria de datos de lectura/escritura 32 lneas de E/S bidireccional (4 puertos) dos contadores/temporizadores de 16 bits Una estructura de interrupciones con dos niveles de prioridad y cinco fuentes Puerto serie de E/S programable Oscilador integrado con circuitera de reloj
- 106 - El 8051 tiene todas las caractersticas del 8031 ms 4 KB de memoria de cdigo de solo lectura, no voltil. El 8751 es una versin EPROM del 8051, tiene todas las caractersticas del 8031 ms 4 KB de memoria de cdigo de solo lectura, programable y borrable.
VERSIONES CHMOS Los dispositivos anteriores se encuentran disponibles en una versin CHMOS de ahorro de energa: 80C31, 80C51 y 87C51 respectivamente. Estos dispositivos CHMOS operan a una velocidad mayor, tiene una mayor densidad de transistores y consumen menos potencia que los dispositivos previamente listados. Cada uno de estos componentes tiene la misma funcionalidad que su equivalente estndar ms dos modos seleccionables mediante programacin que reducen el consumo de potencia: Espera (Idle) y Potencia Baja (Power Down). Estos modos hacen de dichos componentes ideales para aplicaciones operadas por batera.
MODO DE ESPERA (IDLE) Este modo congela al CPU mientras que permite que continen funcionando la memoria RAM, contadores, puerto serie y sistema de interrupciones.
MODO DE POTENCIA BAJA Este modo protege el contenido de memoria RAM, pero congela el oscilador, causando que todas las dems funciones del chip no operen.
Miembros de la subfamilia 8052 y 80C51FA El 8032 y el 8752 son productos subfamiliares del 8052. El 83C51FA y el 87C51FA son miembros del 80C51FA as como el 83C51FB y el 87C51FB son miembros de la subfamilia del 80C51FB.
8032, 8052 y 8752. El 8052 tiene 8 KB de ROM programada de fbrica y el 8032 es una versin sin ROM del 8052, mientras que el 8752 tiene 8 KB de memoria de programa EPROM. Sus caractersticas se listan en seguida: 256 bytes de memoria de datos de lectura/escritura 32 lneas bidireccionales de E/S (4 puertos) 3 temporizadores/contadores de 16 bits Estructura de interrupciones con dos niveles de prioridad y seis fuentes originadoras. Puerto serie programable de E/S Oscilador integrado con circuitera de reloj
83C51FA, 80C51FA y 87C51FA
El 8032, 8052 y 8752 tambin tienen sus versiones CHMOS: 83C51FA y FB, 80C51FA y FB y 87C51FA y FB, respectivamente. Estos dispositivos presentan caractersticas similares a los anteriores CHMOS. Los dispositivos FB son versiones compatibles con la serie FA, pero tienen 16 KB de ROM, adems se incluye una nueva caracterstica el Arreglo de Contador Programable.
ARREGLO DE CONTADOR PROGRAMABLE (PCA) Consiste de un contador de 16 bits y cinco mdulos de 16 bit de comparacin/captura. Estos ltimos comparten los pines P1.2 a P1.7. Cada mdulo tiene su propio registro de modo, CCAPMn, que se utiliza para configurar el mdulo n. Cada mdulo puede programarse como: Modulador de ancho de pulso (usado para conversin d/a) Registro de comparacin/captura (para medicin muy precisa en tiempo real de ancho de pulso) salida de alta velocidad
Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 107 - Adicionalmente, el mdulo 4 se puede programar para actuar como un temporizador tipo Perro Guardin (Watchdog Timer). El PCA puede generar una interrupcin cuando se programa como temporizador como registro de comparacin/captura.
OTROS PARIENTES DE LA FAMILIA 8051 Existen otros componentes que han tomado la base del microcontrolador 8051 y le han sumado alguna otra funcionalidad. Estos componentes hbridos se conocen como proliferaciones. Los siguientes componentes utilizan la arquitectura del 8051 as como un controlador de comunicaciones serie en el caso del 8X44, un controlador de comunicaciones serie de alta velocidad en el 8XC152 y un controlador de perifricos en el 8XC452. Sumario de la Familia 8051
El 8051 tiene dos temporizadores/contadores de 16 bits, cada uno de ellos puede operar en cuatro modos, dndole un rango amplio de opciones para resolver muchos problemas diferentes. Los registros de funciones especiales TL0 y TH0 son los bytes alto y bajo del temporizador/contador 0. El temporizador 1 est formado por TL1 y TH1. Cada uno puede programarse para usar ciclos de mquina (temporizador) seales externas en su pin de puerto (contador), como fuente de conteo.
Un temporizador cuenta hacia arriba desde su valor inicial hasta que llega a un sobreflujo. Al ocurrir se pone a uno la bandera correspondiente (TF0 TF1), y el conteo contina. TF0 y TF1 se encuentran en el registro TCON.
Oscilador interno Oscilador interno fxtal : 12 : 12 CONTADOR CONTADOR fxtal / 12 fosc= fxtal Conteo inicial Conteo inicial TF0 TF0 C/T=1 contador C/T=0 timer C / T C / T TRx TRx GATE GATE CLK OVF Genera Interrupcin Genera Interrupcin Xtal1 Xtal1 Xtal2 Xtal2 Tx Tx INTx INTx Oscilador interno Oscilador interno fxtal : 12 : 12 CONTADOR CONTADOR fxtal / 12 fosc= fxtal Conteo inicial Conteo inicial TF0 TF0 C/T=1 contador C/T=0 timer C / T C / T C / T C / T TRx TRx GATE GATE CLK OVF Genera Interrupcin Genera Interrupcin Xtal1 Xtal1 Xtal2 Xtal2 Tx Tx INTx INTx Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 108 - REGISTRO PARA CONTROL DE LOS TEMPORIZADORES (TCON)
Un temporizador puede ser escrito ledo en cualquier momento. El bit TR0 es el interruptor de funcionamiento para el temporizador 0: si se pone a 1 se enciende el temporizador 0. TR1 hace lo mismo para el temporizador 1. Estos bits se pueden accesar en forma independiente.
Modo 0. (Contador de 8 bits con Pre-escalamiento de 5 bits) Este modo es el de omisin despus de inicializar el procesador (reset). El byte bajo utiliza solo cinco bits para ejecutar un pre-escalamiento divisin por 32 en la fuente de conteo. Cada uno de sus sobreflujos suma una cuenta al byte alto. Se pueden programar tanto el byte alto como el bajo. Al escribir los valores iniciales adecuados se puede ajustar el sobreflujo sobre un rango de 1 a 8 K (1 uS a 8.19 mS con un reloj de 12 Mhz). Interrupciones de los temporizadores La bandera de sobreflujo para cada temporizador sirve tambin como el flip-flop de peticin de interrupcin para ese temporizador. Si el bit de habilitacin de interrupcin es uno (Etx para el temporizador x) y EA=1, la ejecucin del programa saltar a la localidad del vector de interrupcin del temporizador correspondiente (por supuesto que al finalizar de ejecutar la instruccin actual, y si no se esta dando servicio a otra interrupcin de igual o mayor prioridad). El hardware limpia la bandera Tfx, cuando salta hacia la rutina de servicio de interrupcin del temporizador x. El uso de una interrupcin (en lugar de consulta) para disparar algn proceso despus de un retardo requerido permite que se manejen otros procesos durante el retardo.
Modo 1. (Contador de 16 bits) En este modo, TLx se pone en cascada con THx, dando un rango mximo de conteo de 64 K, 65 ms (a 12 Mhz). Si se escriben valores iniciales en THx y Tlx, la cuenta antes del sobreflujo puede ajustarse tan baja como una. Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 109 - Se puede utilizar para el conteo ya sea ciclos de mquina la entrada externa. La bandera de sobreflujo se puede utilizar para consultarse para generar una interrupcin.
Modo 2. (Contador de 8 bits con auto-recarga) En este modo el conteo se hace solo por Tlx (ocho bits). THx se carga por el programa con un valor que el hardware cargar en TLx cada vez que exista sobreflujo. La cuenta antes del sobreflujo se puede seleccionar entre uno y 256 (cargar 0 para obtener una cuenta de 256). Se puede utilizar para el conteo ya sea ciclos de mquina la entrada externa. La bandera de sobreflujo se puede utilizar para consultarse para generar una interrupcin.
Modo 3: caso especial.
Este es el nico modo en el que los dos temporizadores se comportan de una forma diferente el uno del otro. Al colocar el temporizador 0 en modo 3 se divide en dos unidades de ocho bits: TL0 se convierte en un contador/temporizador de 8 bits y TH0 en un temporizador nicamente de 8 bits (no usa el pin externo de entrada). TL0 utiliza el bit de puesta en marcha, la bandera de sobreflujo y el pin externo de entrada del temporizador 0. TH0 utiliza el bit de puesta en marcha y la bandera de sobreflujo del temporizador 1 (incluyendo el vector de interrupcin asociado). El temporizador 1 corre libremente si se encuentra en los modos 0, 1 2 cuando el temporizador 0 se pone en modo 3. El temporizador 1 se desactiva al ponerlo en modo 3. Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 110 -
DISPARO DE LOS TEMPORIZADORES.
Cada temporizador tiene un bit en el registro TMOD que es el control de disparo. Al inicio el bit es 0, el disparo se encuentra apagado, y los temporizadores se activa y desactivan como ya se ha descrito. Cuando el bit de disparo (gate) se pone a uno, el temporizador se activa solo cuando tanto su bit de puesta en marcha (Trx) y su correspondiente entrada externa de interrupcin se encuentran en uno. Esto le permite al temporizador medir la duracin de pulsos aplicados a su entrada (pin) de interrupcin en trminos de la fuente de conteo del temporizador. Tambin, la misma entrada continuar disparando la interrupcin externa correspondiente, si se encuentra habilitada. La rutina de servicio de interrupcin puede leer (y poner a cero) la cuenta acumulada mientras la seal permaneci en alto. El registro TMOD selecciona las opciones.
TMOD es el registro de seleccin de MODo de los temporizadores; es un SFR que se encuentra en la direccin 89H. Su cuatro bits ms significativos seleccionan las opciones para el temporizador 1, y los cuatro bits ms bajos hacen lo mismo para el temporizador 0. Este registro no se puede accesar por bits. Los bits 0 y 1 de cada nibble seleccionan el modo (0, 1 ,2 3) para cada temporizador. El bit 2 selecciona si el temporizador cuenta ciclos de mquina (bit=0) cuenta pulsos externos (bit=1). El bit 3 es el control de disparo para el temporizador: un 1 activa el modo de disparo. En la funcin de contador, el registro TLx se incrementa en respuesta a una transicin de 1 a 0 en el pin externo de entrada Tx. La razn mxima de conteo es 1/24 de la frecuencia del cristal.
TMOD
PUERTO SERIE Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 111 - El puerto serial es un puerto FULL DUPLEX , lo cual significa que puede transmitir y recibir datos simultneamente . El receptor contiene un almacn Buffer, que le permite comenzar a recibir un segundo dato sin necesidad de que el primero haya sido completamente ledo del registro Buffer. Sin embargo si el primer byte permanece sin ser ledo hasta el final de la recepcin del segundo dato, ste se perder. Tanto el dato recibido como el transmitido son depositados en el registro SBUF del SFR (espacio de funciones especiales).
REGISTRO DE CONTROL DEL PUERTO SERIAL SCON El puerto Serie puede ser operado en 4 modos diferentes que son especificados con los bits SM0 y SM1 del registro de Control del Puerto Serie (SCON)
SMO SCON.7 Especifica el modo de control del puerto serie. SM1 SCON.6 Especifica el modo de control del puerto serie. SM2 SCON.5 Habilita la comunicacin del tipo "multiprocesador" utilizado en los modos 2 y 3. En estos modos, si SM2 = 1, RI no es activado si el noveno dato recibido (RB8) es 0. En modo 1, RI no es activado si no se recibe un bit de stop. En el modo 0, SM2 ser 0. REN SCON.4 Establece la recepcin serie, cuando REN = 0 se desactiva la recepcin ( por software ). TB8 SCON.3 Almacena el noveno bit que ser transmitido en los modos 2 y 3 . RB8 SCON.2 Es el noveno bit que fue recibido en los modos 2 y 3 . En el modo 1, si SM2 = 0, RB8 es el bit de stop recibido. En el modo 0 RB8 no es usado. TI SCON.1 Bandera de interrupcin de la transmisin. Activada por hardware al final del octavo bit en el modo 0, o al principio del bit de stop en los otros modos. Debe ser limpiado por software. RI SCON.0 Bandera de interrupcin de la recepcin. Activada por hardware al final del octavo bit en el modo 0, o al medio tiempo de trasmitido el bit de stop en los otros modos.Debe ser limpiado por software.
MODOS DE OPERACIN DEL PUERTO SERIE
El UART del 8051 puede ser operado en un modo sncrono y 3 modos asncronos
EL MODO 0. Los datos seriales que entran o salen a travs de RxD o TxD respectivamente, lo hacen mediante 8 corrimientos, con una frecuencia de transmisin (Baud Rate) fija Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 112 - de de 1/12 de la frecuencia del oscilador. La figura muestra el Puerto Serie en Modo 0.
La transmisin es iniciada por cualquier instruccin que utilice SBUF como registro de Destino, v.gr. MOV SBUF,A .
Para que la recepcin pueda ser iniciada se debe cumplir la condicin REN=1 y RI=0.
La recepcin es iniciada por la deteccin de un transiente negativo (de 1 a 0) en la lnea RxD, la cual es muestreada a una frecuencia de 16 veces la frecuencia de Baud Rate que ha sido establecida. Cuando un transiente es detectado el divisor entre 16 es inmediatamente reestablecido y 1FFH es escrito en la entrada del registro de corrimiento.
OPERACIN SERIE ASNCRONA
Los modos de comunicacin serie del 8051 pensados para comunicacin entre procesos entre sistemas son asncronos. Esto significa que el dispositivo transmisor enva datos solos, sin una seal de sincronizacin. Tramas de datos: El puerto serie del 8051 puede utilizar tramas de datos que contengan ya sea 8 9 bits de datos. El UART siempre le suma un bit de inicio, que es bajo, y un bit de paro, que es alto. El UART pone la lnea de salida serial a un alto siempre que no se est enviando ninguna trama.
El programa debe iniciar la transmisin de cada trama que se vaya a enviar (por ende controla el tiempo de retardo entre las tramas enviadas). Pero el UART maneja la transmisin bit a bit (y la recepcin), sin involucrar a la CPU.
0 b0 b1 b2 b3 b4 b5 b6 b7 8 bits de datos 8 bits de datos Bit de arranque Bit de arranque Lnea ociosa Lnea ociosa Bit de parada 111 DATO TRANSMITIDO RELOJ DE SINCRONA CON RECEPTOR LSB Control RX Control RX Bus interno de datos Bus interno de datos Buffer serial SBUF Buffer serial SBUF Detector de cero Detector de cero D Q Control TX Control TX reloj start shift enviar TI clk RXD RXD TXD TXD recibir 1 escritura al SBUF Seal de interrupcin del puerto serial Seal de interrupcin del puerto serial RI estados S6 de los ciclos de mquina MSB Shift clk DATO TRANSMITIDO RELOJ DE SINCRONA CON RECEPTOR LSB Control RX Control RX Bus interno de datos Bus interno de datos Buffer serial SBUF Buffer serial SBUF Detector de cero Detector de cero D Q Control TX Control TX reloj start shift enviar TI clk RXD RXD TXD TXD recibir 1 escritura al SBUF Seal de interrupcin del puerto serial Seal de interrupcin del puerto serial RI estados S6 de los ciclos de mquina MSB Shift clk Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 113 - El registro de corrimientos de transmisin recibe una onda cuadrada del generador de baudaje. Cada bit de dato en una trama (incluyendo los bits de inicio y paro) se aplica al pin TXD por 16 de estos pulsos. El circuito de recepcin (si est habilitado) espera una transicin de bajada que seale el comienzo de un bit de inicio y con esto una nueva trama. Utiliza los pulsos de su generador de baudaje para determinar cual debera ser el centro de cada bit esperado. Toma tres muestras alrededor de este punto, y recorre este valor, basndose en dos de tres de dichas muestras.
SBUF: El registro (buffer) del puerto serie.
SBUF=fuente copia el dato de fuente al registro de corrimiento de transmisin de datos y, tambin, es el comando de inicio de transmisin; el registro de transmisin es de solo escritura. destino =SBUF lee el dato del registro de recepcin; el cual es de solo lectura.
Los dos registros de datos del puerto serie, uno para transmitir y otro para recibir, tienen el mismo nombre, SBUF, y la misma direccin, 99H en el espacio de SFR. Cual de ellos se accesa, se especifica por el hecho de que si se lee se escribe. Los circuitos de transmisin y recepcin son independientes, as que la transmisin y recepcin pueden proceder en forma simultnea (full duplex) mientras que el CPU maneja un tercer proceso. El modo del puerto serie y otras opciones se seleccionan al ajustar bits en el byte de control, el cual se denomina SCON (98H en el espacio SFR). Que tambin contiene al bit que habilita la recepcin serie de datos.
MODOS ASNCRONOS
Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 114 - El 8051 provee tres modos serie de comunicacin asncrona para interfaz con otros procesadores sistemas. En los tres modos, el circuito de transmisin se encarga de generar un bit de inicio y un bit de paro.
Modo 1: Dato de 8 bits con velocidad variable.
Se transmiten por la lnea (TxD) o se reciben por lnea (RxD) 10 bits. Un bit de inicio (Start bit de nivel 0 lgico). En recepcin el bit de Fin (Stop), se almacena en RB8 de SCON, si SM2=0. El Baud Rate (frecuencia de transmisin o recepcin) es variable. Se utiliza el temporizador 1 como parte del generador de baudaje, as que programndolo con diferentes valores de recarga, el baud-rate puede ajustarse de 122 a 62500 bits por seg (bps), con un cristal de 12 Mhz. (Esto asume usar el temporizador 1 en modo 2, para autorecarga). Se puede duplicar el baud-rate al poner en uno el bit SMOD del registro PCON. El uso del octavo bit (as como de los otros siete) se controla por el programa para ajustarse a la aplicacin. En algunos protocolos se utiliza para el bit de paridad, algunas veces como un segundo bit de paro, etc.
Modo 2: Dato de 9 bits con velocidad fija. 11 bits son transmitidos (TxD) o recibidos (RxD), un bit de inicio (Start bit de nivel 0 lgico), 8 bits de datos, un noveno bit de datos programable, en la transmisin es TB8, en la recepcin es RB8 de SCON, y un bit de Fin (Stop bit). Su Baud Rate es de 1/32 o 1/64 de la frecuencia de oscilacin. Es igual al modo 3, a excepcin de que no se utiliza el temporizador 1 como parte del generador de baud-rate. As el temporizador 1 puede utilizarse en otras cosas a expensas de un baud-rate fijo, lo cual no es un problema para la comunicacin entre varios 8051s. En los modos 2 y 3 el noveno bit se puede utilizar para distinguir entre una trama de datos y una de direccin en una comunicacin multiprocesadores.
Modo 3: Dato de 9 bits con velocidad variable. 11 bits son transmisin (TxD) o recibidos (RxD), en la misma forma que el modo 2, slo que aqu la frecuencia de transmisin/recepcin (Baud Rate) es variable. Se utiliza el Timer 1 para generar el Baud Rate. En los 4 modos, la transmisin es inicializada cuando SBUF es utilizado como registro destino. La recepcin en el modo 0 comienza cuando RI=0, en los otros modos, cuando se detecta el bit de inicio (START) si REN=1.
Trabaja como el modo 1, excepto que en lugar de ocho, se transmiten o reciben nueve bits de datos. Los ocho bits bajos van o vienen del SBUF, pero el noveno tiene dos espacios en SCON: TB8 para la transmisin y RB8 para la recepcin. Este ltimo bit puede utilizarse para ajustarse a protocolos especiales. Por ejemplo el TTY estndar requiere de dos bits de paro, un bit de paridad y siete bits de datos.
Programacin del puerto serie
Para programar el puerto serie, se debe seleccionar el modo y baud-rate apropiado para la aplicacin, calcular el valor de recarga necesitado para el temporizador y finalmente programar el SCON y temporizador 1. Despus de escoger entre un esquema de encuesta contnua (sondeo) manjeo de interrupcin, se escribe el programa para el proceso de transmisin/recepcin.
Generacin del baud-rate.
MODO FORMULA CON CRISTAL DE 12 MHz
0 Baud rate=Osc/12 1 Mbps Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Para los modos 1, 2 y 3 el baud-rate se duplica si el bit siete de PCON (SMOD) se pone a uno.
SCON: El control del puerto serie.
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0, SM1: seleccionan el modo de operacin. SM2: Deshabilita la recepcin de tramas para las cuales el bit 8 es cero. REN: Habilita y deshabilita la recepcin de datos. TB8: Determina el estado del noveno bit transmitido en modo UART de 9 bits. RB8: Indica el estado del noveno bit recibido. TI: Se pone a uno, por el circuito, cuando se esta transmitiendo. RI: Se pone a uno, por el circuito, cuando se ha recibido un byte. Debe limpiarse por software.
INTERRUPCIONES
La estructura de interrupciones del 8051 provee una herramienta poderosa que permite al CPU el manejar un nmero de procesos diferentes concurrentemente, siempre y cuando cada proceso necesite solo una fraccin del tiempo del CPU. Concurrentemente significa manejar cada proceso con un tiempo de respuesta lo suficientemente rpido, de tal forma que el proceso funcione tan bien como si tuviera un procesador dedicado para l. Esto es, el trabajo para diferentes procesos se realiza en realidad secuencialmente pero parece serlo en paralelo. El 8051 provee interrupciones para los perifricos y tambin dos interrupciones de fuentes externas. La funcin de las Interrupciones de Hardware Estructura de Interrupciones del 8051 Ejemplos de Utilizacin de Interrupciones Latencia de una Interrupcin Opciones para las Interrupciones Externas La funcin de las Interrupciones de Hardware
Esta seccin muestra un ejemplo de como una interrupcin puede ahorrar tiempo del CPU, y permitir lo que parece ser procesamiento paralelo. Se discute el sistema general para las interrupciones de hardware utilizado por los microprocesadores y lo compara con el mecanismo de una subrutina.
ENTRADA/SALIDA MANEJADA POR INTERRUPCIONES
Muchos dispositivos de Entrada/Salida (impresoras, modems, etc) requieren solo de una pequea fraccin de tiempo de CPU para servicio. Si, por ejemplo, se inicializa un dispositivo como una impresora, que requiere miles de ciclos de mquina para imprimir cada caracter, podra enviar una seal que indique cuando est lista para recibir otro caracter. El 8051 podra consultar (polling) el pin de un puerto que se encontrara conectado a la seal de listo de la impresora, pero de esta forma el 8051 estara gastando miles de instrucciones entre el envo de cada caracter. Si la lnea de listo (ready) se conecta a una entrada de interrupcin externa, el 8051 puede ocuparse de otros procesos hasta que la impresora se encuentre lista para otro caracter. Entonces, se interrumpe al 8051, la ejecucin salta a la rutina Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 116 - de servicio de interrupcin (ISR) apropiada, la cual enva el siguiente caracter y la ejecucin regresa a cualquiera que sea el proceso que fue interrumpido. Se le da servicio a la impresora (casi exactamente) tan rpido como si el CPU solo estuviera dedicado a ella; pero otros procesos tambin se estn ejecutando concurrentemente.
ESTRUCTURA DE INTERRUPCIONES DEL 8051 Fuentes de Interrupcin y Vectores. Para cada fuente de interrupcin el hardware tiene una direccin de cdigo en particular (vector de interrupcin) que carga en el Contador de Programa (PC) cuando se acta en dicha interrupcin.
La primera instruccin de la ISR para esa interrupcin debe estar en la localidad de ese vector. Ya que solo se tienen 8 bytes entre los vectores, con frecuencia se utiliza una instruccin JMP para ir a otra rea de memoria de cdigo. Las siguientes sentencias asumen que todas las interrupciones se encuentran habilitadas.
* Interrupcin externa 0 (funcin alternativa de entrada para la terminal P3.2, tambien llamada INT0) causa el salto de ejecucin hacia la 03H. * La interrupcin del Temporizador 0 causa el salto de ejecucin a la 0BH. * Interrupcin externa 1 (funcin alternativa de entrada para la terminal P3.3, tambin llamada INT1) causa el salto de ejecucin hacia la 1BH. * La interrupcin del Temporizador 1 causa el salto de ejecucin a la 1BH. * La interrupcin del puerto serie (entrada salida) causa el salto de ejecucin a la 23H * La interrupcin del Temporizador 2 causa el salto de ejecucin a la 2BH, solo disponible en el 8052 y 80C51FA. * La interrupcin del Arreglo Programable de Contadores causa el salto de ejecucin a la 33H; solo disponible en el 80C51FA. * La reinicializacin del micro (Reset) causa un salto en la ejecucin a la 00, as como la inicializacin de la mayora de los SFR. Se puede pensar como una interrupcin especial externa con vector en 0, y el programa completo como una ISR. Secuencia de Procesamiento de una Interrupcin Cuando ocurre una peticin de interrupcin, siempre debe terminar la instruccin que actualmente se este ejecutando antes de que el hardware pueda saltar hacia la ISR.
El hardware procede con las siguientes pruebas antes de que termine la instruccin: * Si la interrupcin no se encuentra habilitada individualmente ( por su bit en el SFR IE), se ignora la peticin de interrupcin y la ejecucin se contina en forma secuencial. Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 117 - * Si las interrupciones no estn habilitadas globalmente (con el bit EA en el SFR IE), se ignora la peticin de interrupcin y la ejecucin se contina en forma secuencial. * Cada interrupcin se puede programar para tener ya sea prioridad alta (1) baja (0, por omisin). Si la nueva interrupcin no es de ms alta prioridad, que cualquiera que se est ejecutando, se ignora hasta que se complete la interrupcin actual. * Si la nueva interrupcin pasa todas las pruebas de arriba, el hardware coloca la direccin de regreso en la pila (Stack), carga el PC con el vector de interrupcin correspondiente e inicia la ejecucin de su ISR. Registros de Prioridad de Interrupciones Existe un registro de hardware para cada prioridad (alta baja), cuya salida nica se pone a uno cuando una interrupcin de esa prioridad se est ejecutando. Esto previene que otra interrupcin de la misma prioridad, menor, interrumpa a la ISR que se encuentre ejecutando actualmente. Una interrupcin de alta prioridad se puede ejecutar dentro de una ISR de baja prioridad. La instruccin RETI realiza un RET y tambin limpia el registro de ms alta prioridad que actualmente se encuentre activo. Al colocar RETI al final de cada ISR normalmente es suficiente para hacer que trabaje el sistema de prioridad tal y como se especific. Registro de Prioridades de las Interrupciones (IP: Interrups Priority Register) Bits de Control de Interrupciones El SFR de Control de Habilitacin de Interrupciones (IE, 0A8H) contiene el bit de Habilitacin Global (EA), que se debe activar para que se permita cualquier interrupcin. Tambin se tienen los bits de habilitacin individual para cada una de las cinco interrupciones en el 8051 (seis en el 8052 y siete en el 80C51FA). Para que cualquier interrupcin pueda ser permitida, su bit individual de habilitacin y el de EA deben estar activos. El registro IE se puede accesar por byte por bit.
Registro habilitador de las Interrupciones (IE: Interrupts Enable Register)
El SFR de Control de Prioridad de Interrupciones (IP, 0B8H) contiene el bit de seleccin de prioridad para cada interrupcin individual. Un cero selecciona prioridad baja y un uno prioridad alta. Se puede accesar por byte por bit. Si dos ms interrupciones de la misma prioridad hacen peticin al mismo tiempo, y estan habilitadas; una secuencia de muestreo interna predefinida determina a cual se le da el servicio primero. Dicha secuencia de prioridad es la siguiente, de la ms alta a ms baja:
Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
OPCIONES PARA LA INTERRUPCIN EXTERNA Las dos interrupciones externas se pueden programar en forma separada para que sean sensibles al nivel al cambio. Cada tipo tiene sus beneficios; cual es el mejor depende de las necesidades de la aplicacin.
Sensado por nivel: Una interrupcin externa que se programa con este tipo, enva una peticin al circuito principal de interrupciones cuando (y mientras) en su terminal se lea un 0 lgico. La ISR se debe de asegurar que el dispositivo que realiza la peticin ponga en 1 la terminal ( debe deshabilitar la interrupcin) para que evite el que se reentre a la ISR justo despus de la instruccin RETI. El sensado por nivel facilita el manejo de fuentes mltiples con una sola terminal de interrupcin, colocando en las terminales de otro puerto cada fuente diferente. La ISR consultar dichas terminales del puerto para identificar la fuente de interrupcin. Con este mtodo la peticin de interrupcin puede pasar desapercibida (olvidada) por el 8051 si la fuente se desactiva cuando no se encuentra disponible. Esto algunas veces es bueno.
Sensado por Cambio: Una interrupcin externa programada con este tipo se consulta una vez por cada ciclo de mquina. Si con muestras sucesivas se nota que ha ocurrido una transicin de bajada (cambio de uno a cero), se activa una bandera (IE0 IE1). Esta bandera seala al circuito principal de interrupciones hasta que el hardware llama a la ISR requerida y al mismo tiempo limpia la bandera. Este modo "recuerda" una peticin de interrupcin, si es que la seal externa regresa a uno antes de que se le de servicio a la interrupcin. Tambin, si la seal permanece en cero (activa) despus de que la ISR ha terminado, no ocasionar otra interrupcin no deseada.
Bits de Banderas y Control. La parte baja del SFR Control del Temporizador (TCON, 88H) se dedica para las interrupciones externas. Los bits IT0 e IT1 controlan el tipo de activacin para la INT0 e INT1 respectivamente. Un cero (por omisin) selecciona sensado por nivel, un uno sensado por cambio. Los bits IE0, IE1 son las banderas para INT0 e INT1. Mientras IEn este activada, el circuito principal de interrupciones estar recibiendo una peticin de salto a la ISR de la INTn.
Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 119 -
Almacenado temporal y restablecimiento de datos. Cuando un programa llama a una subrutina, tpicamente tiene datos en algunos registros y/o en los SFR que necesita utilizar despus de que la subrutina haga su trabajo. Si la subrutina tambin va a utilizar algunos de ellos, ya sea el programa que llama o la subrutina debe almacenar y restablecer los valores originales. Para ello se puede utilizar el stack mediante las instrucciones PUSH y POP descritas en seguida: PUSH direccin directa SP=SP+1 el byte contenido en la direccin directa se escribe en el stack.
POP direccin directa el contenido de la parte alta del stack se escribe a la direccin directa SP=SP-1
Conmutacin de bancos. Los programas pueden utilizar el direccionamiento por registro de una manera eficiente conmutando entre cuatro bancos separados de registros para uso del programa principal y hasta tres subrutinas. Colocar las variables utilizadas con mayor frecuencia en los registros para ahorrarse un byte siempre que el programa las accesa Los cuatro bancos de ocho bytes le permiten a las subrutinas el usar registros para sus variables de uso frecuente. Se almacenan y restablecen los registros del programa que llama, conmutando entre bancos. El banco de registros que se encuentra activo se selecciona mediante dos bits (RS0, RS1) del registro PSW. El banco seleccionado por omisin es el banco 0.
MATERIAL Y EQUIPO UTILIZADO: CI Atmel 89C52 CI Max232 (o Dallas DS275) PSW.7 Bandera de acarreo recibe el acarreo producido por los bits 7 en las operaciones de la ALU PSW.6 Bandera de acarreo auxiliar recibe el acarreo producido por los bits 3 en la adicin de operandos PSW.5 Bandera de Status de propsito General PSW.4 Bit1 selector de Banco de Registro CY CY AC AC F0 F0 RS1 RS1 RS0 RS0 OV OV P P PSW.3 Bit 0 selector de Banco de Registro PSW.2 Bandera de Sobreflujo, se activa con operaciones aritmticas PSW.1 Bandera Definida por el Usuario PSW.0 Paridad del acumulador activada por Hardware a 1 si contiene un nmero impar de 1s, sino se pone a 0 PSW.7 Bandera de acarreo recibe el acarreo producido por los bits 7 en las operaciones de la ALU PSW.6 Bandera de acarreo auxiliar recibe el acarreo producido por los bits 3 en la adicin de operandos PSW.5 Bandera de Status de propsito General PSW.4 Bit1 selector de Banco de Registro CY CY AC AC F0 F0 RS1 RS1 RS0 RS0 OV OV P P PSW.3 Bit 0 selector de Banco de Registro PSW.2 Bandera de Sobreflujo, se activa con operaciones aritmticas PSW.1 Bandera Definida por el Usuario PSW.0 Paridad del acumulador activada por Hardware a 1 si contiene un nmero impar de 1s, sino se pone a 0 CY CY AC AC F0 F0 RS1 RS1 RS0 RS0 OV OV P P CY CY AC AC F0 F0 RS1 RS1 RS0 RS0 OV OV P P PSW.3 Bit 0 selector de Banco de Registro PSW.2 Bandera de Sobreflujo, se activa con operaciones aritmticas PSW.1 Bandera Definida por el Usuario PSW.0 Paridad del acumulador activada por Hardware a 1 si contiene un nmero impar de 1s, sino se pone a 0 Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 120 - Regulador 7805 Cristal piezo-elctrico de 11.0592 Mhz 1 Condensador de 470 F 6 condensadores de 1F Resistencia de 8.2 K Conector DB-9 Plug del eliminador de baterias usado Tarjeta de PCB 1 74LS244 8 LEDs 8 resistencias de 330 4 conectores de 8 bits Push-button NA Cautn Soldadura Osciloscopio o analizador lgico CORRELACIN CON TEMAS DEL PROGRAMA VIGENTE: Con esta prctica se cubre algunos de los aspectos de la unidad III: Microcntroladores METODOLOGA (DESARROLLO DE LA PRCTICA): I.-Para conocer a fondo la arquitectura, la programacin y la aplicacin los microcontroladores de la familia 8051, el alumno disear e implementar en circuito impreso (PCB) un sistema basado en el microcontrolador de Atmel 89C52. Para el diseo de la tarjeta impresa, se recomienda una distribucin como la mostrada en la figura. Incluya un regulador 7805 para que pueda ser alimentado con un eliminador de bateras de 9 12 v. Tambin incluya un MAX232 para poder conectar su tarjeta a otro equipo con el estndar RS232 como por ejemplo una PC
II.-Ya que la tarjeta est ensamblada, usando un analizador lgico o un osciloscopio el alumno, observar la seal obtenida en la terminal ALE del del AT89C52. Si la frecuencia de la seal obtenida es del orden de 2 MHZ, entonces la tarjeta funciona correctamente.
III.-Se le conecta al puerto P1 un buffer octal 3-state 74LS244 para poder manejar un LED con cada bit del puerto.
IV.-Se implementar un programa y se cargar en la memoria Flash del microcontrolador (usando un Programador ) que debe realizar los siguiente: P0 P1 P2 P3 M A X 2 3 2 Plug 89C52 89C52 Reset C o n e c t o r D B - 9 Dc in Cristal de 11.0592 Mhz 7 8 0 5 P0 P1 P2 P3 M A X 2 3 2 M A X 2 3 2 Plug 89C52 89C52 Reset C o n e c t o r D B - 9C o n e c t o r D B - 9 Dc in Cristal de 11.0592 Mhz 7 8 0 5 7 8 0 5 Laboratorio de Microprocesadores El MICROCONTROLADOR 8051
Carlos E. Canto Quintal M.C.
- 121 - Al momento de resetear la tarjeta, se prende el LED en el bit menos significativo, un tiempo despus se apaga y prende el siguiente y as sucesivamente, produciendo as corrimiento de encendido y apagado de LEDs Una vez que el funcionamiento del sistema sea satisfactorio, el alumno contar con una tarjeta para realizar las dos prcticas siguientes, eliminando as los riesgos inherentes al implementar el sistema en protoboard.
SUGERENCIA DIDCTICA: I.- investigue acerca de los miembros de la familia de microcontroladores 8051 tanto de Intel como de otros fabricantes.
II.- Implemente y cargue otros programas de prueba al sistema implementado III.- Estudie la posibilidad de implementar su propio programador del Microcontrolador ATMEL 89C52 y toda la parentela.
IV.-Investigue y compare las ventajas de los Microcontroladores Programables en Sistema (ISP: In System Programming) como el AT89S52 y otros.
REPORTE: I.- incluya en su reporte el layout de su tarjeta II.-incluya un resumen sobre su investigacin realizada III.-sus comentarios y conclusiones
BIBLIOGRAFA: http://www.8052.com Manual del Atmel 89C52 Manual del Max2322 8 bit Embedded microcontrollers Intel TTL Data Book TI