ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura...

33
MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 1 1- ARQUITECTURA DE LA FAMILIA INTEL MCS-51 1.1- INTRODUCCION La continua evolución tecnológica en el área Digital de la Electronica, ha permitido que las funciones incluidas en los circuitos integrados sean cada vez mas potentes, rápidas y confiables. Tal es el caso de los microprocesadores, que a medida que se lograban mayores escalas de integración, se pudieron incluir en la misma pastilla generadores de reloj, memorias de lectura/escritura, memorias de solo lectura, interfaces de entrada/salida, timers, P.L.L., etc. Analizando el listado anterior de elementos, concluimos que en la actualidad logramos computadores integrados en la misma pastilla a los que llamamos microcomputadores o microcontroladores. La familia de microcontroladores de 8 bits MCS-51 esta constituida, entre otros, por los siguientes dispositivos: Dispositivo Tecnología Memoria de Códigos sobre el chip Memoria de Datos sobre el chip 8051 H-MOS 4 kbytes de ROM 128 bytes de RAM 8031 H-MOS ----- 128 bytes de RAM 8751H H-MOS 4 kbytes de ROM 128 bytes de RAM 80C51 CH-MOS 4 kbytes de EPROM 128 bytes de RAM 80C31 CH-MOS ----- 128 bytes de RAM 8052 H-MOS 8 kbytes de ROM 256 bytes de RAM 8032 H-MOS ----- 256 bytes de RAM Toda esta familia esta basada en la arquitectura mostrada en la figura 2.1. Los miembros mas nuevos de la familia, como el 8032 y el 8052, tienen mas memoria en el chip que sus predecesores y disponen de un Timer/contador adicional. Este nuevo Timer puede utilizarse como un timer, como un contador o para generar el baud rate necesario en la transmisión o la recepción de datos a través de la puerta serie. Como Timer/contador puede operar en dos modos, el modo auto recarga de 16 bits o en el modo captura de 16 bits como se vera en la sección 2.5.3. Las principales características de la familia MCS-51 son: * Unidad Central de Procesamiento (CPU) de 8 bits. * Circuiteria de reloj incorporado en el chip. * 32 lineas de Entrada/Salida. *64 kbytes de espacio de direccionamiento para memoria externa de datos. * 64 kbytes de espacio de direccionamiento para memoria externa de programa. * 2 Timers/contadores de 16 bits (3 en el 8052 y el 8032). * Estructura con 5fuentes de interrupción (6 en el 8032/52) y 2 niveles de prioridad programables. * Una puerta serie Full-duplex.

Transcript of ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura...

Page 1: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 1

1- ARQUITECTURA DE LA FAMILIA INTEL MCS-51 1.1- INTRODUCCION La continua evolución tecnológica en el área Digital de la Electronica, ha permitido que las funciones incluidas en los circuitos integrados sean cada vez mas potentes, rápidas y confiables. Tal es el caso de los microprocesadores, que a medida que se lograban mayores escalas de integración, se pudieron incluir en la misma pastilla generadores de reloj, memorias de lectura/escritura, memorias de solo lectura, interfaces de entrada/salida, timers, P.L.L., etc. Analizando el listado anterior de elementos, concluimos que en la actualidad logramos computadores integrados en la misma pastilla a los que llamamos microcomputadores o microcontroladores. La familia de microcontroladores de 8 bits MCS-51 esta constituida, entre otros, por los siguientes dispositivos: Dispositivo Tecnología Memoria de Códigos sobre el

chip Memoria de Datos sobre el

chip 8051 H-MOS 4 kbytes de ROM 128 bytes de RAM 8031 H-MOS ----- 128 bytes de RAM

8751H H-MOS 4 kbytes de ROM 128 bytes de RAM 80C51 CH-MOS 4 kbytes de EPROM 128 bytes de RAM 80C31 CH-MOS ----- 128 bytes de RAM 8052 H-MOS 8 kbytes de ROM 256 bytes de RAM 8032 H-MOS ----- 256 bytes de RAM

Toda esta familia esta basada en la arquitectura mostrada en la figura 2.1. Los miembros mas nuevos de la familia, como el 8032 y el 8052, tienen mas memoria en el chip que sus predecesores y disponen de un Timer/contador adicional. Este nuevo Timer puede utilizarse como un timer, como un contador o para generar el baud rate necesario en la transmisión o la recepción de datos a través de la puerta serie. Como Timer/contador puede operar en dos modos, el modo auto recarga de 16 bits o en el modo captura de 16 bits como se vera en la sección 2.5.3. Las principales características de la familia MCS-51 son: * Unidad Central de Procesamiento (CPU) de 8 bits. * Circuiteria de reloj incorporado en el chip. * 32 lineas de Entrada/Salida. *64 kbytes de espacio de direccionamiento para memoria externa de datos.

* 64 kbytes de espacio de direccionamiento para memoria externa de programa. * 2 Timers/contadores de 16 bits (3 en el 8052 y el 8032). * Estructura con 5fuentes de interrupción (6 en el 8032/52) y 2 niveles de prioridad

programables. * Una puerta serie Full-duplex.

Page 2: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 2

Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

Page 3: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 3

1.2- ORGANIZACION DE MEMORIA La familia MCS-51 reconoce en forma independiente la memoria de programa y la de datos. Debido a que estos poseen la capacidad de tener memoria incorporada al chip es que tanto programas como datos pueden ubicarse en forma externa o interna como se observa en las figuras 1.2 y 1.3. La capacidad máxima de direccionamiento para memoria externa de programa es de 60 o 64 kbytes para el 8051/31 según se utilicen o no los 4kbytes internos del chip, para el 8052 este espacio sera de 56 o 64 kbytes por las mismas razones expuestas anteriormente. La capacidad máxima de direccionamiento de memoria externa de datos es siempre 64 kbytes, independientemente de los 128 o 256 bytes internos, que se manejan de forma diferente. Además cada chip posee un gran numero de Registros de Funciones Especiales (SFR) que se ubican en la memoria interna desde la dirección 80h hasta la FFh y que se describen a continuación:

Símbolo Nombre Dirección * A Acumulador E0h * B Registro B F0h

* PSW Registro de Estado D0h SP Puntero de Pila 81h

DPTR Puntero de Datos ( DPH, DPL ) 83h/82h * P0 Puerta 0 80h * P1 Puerta 1 90h * P2 Puerta 2 A0h * P3 Puerta 3 B0h * IP Registro de Control de Prioridad de Interrupciones B8h * IE Registro de Control de Habilitación de Interrupciones A8h

TMOD Registro de Control de Modo de Operación del Timer/Contador 89h * TCON Registro de Control de los Timers/Contadores 88h

*+T2CON Registro de Control del Timer/Contador 2 C8h TH0 Byte alto del Timer/Contador 0 8Ch TL0 Byte bajo del Timer/Contador 0 8Ah TH1 Byte alto del Timer/Contador 1 8Dh TL1 Byte bajo del Timer/Contador 1 8Bh

+TH2 Byte alto del Timer/Contador 2 CDh +TL2 Byte bajo del Timer/Contador 2 CCh

+RCAP2H Registro de Captura del Timer/Contador 2 (Byte alto) CBh +RCAP2L Registro de Captura del Timer/Contador 2 (Byte bajo) CAh * SCON Registro de Control de la Puerta Serie 98h SBUF Buffer de datos de la Puerta Serie 99h PCON Registro de Control de Potencia 87h

Page 4: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 4

Todos los SFR indicados con un asterisco (*) son direccionables por bit o bytes; y todos los que poseen el signo mas (+) pertenecen únicamente al 8052/32.

Fig. 1.1 Memoria de Programa

Page 5: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 5

Fig. 1.3 Memoria de datos

Las funciones de los SFR se describen a continuación: Acumulador A El registro A es el mas utilizado por el repertorio básico de instrucciones (RBI). El 80% de las operaciones lo utilizan como uno de sus operandos. Registro B El registro B es utilizado durante las operaciones de multiplicación y división. Para otras operaciones puede utilizarse como un registro de propósitos generales. Registro de Estado PSW Este es el registro o la palabra de estado del procesador y la función de cada uno de sus bits es la siguiente:

C AC F0 RS1 RS0 OV - P Símbolo Posición Nombre y Significado C PSW.7 Flag de Transporte (carry). AC PSW.6 Flag de Transporte Auxiliar (para

Aritmética BCD - Es el transporte del nibble menos significativo al mas significativo).

F0 PSW.5 Flag cero. Disponible al usuario. RS1 PSW.4 RS0 PSW.3 Bits de control para seleccionar el banco

de registros de trabajo. Los contenidos de RS1 y RS0 habilitan al banco de registros como sigue:

0,0 Banco de registros 0 (00h-07h) 0,1 Banco de registros 1 (08h-0Fh) 1,0 Banco de registros 2 (10h-17h) 1,1 Banco de registros 3 (18h-1Fh) OV PSW.2 Flag de desborde (overflow). - PSW.1 (reservado).

Page 6: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 6

P PSW.0 Flag de Paridad par. Es "0" cuando el

numero de unos en el acumulador es par o "1" en caso contrario.

Puntero de Pila SP El puntero de pila es de 8 bits de longitud. Este es incrementado antes que el dato sea almacenado en la ejecución de las instrucciones PUSH y CALL. El SP es inicializado en el lugar 07h después del reset, pero puede ubicarse en cualquier lugar del área de memoria RAM interna que posee el chip. Puntero de datos DPTR Este esta formado por un byte alto DPH y un byte bajo DPL. Su función especifica es la de mantener una dirección de 16 bits. Este también puede considerarse como un registro de 16 bits o 2 registros independientes de 8 bits. Registros de las puertas 0 a 3 P0, P1, P2, y P3, son los latches de los SFR de las puertas 0, 1, 2 y 3 respectivamente. Buffer de datos de la puerta serie SBUF El buffer de datos de la puerta serie, esta compuesto por dos registros separados, un registro buffer de transmisión y un registro buffer de recepción. Cuando un dato es llevado a SBUF, este es almacenado en el registro de transmisión desde donde será transmitido en forma serie; cuando el dato es leído desde SBUF, este proviene desde el registro de recepción. Registro timers Los pares registros (TH0,TL0), (TH1,TL1) y (TH2,TL2) son los contadores de 16 bits para los timers 0, 1 y 2 respectivamente. Registros de captura (solo 8032/52) El par registro (RCAP2H,RCAP2L) es el registro de captura para el timer 2 en el "modo captura". En este modo, en respuesta a una transición de "1" a "0" en el pin T2EX, los registros TH2 y TL2 son copiados en RCAP2H y RCAP2L. El timer 2 también posee un modo de autorecarga de 16 bits y RCAP2H y RCAP2L mantiene el valor a recargar en el timer en este modo. Ver modo captura sección 2.5.3. Registros de Control

Page 7: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 7

Los registros de funciones especiales IP, IE, TMOD, TCON, T2CON, SCON y PCON contienen información de control y de estado para el sistema de interrupción, los timers y la puerta serie. 1.3- PUERTAS DE ENTRADA/SALIDA Las 4 puertas en el 8051 son bidireccionales. Cada una consta de un latch (Registro de funciones especiales P0 hasta P3), un driver de salida y un buffer de entrada. Los driver de salida de las puertas 0 y 2, y el buffer de entrada de la puerta 0, son utilizados en el acceso a la memoria externa. En esta aplicación, la puerta 0 funciona como el byte bajo del bus de direcciones multiplexado en el tiempo con el bus de datos. Por la puerta 2 se exterioriza el byte alto de la dirección de memoria externa cuando esta es de 16 bits. Cuando la dirección es de 8 bits la puerta 2 funciona en forma normal. Los terminales de la puerta 3 y dos terminales de la puerta 1 del son multifuncionales. Estos no solo son pines de entrada salida sino que también realizan funciones especiales que se describen a continuación: *P1.0 T2 (entrada externa al timer/contador2) *P1.1 T2EX (disparo de captura/recarga del timer/contador2) P3.0 RXD (entrada de la puerta serie) P3.1 TXD (salida de la puerta serie) P3.2 /INT0 (interrupción externa) P3.3 /INT1 (interrupción externa) P3.4 T0 (entrada externa del timer/contador0) P3.5 T1 (entrada del timer/contador 1) P3.6 /WR (habilitación de escritura en la memoria externa de datos) P3.7 /RD (habilitación de lectura en la memoria externa de datos) * P1.0 y P1.1 sirven a estas funciones solo en el 8052. Estas funciones alternativas pueden ser activadas solo si el correspondiente bit en el SFR contiene un 1. 1.3.1- Configuraciones de Entrada/Salida La figura 1.4 muestra el diagrama básico funcional de un bit para cada una de las 4 puertas. El latch (un bit en el SFR de la puerta) esta representado como un FF tipo D, el cual cargara un valor desde el bus interno en respuesta a una señal de "escritura al latch" desde la CPU. La salida Q del FF se conectará al bus interno a través de un buffer habilitado por la sen~al de "lectura del latch" desde la CPU. El pin de la puerta se conectará al bus interno mediante el buffer activado por la señal de "lectura del pin" desde la CPU. Algunas instrucciones que leen una puerta activan la señal de "lectura del latch" y otras activan la señal de "lectura del pin" (ver 1.3.4).

Page 8: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 8

Como se muestra en la figura 1.4, los drivers de salida de las puertas 0 y 2, pueden volcar al exterior 2 tipos de información dependiendo del valor de la señal "Control" emitida por la CPU. Para los bits de la puerta 2 la información puede ser un bit de dirección (señal ADDR) o la salida del latch. Para los bits de la puerta 0 la información puede ser un bit del bus de direcciones multiplexado con un bit del bus de datos (señal ADDR/DATA) o la salida del latch. También como se muestra en la figura 1.4 para la puerta 3, si el bit del latch está en 1, luego el nivel de salida en el pin P3.x estará fijado por la señal llamada "función de salida alternativa". Las puertas 1, 2 y 3 tienen pull-ups internos. La puerta 0 tiene salida con drenaje abierto (similar a colector abierto en tecnología bipolar). Cada línea E/S puede ser independientemente utilizada como una entrada o como una salida. Las puertas 0 y 2 no pueden ser utilizadas como de E/S para propósitos generales cuando está siendo utilizada como bus de direcciones y datos. Para ser utilizada como una entrada, el bit del latch de la puerta debe contener un 1, lo cual pone al corte los FETS de salida; luego, para las puertas 1, 2 y 3, el pin es fijado a 1 por el pull-up interno, pero puede ser llevado a 0 por una fuente externa. La puerta 0 difiere en no tener pull-up interno. El FET de pull-up en la salida de la puerta 0 es utilizado solo cuando la puerta esta emitiendo "unos" durante accesos a la memoria externa. En otro caso el FET de pull-up está cortado. Consecuentemente las líneas de P0 que están siendo utilizadas como salida son drenaje abierto. Escribiendo un 1 en el latch deja ambos FETS cortados, de esta manera el pin queda flotante. De esta manera la puerta 0 puede ser utilizada como entrada de alta impedancia. Debido a que las puertas 1, 2 y 3 tienen pull-ups internos fijos, son llamadas "puertas cuasi-bidireccionales". Cuando están configuradas como entrada son fijadas en alto y la corriente circulará cuando sea llevado externamente a "0". La puerta 0 por otra parte es considerada "bidireccional" debido a que cuando se configura como entrada, está flotante.

Page 9: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 9

Fig 1.4 Buffers E/S y Latches de las puertas del 8051 1.3.2- Como exteriorizar información a través de una puerta. En la ejecución de una instrucción que modifica el valor del latch de una puerta el nuevo valor no es capturado por el latch inmediatamente sino que lo hace en el último ciclo de maquina de la instrucción, debido a un retardo provocado por sincronismos internos. Cuando la salida de información genera un cambio de 0 a 1 en las puertas P1, P2 o P3, la circuitería interna esta diseñada de manera tal que transistores de efecto de campo, funcionando como pullup transitorios, proveen una mayor velocidad de transición aportando corrientes del orden de los 30mA en tecnología HMOS. 1.3.3- Conectando y cargando una puerta. Los buffers de salida de las puertas 1, 2 y 3 pueden manejar, cada uno, 4 entradas TTL (LS). Estas puertas en versiones HMOS pueden ser manejadas por cualquier circuito TTL o NMOS. Para el caso de HMOS y CHMOS se pueden conectar a salidas "colector abierto" o "drenaje abierto", pero hay que notar que las transiciones de 0 a 1 no serán rápidas. Los buffers de salida de la puerta 0 pueden manejar, cada uno, 8 entradas TTL (LS), ellas requieren pullups externos para manejar entradas NMOS, excepto cuando están siendo usadas como el bus de datos y direcciones. 1.3.4- Comportamiento de las puertas con algunas instrucciones. Dentro del RBI hay instrucciones que permiten leer el pin o el latch correspondiente de las puertas de salida. Las instrucciones que leen el latch son aquellas que están listadas a continuación, cuando el operando destino es una puerta o un bit de una puerta, caso contrario leerán el pin. ANL (AND lógica ANL P1,A) ORL (ORL lógico ORL P2,A) XRL (OR-EX lógico XRL P3,A) JBC (salte si el bit es igual a uno y lo borra JBC P1.1, label) CPL (complemente un bit CPL P3.0) INC (incrementa INC P2) DEC ( decrementa DEC P1) DJNZ (decremente y salte si no es cero DJNZ P3, label) MOV Px.y,c (mover el bit de carry al bit y de la puerta x ) CLR Px.y (poner en cero el bit y de la puerta x) SET Px.y (poner en uno al bit y de la puerta x)

Page 10: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 10

El motivo de que lean el latch en lugar del pin, es para evitar posibles malinterpretaciones de nivel de tensión en el pin. Por ejemplo, un bit de la puerta podría utilizarse para manejar la base de un transistor. Cuando un 1 es escrito al bit, el transistor se satura. Si la CPU luego lee el bit de la puerta en el pin, leerá la Vb (tensión en la base) del transistor e interpretará un cero. Leyendo el latch en lugar del pin ingresará el valor correcto. 1.4- ACCESO A LA MEMORIA EXTERNA El acceso a memoria externa se puede dividir en 2: 1- Acceso a memoria externa de programa y 2- Acceso a memoria externa de datos. Los accesos a memoria externa de programa utilizan la señal /PSEN (program store enable) como la habilitación de lectura. Los accesos a memoria externa de datos utlizan /RD y /WR (funciones alternativas de P3.7 y P3.6) para habilitar la memoria. Las búsquedas desde memoria externa de programa siempre utilizan una dirección de 16 bits. Los accesos a memoria externa de datos pueden usar direcciones de 16 bits (MOVX @DPTR) o una dirección de 8 bits (MOVX @Ri). Cuando se utiliza una dirección de 16 bits, el byte alto de la dirección sale por la puerta 2, donde se mantiene durante todo el ciclo de lectura o escritura. Durante este tiempo el latch de la puerta 2 (el SFR) no tiene que contener unos, y los contenidos del SFR de la puerta 2, no son modificados. Si el ciclo de memoria externa no es seguido inmediatamente por otro ciclo de memoria externa, los contenidos no perturbados del SFR de la puerta 2 reaparecerán en el próximo ciclo. Cuando se utiliza una dirección de 8 bits (MOVX @Ri), los contenidos del SFR de la puerta 2 permanecerán en los pines de la puerta 2 durante todo ciclo de memoria externa. Esto facilita el paginado de la memoria. En cualquier caso, el byte bajo de la dirección es multiplexado en el tiempo con el byte de datos en la puerta 0. La señal ADDR/DATA maneja ambos FETs en los buffers de salida de la puerta 0. Así, en esta aplicación los pines de la puerta 0 no son salidas con drenaje abierto y no requieren pull-ups externos. La señal ALE (address latch enable) debería utilizarse para capturar el byte de dirección en un latch externo. El byte de dirección es válido en la transición negativa de ALE. Luego en un ciclo de escritura el byte de datos a escribir aparece en la puerta 0 exactamente antes de que /WR sea activada y permanecerá allí hasta despues de que /WR sea desactivada. En un ciclo de lectura, el byte entrante es aceptado en la puerta 0 exactamente antes que la habilitación de lectura sea desactivada. Durante cualquier acceso en la memoria externa, la CPU escribe FFh al latch de la puerta 0 (el SFR), borrando de esta manera cualquier información que pudiera haberse mantenido en el SFR de la puerta 0. Se accede a la memoria externa de programa de dos maneras: 1) Si la señal /EA (external access) está activada ó 2) Si el PC (program counter) contiene un número mayor que 0FFFh (ó 1FFFh en el 8052) Esto requiere que versiones sin ROM tengan /EA cableada en bajo para habilitar los 4K mas bajos (8K en el 8032) a ser buscados desde la memoria externa de programa.

Page 11: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 11

1.4.1- PSEN La señal de habilitación de lectura para busquedas externas es /PSEN. Cuando la CPU esta accediendo a la memoria externa de programa, /PSEN se activa dos veces cada ciclo (excepto durante una instrucción MOVX), aunque el byte buscado no se necesite en ambas oportunidades en la instrucción actual. No confundir este señal con /RD, que cumple la misma función pero para lectura de memoria externa de datos. 1.4.2-Superposicion de los espacios de direccionamiento de memoria externa de programa y datos En algunas aplicaciones es deseable ejecutar un programa desde la misma memoria que esta siendo utilizada para almacenar datos. En el 8051, los espacios de memoria externa de datos y programa pueden combinarse haciendo el producto lógico de /PSEN y /RD. Una AND de estas dos señales produce una habilitación de lectura activa en bajo que puede utilizarse para la memoria combinada. Ya que el ciclo de /PSEN es mas rapido que el ciclo de /RD, la memoria externa necesita ser tan rápida como el ciclo de /PSEN. 1.5- TIMERS/CONTADORES El 8051 tiene dos registros timers/contadores de 16 bits: Timer 0 y Timer 1. El 8052 tiene tres, Timers 0, 1 y 2; y los tres pueden trabajar como timers o como contadores de eventos. En la función "Timer", el registro es incrementado cada ciclo de maquina. De esta manera, puede pensarse como contador de ciclos de maquina. Debido a que un ciclo de maquina tiene 12 periodos de reloj, la velocidad de la cuenta será 1/12 de la frecuencia del oscilador. En la función "Contador", el registro es incrementado con el flanco negativo del pin de entrada externa correspondiente, T0, T1 o T2 (en el 8052). En este caso toma dos ciclos de maquina reconocer la transición de 1 a 0, por lo tanto la máxima velocidad de cuenta es 1/24 de la frecuencia del oscilador. No existe restricción sobre el ciclo de actividad de la señal de entrada externa, pero para asegurar que un nivel dado sea muestreado al menos una vez antes de que cambie, debería mantenerse por al menos un ciclo de maquina completo. Además de la selección del timer o contador, el Timer 0 y el Timer 1 tienen cuatro modos de operación. El timer 2 del 8052, tiene tres modos de operación: "captura", "auto-recarga" y "generador de baud rate". 1.5.1- Timer 0 y Timer 1 Estos timers/contadores están presentes en el 8051 y en el 8052. La función del timer o contador es seleccionada por los bits de control C/T del SFR TMOD. Estos dos timers, tienen cuatro modos de operación los que se seleccionan por el par de bits M0 y M1 del registro TMOD. Los modos 0, 1 y 2 son iguales para los dos timers. El modo 3 es diferente. A continuación se describen los bits del TMOD.

Page 12: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 12

REGISTRO TMOD (MSB) (LSB)

GATE C/T M1 M0 GATE C/T M1 M0 TIMER 1 TIMER 0 GATE:

Control de compuerta cuando este en 1. El timer/contador "x" esta habilitado solo mientras el pin INTx es alto y TRx (pin de control) es 1. Cuando este es 0 el Timer x esta habilitado si el bit de control TRx es 1.

C/T: Selector de timer o contador. En cero opera como timer (entrada desde el reloj interno). En 1 la operacion es como contador (entrada desde el pin "Tx").

M1,M0: 0 0 Funciona como el timer de MCS 48 (modo 0), aqui TLx trabaja como divisor de 5 bits. 0 1 Contador/Timer de 16 bits (modo1). THx y TLx estan en cascada, no hay divisor. 1 0 Contador timer de 8 bits con auto recarga (modo 2). THx mantiene un valor, el cual sera recargado en TLx cada vez que exista overflow.

1 1 Timer 0: TL0 es un timer contador de 8 bits controlado por los bits de control del timer 0. TH0 es un timer de 8 bits controlado solo por los bits de control del timer 1 1 1 Timer 1: Timer/contador 1 detenido. REGISTRO TCON (MSB) (LSB)

TF1 |TR1 TF0 TR0 IE1 IT1 IE0 IT0 TF1:

Flag de desborde del timer 1. Puesto en 1 por hardware cuando el timer/contador 1 desborda. Puesto en cero por hardware cuando el procesador pasa a ejecutar la rutina de interrupción.

TR1: Bit de puesta en marcha del timer 1. Puesto en 1/0 por programa para poner en funcionamiento o detener el timer/contador.

TF0:

Page 13: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 13

Flag de desborde del timer 0. Idem TF 1. TR0:

Idem TR1. IE1:

Flag de interrupción 1. Puesta en uno por hardwarwe cuando se detecta un flanco de pedido de interrupcion ingresado por INT 1. Puesto en cero cuando la interrupción es procesada.

IT1: Bit de control de la interrupción 1. Puesta a 1/0 por programa para especificar si el disparo de la interrupción externa, será por flanco de bajada o nivel bajo.

IE0: Idem IE1. IT0:

Idem IT1. 1.5.2- MODOS DE FUNCIONAMIENTO DE LOS TIMERS. MODO 0 Poniendo el Timer 1 o el 0 en modo cero hace que se comporte como el Timer del 8048, el cual es un contador de 8 bits, con un divisor de frecuencia de hasta modulo 32. Ver fig. 1.5. En este modo, el registro del Timer es configurado como un registro de 13 bits. Debido a que el contador recicla, cuando pasa por cero, coloca en uno el flag de interrupción TFx del TCON. La entrada es habilitada cuando TRx = 1 y el GATE = 0 ó INTx = 1 (colocando GATE = 1, permite al Timer ser controlado por la entrada externa INTx, para facilitar mediciones de ancho de pulso). TRx es un bit de control en el SFR TCON, y GATE esta en el SFR TMOD. El registro de 13 bits esta compuesto por los 8 bits de THx y los 5 bits mas bajos de TLx. Los 3 bits superiores de TLx son ignorados. Colocando el flag de puesta en marcha TRx en 1, no borra los registros. El modo de operación 0 es igual para el Timer 0 y el Timer 1.

Page 14: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 14

Fig. 1.5 Modo 0 del Timer/Contador 0 o 1

MODO 1 El Modo 1 es igual al Modo 0, excepto que el registro del Timer, funcionara con 16 bits. MODO 2 El Modo 2 configura el registro del Timer como un contador de 8 bits (TLx), con recarga automática, como se muestra en la figura 2.6. El desborde desde TLx no solo coloca en 1 a TFx, sino que también recarga TLx con el contenido de THx, el cual es precargado por programa. La operación de recarga deja a THx sin modificación. El modo de operación 2 es valida para el Timer 0 y el Timer 1.

Fig. 16 Modo 2 Timer/Contador 0 o 1 MODO 3 El Timer 1 en modo 3 simplemente detiene la cuenta. El efecto es el mismo como el de poner TR1 = 0. El Timer 0 en modo 3, establece TL0 y TH0 como dos contadores separados. La lógica para el modo 3 para el Timer 0 se muestra en la figura 1.7. TL0 utiliza los bit de control del Timer 0: C/T, GATE, TR0, INT0 y TF0. TH0 es colocado en la función de Timer (contando ciclos de maquina) y hace uso de los bits TR1 y TF1 del Timer 1. El modo 3 se utiliza para aplicaciones que requieran un Timer o contador extra de ocho bits. Con el Timer 0 en el modo 3, en el 8051 puede asemejarse a un chip que posee 3 Timers/contadores (4 para el 8052). Cuando el Timer 0 esta en modo 3, el Timer 1 puede ser colocado en funcionamiento o detenido, ingresándolo o no en el modo 3; o bien puede ser

Page 15: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 15

utilizado por la puerta serie como un generador de Baud Rate, o en cualquier aplicación que no requiera interrupción.

Fig. 1.7 Modo 2 Timer/Contador 0 o 1

1.5.3- TIMER 2 El Timer 2 es un timer/contador de 16 bits, el cual pertenece solo al 8052. Como el timer 0 y 1, este también puede operar como un contador de eventos. Este es seleccionado por el bit C/T2 en el SFR T2CON. Este timer tiene 3 modos de operación: "captura", "autocarga", y "generador de Baud Rate", los cuales son seleccionados por los bits RCLK, TCLK y CP/RL2 del SFR T2CON. REGISTRO T2CON.

TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 TF2:

Flag de desborde del timer 2, es puesto en uno cuando se produce desborde, debiendo ponerse a cero por soft. TF2 no será puesto en 1 cuando RCLK = 1 o TCLK = 1.

EXF2:

Page 16: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 16

Flag externo del timer 2. Se pone en uno cuando se produce una transición negativa en T2EX y EXEN2 = 1. Cuando la interrupción del timer 2 esta habilitada, EXF2 = 1 permite que la CPU acceda a la rutina de servicio de la interrupcion. EXF2 debe ser puesta a cero por soft.

RCLK:

Flag del reloj de recepción. Cuando es puesto en uno, causa que la puerta serie utilice los pulsos de desborde del timer 2, como el reloj de recepción en los modos 1 y 3. RCLK = 0 causa que el desborde del timer 1 sea utilizado como el reloj de recepción.

TCLK:

Flag del reloj de transmisión. Cuando es puesto en uno, hace que la puerta serie utilice los pulsos de desborde del timer 2, como el reloj de transmisión en los modos 1 y 3. RCLK = 0 causa que el desborde del timer 1 sea utilizado como el reloj de transmisión.

EXEN2:

Flag de habilitación externo del timer 2. En uno permite que una captura o recarga ocurra como resultado de una transición negativa en T2EX, si el timer 2 no esta siendo utilizado como reloj de la puerta serie. EXEN2 = 0 causa que el timer ignore los eventos en T2EX.

TR2:

Control de puesta en marcha/detención del timer 2. TR2 = 1 pone el timer 2 en funcionamiento.

C/T2:

Selección de contador o timer. 0 = timer interno (f osc. / 12) 1 =contador de eventos externos (disparado en el flanco negativo de T2EX) CP/RL2:

Flag de captura/recarga. En uno, las capturas ocurrirán con las transiciones negativas de T2EX si EXEN2 = 1. Cuando es cero, las autorecargas ocurrirán con el desborde del timer 2 o con las transiciones negativas en T2EX cuando EXEN2 = 1. Si RCLK = 1 o TCLK = 1, este bit se ignora y el timer es forzado a autorecarga por su desborde.

SELECCION DE LOS MODOS DE OPERACION. RCLK + TCLK CP/RL2 TR2 MODO 0 0 1 auto recarga de 16 bits modo 0. 0 1 1 captura de 16 bits modo 1

Page 17: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 17

1 X 1 generador de Baud Rate modo 2 X X 0 detenido En el modo captura hay dos opciones que se pueden seleccionar con el bit EXEN2 del T2CON. Si EXEN2 = 0 el timer 2 es un timer o contador de 16 bits, el cual cuando se produce un desborde coloca el bit TF2 en uno, de esta forma se puede utilizar para generar una interrupción. Si EXEN2 = 1, el timer 2 trabaja en forma similar a la opción anterior, pero con la característica adicional, que una transición de 1 a 0 en la entrada externa T2EX hace que el valor actual en los registros del timer 2, TL2 y TH2, sean capturadas en los registros RCAP2L y RCAP2H, respectivamente. Además la transición en T2EX produce que el bit EXF2 en T2CON, sea puesto en uno y este al igual que TF2 pueda generar una interrupción. Ver fig 1.8. En el modo de autorecarga, existen también dos opciones, las que se seleccionan mediante el bit EXEN2 del T2CON. Si EXEN2 = 0, cuando el timer 2 desborda, no solo pone TF2 en uno sino que también hace que los registros del timer 2 sean recargados con el valor de los registros RCAP2H y RCAP2L y siga la cuenta. Los registros RCAP2H y RCAP2L son precargados por programa. Si EXEN2 = 1 el timer 2 hace lo anteriormente descripto, pero con la característica adicional que una transición de 1 a 0 en la entrada externa T2EX, también disparara la recarga de los 16 bits y colocara en 1 a EXF2. Remitirse a figura 1.9. El modo generador de Baud Rates se selecciona con RCLK = 1 y/o TCLK = 1 y será visto en la descripción de la puerta serie.

Page 18: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 18

Fig. 1.8 Timer 2 en Modo Captura

Fig. 1.9 Timer 2 en Modo Autorecarga

1.6- INTERFAZ SERIE La puerta serie prevista en el microcomputador es Full Duplex, lo que significa que puede transmitir y recibir simultáneamente. Posee un buffer receptor que le permite comenzar la recepción de un segundo byte, sin que el byte recibido previamente haya sido leido desde el registro de recepción (sin embargo si el primer byte no ha sido leido en el momento en que la recepción del segundo byte termina, el primer byte se perdera). A los registros de transmisión y recepción de la puerta serie se accede a través del registro de funciones especiales SBUF. Escribiendo en SBUF se carga el registro de transmisión y leyendo SBUF se accede al registro de recepción, físicamente separados. La puerta serie puede operar en cuatro modos: Modo 0: Los datos entran y salen a través de la salida RXD. Por TXD saca el reloj de transmisión. Ocho bits son transmitidos y recibidos: ocho bits de datos (el LSB primero). El Baud Rate es fijo y su valor es 1/12 de la frecuencia del oscilador. Modo 1: Diez bits son transmitidos (a través del TXD) o recibidos (a través del RXD). Un bit de comienzo (0), ocho bits de datos (el LSB primero) y un bit de parada. En la recepción el bit de stop se carga en RB8 del SCON. El Baud Rate es variable.

Page 19: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 19

Modo 2: Once bits son transmitidos (a través del TXD) o recibidos (a través del RXD). Un bit de comienzo (0), ocho bits de datos (primero el LSB), un noveno bit de datos programable y un bit de stop. En la transmisión al noveno bit del dato (TB8 del SCON) se le puede asignar por ej. el valor cero o uno, o , el bit de paridad (P del PSW), el cual debería transferirse a TB8 para la transmisión. En recepción el noveno bit del dato se carga en RB8 del SCON, mientras que el bit de stop es ignorado. El Baud Rate es programable a 1/32 o 1/64 de la frecuencia del reloj. Modo 3: Once bits son transmitidos (a través del TXD) o recibidos (a través del RXD). Un bit de comienzo (0), ocho bits de datos (primero el LSB), un noveno bit de datos programable y un bit de stop (1). En resumen el modo 3 es igual al modo 2, excepto en el Baud Rate, el cual es variable. En los cuatro modos, la transmisión es iniciada por alguna instrucción que use SBUF como registro destino. La recepción es iniciada en modo cero por la condición RI = 0 y REN = 1 del SCON. La recepcion se inicia en los otros modos por la llegada del bit de comienzo si REN = 1. En los modos 2 y 3 se debe cargar TB8 antes de escribir SBUF. REGISTRO SCON

SM0 SM1 SM2 REN TB8 RB8 TI RI SM0,SM1: Especifican el modo de operación. 00 : modo 0 registro de desplazamiento frec. del osc./12. . 01 : modo 1 ocho bits UART variable (timer 1 ó 2) 10 : modo 2 nueve bits UART frec. del osc./32 o frec. del osc./64. 11 : modo 3 nueve bits UART variable (timer 1 ó 2) SM2:

Habilita la característica para la comunicación entre procesadores en los modos 2 y 3. En el modo 2 o 3, si SM2 es puesto en uno, luego RI no será activado si el noveno bit de datos recibido (RB8) es = 0. En el modo uno, si SM2 = 1 luego RI no será activado si no fue recibido un bit de stop valido. En el modo 0, SM2 deberá ser cero.

REN:

Habilita la recepción serie. Puesto en uno por programa para habilitar la recepción. Cuando por soft es puesto en cero inhibe la recepción.

Page 20: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 20

TB8: Es el noveno bit del dato que será transmitido en los modos 2 y 3. Es colocado en uno o

cero por programa. RB8:

En los modos dos y tres es el noveno bit del dato que fue recibido. En el modo uno, si SM2 = 0, RB8 es el bit de stop que fue recibido. En modo 0 este bit no se utiliza.

TI: Es el flag de interrupciones de transmisión. Puesto en uno por hardware al final del

tiempo del octavo bit en modo 0, o en el comienzo del bit de stop en los otros modos. Este bit debe ser puesto a cero por programa.

RI:

Es el flag de interrupciones de recepción. Colocado en uno por hardware al final del octavo bit en el modo 0, o en la mitad del bit de stop en los otros modos, este bit debe ponerse a cero por programa.

1.6.1- Generación de Baud Rates El baude rate en Modo 0 esta fijado por: Modo 0 baud rate = (Frecuencia del oscilador)/12 El baud rate en Modo 2 depende del valor del bit SMOD del SFR PCON. Si SMOD = 0 (el cual es su valor despues de un reset), el baud rate es la frecuencia del oscilador/64. Si SMOD = 1, el baud rate es la frecuencia del oscilador/32. Modo 2 baud rate = [ 2SMOD x (Frecuencia del oscilador)]/64 En el 8051, el baud rate en los modos 1 y 3 estan determinado por por la velocidad de desborde del timer 1. En el 8052, estos baud rates pueden determinarse por el timer 1, o por el timer 2 o ambos (por ejemplo uno para transmisión y otro para recepción) Utilizando el timer 1 para generar baud rate El baud rate, en los modos 1 y 3 esta determinado por la velocidad de desborde del timer 1 y el valor de SMOD de la siguiente forma. Modos 1,3 Baud rate =[ 2 SMOD x (Velocidad de desborde del timer 1)]/32

Page 21: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 21

El pedido de interrupción de timer 1 deberia inhibirse en este caso. El timer puede configurarse para operación como timer o contador y en cualquiera de sus tres modos de funcionamiento. En la aplicación mas tipica es configurado como timer, en modo auto-recarga (nibble alto de TMOD = 0010B). En este caso, el baud rates esta dado por la formula: Modos 1 y 3 2 SMOD Frecuencia del oscilador Baud Rate = ------------ X ------------------------ 32 12 x [256-(TH1)] Se pueden asegurar baud rates muy bajos con el timer 1 dejando las interrupciones de timer 1 habilitadas y configurando el timer para funcionar como un timer de 16 bits (nibble alto del TMOD = 0001B), y utilizando la interrupción del timer 1 para hacer una recarga de los 16 bits por programa, la tabla siguiente da los baud rates obtenidos con el timer 1 TIMER 1 BAUD RATE FOSC SMOD C/F MODO VALOR DE RECARGA MODO 0 MAX:1MHZ 12MHZ X X X X MODO 2 MAX:375K 12MHZ 1 X X X MODOS 1,3 62,5K 12MHZ 1 0 2 FFH 19,2K 11,O59 1 0 2 FDH 9,6K 11,059 0 0 2 FDH 4,8K 11,059 0 0 2 FAH 2,4K 11,059 0 0 2 F4H 1,2K 11,059 0 0 2 E8H 137,5 11,986 0 0 2 1DH 110 6MHZ 0 0 2 72H 110 12MHZ 0 0 1 FEEBH Utilizando el timer 2 para generar baud rates En el 8052, el timer 2 es seleccionado como generador de baud rates colocando en 1 TCLK y/o RCLK del SFR T2CON. Notar que el baud rate de transmisión y el de recepción puede ser simultáneamente diferentes. Colocando en 1 RCLK y/o TCLK pone automáticamente al timer 2 en su modo de generador de baud rates, como se muestra la figura 2.10. Este modo es similar al modo auto recarga, es decir, que cuando TH2 desborda, causa que los registros del timer 2 sean recargados con el valor de 16 bits de los registros RCAP2H y RCAP2L, los cuales son precargados por programa.

Page 22: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 22

Ahora, el baud rate en los modos 1 y 3 esta determinado por la velocidad de desborde del timer 2 como sigue: Modos 1,3 Baud Rate = ( Velocidad de desborde del Timer 2)/16 El timer puede configurarse como timer o como contador. En las aplicaciones mas tipicas es configurado para operar como timer (C/T2 = 0). La operación "TIMER" para el timer 2 es un poco diferente cuando esta siendo utilizado como generador de baud rate. Normalmente, debería incrementarse con cada ciclo de maquina ( a la frecuencia de oscilación / 12 ). Como un generador de baud rate, sin embargo, se incrementa en cada estado, es decir a la frecuencia de oscilador / 2. En este caso el baud rate viene dado por la formula: Modos 1,3 ( Frecuencia del Oscilador ) Baud Rate = ----------------------------------- 32 x [65536 - (RCAP2H,RCAP2L)] El timer 2 como generador de baud rate se muestra en la fig. 2.10. Esto es solo valido si RCLK + TCLK = 1. Notar que un ciclo completo en TH2 no coloca TF2 en 1 y no generara una interrupción. Por lo tanto, la interrupción del timer 2 no tiene que inhibirse cuando el timer 2 esta trabajando en este modo. Notar tambien, que si EXEN2 es = 1, una transición de 1 a 0 en T2EX colocara en 1 EXF2 pero no causara una recarga desde (RCAP2H,RCAP2L0 a (TH2,TL2). De esta forma cuando el timer 2 se utiliza como un generador de baud rate, T2EX puede emplearse como un línea extra de pedidos de interrupciones externas si se desea. Debería notarse que cuando el timer 2 esta funcionando (TR2 = 1) en función "TIMER" como generador de baud rate, no debería leerse o escribirse en TH2 o TL2. Bajo estas condiciones el timer esta siendo incrementado en cada estado, y los resultados de una lectura o escritura puede no ser exactos. Los registros RCAP2 pueden leerse, pero no escribirse, debido a que una escritura podría solapar una recarga y causar errores de escritura y/o recarga. En este caso se debe proceder a detener el timer 2 (TR2=0) antes de acceder al timer o a los registros RCAP2.

Page 23: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 23

Fig. 1.10 Timer 2 en Modo Generador de Baud Rate

1.7- INTERRUPCIONES El 8051 posee 5 fuentes de interrupciones y el 8052 tiene 6. Estas son mostradas en la figura 1.11. Las interrupciones externas INT0 e INT1 pueden ser activadas por nivel o por flanco dependiendo del estado de los bits IT0 e IT1 del registro TCON. Los flags que realmente generan estas interrupciones son IE0 e IE1 del TCON. Cuando se produce una interrupción externa, el flag correspondiente es limpiado por hardware cuando se accede a la rutina de servicio, solo si la interrupción fue activada por flanco. Si la interrupción fue activada por nivel, la fuente de pedido externa controlara el flag de pedido en lugar del hardware del chip. Las interrupciones de timer 0 y el 1 son generadas por TF0 y TF1, las cuales son puestas en 1 por un desborde en sus respectivos registros timer/contadores. Cuando se genera una interrupción del timer, el flag que la genero es desactivado por el hardware del chip cuando se accede a la rutina de servicio. Las interrupciones de la puerta serie son generadas por la OR lógica de RI y TI. Ninguno de estos flags son puestos a cero por hardware. En efecto, la rutina de servicio normalmente tendrá que determinar si fue RI o TI quien genero la interrupción y el bit que corresponda deberá ser desactivado por programa. En el 8052, la interrupción del timer 2 es generada por la OR lógica de TF2 y EXF2. Ninguno de estos flags es borrado por el hardware, por lo que la rutina de servicio tendrá que determinar si TF2 o EXF2 fue quien genero la interrupción y el correspondiente bit tendrá que ser borrado por programa.

Page 24: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 24

Todos los bits que generan interrupciones pueden ser colocados en 1 o en 0 por programa, con el mismo resultado que si hubieran sido puestas por hardware. Esto permite que las interrupciones puedan ser generadas o canceladas (interrupciones pendientes) por programa. Cada una de las fuentes de interrupción pueden individualmente habilitarse o inhibirse colocando en 1 o en 0 el bit correspondiente del SFR IE (interrupt enable). Note que IE contiene un bit de inhibición global, EA, el cual inhibe todas las interrupciones. Registro IE MSB LSB

EA * ET2 ES ET1 EX1 ET0 EX0 EA:

Inhibe todas las interrupciones. Si EA=0, ninguna interrupción será reconocida. Si EA=1 cada fuente de interrupción es individualmente habilitada o inhibida poniendo en 1 o 0 su bit de habilitación.

ET2:

Habilita o inhibe la interrupción de captura/desborde deltimer 2. Si ET2=0 la interrupción esta deshabilitada.

ES:

Habilita o inhibe la interrupción de la puerta serie. Si ES=0 inhibe la interrupción. ET1:

Habilita o inhibe la interrupción por desborde del timer 1. Si ET1=0 inhibe la interrupción.

EX1: Habilita o inhibe la interrupción externa 1. Si EX1=0 inhibe la interrupción ET0:

Habilita o inhibe la interrupción por desborde del timer 0. Si ET0=0 inhibe la interrupción.

EX0: Habilita o inhibe la interrupción externa 0. Si EX0=0 inhibe la interrupción.

Page 25: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 25

Fig. 2.11 Fuentes de Interrupción del MCS-51 1.7.1 - Estructura de Prioridades Cada fuente de interrupción también puede programarse en uno de los dos niveles de prioridades posibles, colocando en 1 o en 0 un bit del SFR IP. Una interrupción de baja prioridad puede ser interrumpida por una interrupción de mayor prioridad, pero no por otra fuente de interrupción de la misma prioridad. Una interrupción de alta prioridad no puede ser interrumpida por otra fuente de interrupción. REGISTRO IP

- - PT2 PS PT1 PX1 PT0 PX0 PT2:

Define el nivel de prioridad de las interrupciones del timer 2. PT2=1 nivel de prioridad alto

PS: Define el nivel de prioridad de las interrupciones de la puerta serie. PS=1 nivel de

prioridad alto. PT1:

Define el nivel de prioridad de las interrupciones del timer1. PT=1 nivel de prioridad alto.

Page 26: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 26

PX1: Define el nivel de prioridad de las interrupciones externas 1. PX=1 nivel de prioridad alto.

PT0: Define el nivel de prioridad de las interrupciones del timer 0 PT0=1 nivel de prioridad alto.

PX0: Define el nivel de prioridad de las interrupciones externas 0 PX0=1 nivel de prioridad alto.

Si dos pedidos con niveles de prioridad diferentes se reciben simultáneamente, el pedido correspondiente al nivel de mayor prioridad es al que se le da el servicio. Si pedidos con el mismo nivel de prioridad se reciben simultáneamente, una secuencia de elección (polling) interna determina a que pedido se le dará servicio. Así dentro de cada nivel de prioridad hay una segunda estructura de prioridades prefijadas listadas, a continuación. FUENTE NIVEL DENTRO DE LA PRIORIDAD IE0 MAS ALTO TF0 IE1 TF1 RI+TI TF2+EXF2 MAS BAJA Tener presente que la estructura de "Nivel dentro de la prioridad" es utilizada solo para resolver "pedidos simultáneos del mismo nivel de prioridad". 1.7.2 - Procesamiento de las interrupciones Los flags de interrupciones son muestreados en cada ciclo de maquina. Las muestras son evaluadas durante el siguiente ciclo de maquina. Si uno de los flags estuvo en la condición 1 en el ciclo anterior, en el ciclo presente se detecta y el sistema de interrupciones generara un LCALL a la cabeza de la rutina de servicio correspondiente, siempre y cuando este LCALL generado por hardware no este bloqueado por algunas de las siguientes condiciones: 1- Una interrupción de igual o mayor prioridad que este aun en proceso. 2- El ciclo actual no es el ultimo ciclo en la ejecución de la instrucción. 3- La instrucción en ejecución es RETI o cualquier acceso a los registros IP o IE. Cualquiera de estas tres condiciones bloquean la generación del LCALL a la rutina de servicio de la interrupción. La condición 2 asegura que la instrucción en ejecución será completada antes de saltar a cualquier rutina de servicio. La condición 3 asegura que si la instrucción en proceso es RETI o cualquier acceso a IE o IP, al menos una instrucción mas será ejecutada antes que cualquier interrupción sea aceptada.

Page 27: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 27

El ciclo de evaluación es repetido en cada ciclo de maquina, y los valores elegidos son los que estuvieron presentes en el ciclo de maquina anterior. El hecho de que el flag de interrupciones estuvo una vez activo pero no se le dio servicio por algunas de las condiciones de bloqueo no es recordado. El procesador reconoce un pedido de interrupción ejecutando un LCALL generado por hardware a la rutina de servicio correspondiente. En algunos casos, esto también limpia el flag que genero la interrupción y en otros casos no. Por ejemplo no limpia los flags de la puerta serie o del Timer 2. Esto tiene que hacerse en el programa del usuario. Limpia un flag de interrupción externa (IE0 o IE1) solo si esta fue activada por flanco. El LCALL generado por hardware almacena el contenido del contador de programa en la pila de datos (pero no salvaguarda el PSW) y recarga el PC con una dirección que depende de la fuente de interrupción que debe ser atendida como se muestra a continuación. Fuente Dirección del vector IE0 0003H TF0 000BH IE1 0013H TF1 001BH RI+TI 0023H TF2+EXF2 002BH La ejecución de la rutina de servicio toma lugar desde esas locaciones hasta que la instrucción RETI es encontrada. La instrucción RETI le informa al procesador que esa rutina de interrupción no esta mas en proceso, luego extrae los 2 bytes superiores de la pila y los carga en el PC. La ejecución del programa interrumpido continua desde donde fue abandonado. Una simple instrucción RET podría también haber regresado la ejecución al programa interrumpido, pero dejaría al sistema de control de interrupciones pensando que una interrupción esta aun en proceso. Interrupciones Externas Las fuentes de interrupción externas pueden programarse para activarse por flanco o por nivel, poniendo en 1 o en 0 el bit IT0 e IT1 del registro TCON. Si ITx es igual a 0, la interrupción externa "x" es disparada por un nivel bajo detectado en el pin INTx. Si ITx es igual a 1, la interrupción externa "x" es disparada por el flanco negativo. En este modo, si muestras sucesivas del pin INTx muestran un valor alto en un ciclo y un valor bajo en el próximo el flag de pedido de interrupción IEX del TCON se pondrá en 1 y pedirá la interrupción. Debido a que los pines de interrupción externos son muestreados una vez en cada ciclo de maquina, una entrada en alto o en bajo debería mantenerse al menos 12 periodos de reloj para asegurar su detección. Si la interrupción externa es disparada por flanco, la fuente externa tiene que mantener el pin de pedido de interrupción en alto por lo menos un ciclo, y luego mantenerlo en bajo un ciclo mas para asegurar que la transición sea detectada y así el flag de

Page 28: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 28

pedido de interrupción IEx sea colocado en 1. En este caso IEx será automáticamente limpiado por la CPU cuando se acceda a la rutina de servicio. Si la interrupción externa es activada por nivel, la fuente externa tiene que mantener el pedido activo hasta que la interrupción pedida sea detectada. Luego tiene que desactivar el pedido antes que la rutina de servicio de la interrupción finalice, sino otra interrupción se generara. Tiempo de Respuesta Los niveles en INT0 e INT1 son invertidos y capturados en IE0 e IE1 en cada ciclo de maquina. Los valores no son tenidos en cuenta por la circuiteria hasta el próximo ciclo de maquina. Si un pedido esta activo y las condiciones son correctas para que sea reconocido, se genera por hardware un llamado a subrutina a la dirección de la rutina de servicio. Este llamado ocupa 2 ciclos de maquina, de esta manera un mínimo de 3 ciclos de maquina completos pasan entre la activación de un pedido de interrupción externa y la ejecución de la primera instrucción de la rutina de servicio. Un tiempo de respuesta mas largo resultaría si el pedido esta bloqueado por alguna de las 3 condiciones listadas anteriormente. Si una interrupción con un nivel de prioridad mayor o igual esta en proceso, el tiempo de espera adicional obviamente dependerá de la naturaleza de la rutina de servicio en ejecución. Si la instrucción que se esta ejecutando no esta en su ciclo final, el tiempo de espera adicional no puede ser mayor a 3 ciclos, ya que las instrucciones mas largas (MUL y DIV) tardan solo 4 ciclos, y si la instrucción es RETI o un acceso a IP o IE, el tiempo de espera adicional no puede ser mayor a 5 ciclos (un máximo de un ciclo mas para completar la instrucción en proceso, mas 4 ciclos para completar la próxima instrucción si es MUL o DIV). De esta forma en un sistema con una solo interrupción el tiempo de respuesta es siempre mayor a 3 ciclos y menor que 9 ciclos. 1.7.3- Operación Paso a Paso (single step) La estructura de interrupciones del 8051 permite la ejecución paso a paso por medio de un programa elemental. Como se dijo previamente un pedido de interrupción no se atenderá mientras una interrupción de igual nivel de prioridad este aun en proceso, ni se atenderá después de RETI hasta que al menos una instrucción del programa sea ejecutada. Así, una vez que se ha ingresado a una rutina de interrupción, no se puede volver a ingresar hasta que al menos una instrucción del programa interrumpido sea ejecutada. Una aplicación de esta característica es la operación paso a paso. Para esto se debe programar una de las interrupciones externas (por ejemplo INT0) activada por nivel. La rutina de servicio para la interrupción terminara con el siguiente código: jnb p3.2,$ ;espere aquí hasta que el pedido vaya a alto. jb p3.2,$ ;ahora espere aquí hasta que vaya a bajo.

Page 29: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 29

reti ;vuelva y ejecute una instrucción. Ahora si el pin INT0, el cual corresponde a P3.2, es normalmente mantenido en bajo, la CPU ira directamente a la rutina de interrupción externa 0 y permanecerá allí hasta que INT0 sea pulsada (desde bajo a alto y luego a bajo otra vez). Luego ejecutara RETI, volverá al programa del usuario, ejecutara una instrucción e inmediatamente ingresara otra vez a la rutina de interrupción externa 0 para esperar el próximo pulso en P3.2. Una instrucción del programa de usuario es ejecutada cada vez que se pulsa P3.2. 1.8- RESET La entrada de reset es el pin RST, el cual es la entrada a un dispositivo disparador de Schmitt. Un reset es ejecutado manteniendo en alto el pin RST por al menos 2 ciclos de maquina (24 periodos del oscilador), mientras el oscilador este funcionando. La CPU responde ejecutando un reset (puesta en condiciones iniciales) interno. También configura como entrada los pines ALE y PSEN (ellos son cuasi-bidireccionales). El reset interno es ejecutado durante el segundo ciclo en el cual RST es alto y es repetido cada ciclo hasta que RST vaya a un valor bajo. El reset deja los registros internos con los siguientes valores: Registros Contenidos PC 0000H A 00H B 00H PSW 00H SP 07H DPTR 0000H P0-P3 FFH IP(8051) XXX00000B IP(8052) XX000000B IE(8051) 0XX00000B IE(8052) 0X000000B TMOD 00H TCON 00H T2CON (SOLO 8052) 00H TH0 00H TL0 00H TH1 00H TL1 00H TH2 (sólo en 8052) 00H TL2 (sólo en 8052) 00H RCAP2H (sólo en 8052) 00H RCAP2L (sólo en 8052) 00H

Page 30: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 30

SCON 00H SBUF INDETERMINADO PCON (VERSIONES HMOS) 0XXXXXXXB PCON (VERSIONES CHMOS) 0XXX0000B La RAM interna no es afectada por el reset. Cuando el chip es alimentado, el contenido de la RAM es indeterminado a menos que este regresando de un modo de consumo reducido. 1.8.1- POWER ON RESET Se puede obtener un reset automático cuando Vcc se conecta al pin RST a través de un capacitor de 10uF y una resistencia de 8.2k a Vss como se muestra en la figura 1.12

Fig. 1.12 Circuito de Reset

1.9- MODOS DE OPERACION A POTENCIA REDUCIDA En aplicaciones donde el consumo de potencia es critico, la versión CHMOS provee modos de operación con potencia reducida como una característica standard. 1.9.1- Modos de potencia reducida en CHMOS Las versiones CHMOS tienen 2 modos de potencia reducida, el modo IDLE y POWER DOWN. La entrada a través de la cual la alimentación auxiliar (Back up) es administrada durante estas operaciones es Vcc. La figura 1.13 muestra la circuiteria interna la cual implementa estas características. En el modo IDLE (IDL=1), el oscilador continua funcionando y los bloques de interrupción, la puerta serie, y los timers continúan funcionando,

Page 31: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 31

pero la señal de reloj es bloqueada para la CPU. En el modo POWER DOWN (PD=1) el oscilador es detenido. Los 2 modos son activados colocando en 1 los bits correspondientes del SFR PCON. La dirección de este registro es 87H. Registro PCON

SMOD - - - GF1 GF0 PD IDL SMOD:

Bit de baud rate doble cuando este bit es 1, el timer 1 es utilizado para generar el baud rate y la puerta serie puede ser utilizada en los modos 1, 2 y 3.

GF1:

Flag de propósitos generales. GF0:

Flag de propósitos generales. PD:

Bit de modo POWER DOWN. PD=1 activa la operacion Power Down. IDL:

Bit de modo IDLE. IDL=1 activa la operacion Idle. Si PD=1 y simultáneamente IDL=1, la operación ejecutada será Power Down.

Page 32: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 32

Fig. 2.13 Hardware del modo Power Down e Idle

1.9.2- Modo IDLE Una instrucción que ponga en 1 PCON.0 causa que sea la ultima instrucción ejecutada antes de ir al modo IDLE. En este modo la señal de reloj interna es bloqueada a la CPU, pero no a las interrupciones, timers, y puertas series. El estado de la CPU es preservado completamente, el SP, PC, PSW, A y todos los otros registros mantienen sus datos. Los pines de las puertas mantienen el estado lógico que tenían antes de ingresar al modo IDLE. ALE y PSEN se mantienen en el nivel lógico alto. Hay dos caminos para finalizar el modo IDLE. La activación de cualquier interrupción habilitada causara que PCON.0 sea limpiado por hardware, terminando el modo IDLE. A la interrupción se le dara servicio y siguiendo a RETI la próxima instrucción a ejecutarse será la siguiente a la instrucción que puso al dispositivo en modo IDLE. Los bits flags GF1 y GF0 pueden utilizarse para dar una indicación si una interrupción ocurrió durante operación normal o durante un IDLE. Por ejemplo, una instrucción que activa IDLE puede colocar en uno GF1 y/o GF0. Cuando IDLE sea terminado por una interrupción, la rutina de servicio de la interrupción puede examinar estos flags. El otro camino para terminar el modo IDLE es por un reset por hardware. Debido a que el oscilador esta aun funcionando, el reset por hardware necesita mantenerse activo por solo dos ciclos de maquina (24 periodos del oscilador) para completar el reset. 1.9.3- Modo POWER DOWN Una instrucción que pone en 1 a PCON.1 causa que sea la ultima instrucción ejecutada antes de ir al modo Power Down. En este modo el oscilador del chip es detenido. Con el reloj

Page 33: ARQUITECTURA DE LA FAMILIA INTEL MCS-51 - D E A - …dea.unsj.edu.ar/mp1/APUNTES/00 Arquitectura uC8051… ·  · 2017-07-31Fig. 1.1 Diagrama en bloque de la Arquitectura del MCS-51

MICROPROCESADORES II Ing. Carlos G. Gil, Ing. Gustavo Ensinck 33

congelado, todas las funciones son detenidas, pero la RAM interna y los SFR son preservados. Los pines de las puertas presentan los valores mantenidos por sus respectivos SFRs. ALE y /PSEN son puestos en bajo. La única forma de salir del modo POWER DOWN, es por medio de un reset por hardware. Reset redefine todos los SFRs pero no cambia la RAM interna. En el modo de operación Power Down, Vcc puede reducirse para minimizarse el consumo de potencia. Debe tenerse cuidado para asegurar que Vcc no sea reducido antes de que se ingrese al modo Power Down, y que el Vcc original sea restablecido a su nivel de operación normal, antes de que el modo POWER DOWN sea terminado. El reset que finaliza Power Down, también libera el oscilador. El reset no debería activarse antes de que Vcc sea restablecido a su nivel de operación normal, y debe mantenerse activo suficiente tiempo para permitir que el oscilador funcione nuevamente y se estabilice (normalmente < 10 mseg).-