Micro Control Adores en Control III-Luis Urdaneta

198
Por Luis D. Urdaneta G. Por Luis D. Urdaneta G. Control de Tiempo Temporizadores y Contadores

description

Microcontroladore en ControlLuis Urdaneta

Transcript of Micro Control Adores en Control III-Luis Urdaneta

Page 1: Micro Control Adores en Control III-Luis Urdaneta

Por Luis D. Urdaneta G.Por Luis D. Urdaneta G.

Control de Tiempo Temporizadores y

Contadores

Control de Tiempo Temporizadores y

Contadores

Page 2: Micro Control Adores en Control III-Luis Urdaneta

Registrar y/o calcular el tiempo transcurrido entre eventos.Contar eventos.Generar tasa de baudios para el puerto serie.

La función de control de tiempo del 8051 es realizada por dos Temporizadores/Contadores (T/C) denominados T0 y T1, los cuales pueden ser activados, leídos y configurados de forma independiente.

En cualquier caso el µCtrl siempre incrementa un registro interno del T/C hasta cuando éste se desborde (Todos los bits están en 1 y pasan a 0)

Temporizadores y Contadores

Las funciones generales de estos recursos del 8051 son:

2

Page 3: Micro Control Adores en Control III-Luis Urdaneta

El tiempo invertido por un T/C en contar desde 0 hasta 25000 será de 0.025 seg. Así, para ejecutar una tarea 1 vez por segundo, es necesario que el T/C cuente 40 veces desde 0 hasta 25000, lo cual no es mayor problema.

Medición de TiempoMedición de Tiempo

Las frecuencias usuales del cristal del 8051 básico son 12 MHz y 11.059 MHz, siendo está última la más común por razones relacionadas con la generación de tasa de baudios.

Temporizadores y Contadores

Cuando los T/C son configurados como temporizadores son incrementados en 1 cada ciclo de máquina. Como cada ciclo corresponde a 12 periodos de reloj, un T/C en operación se incrementará un millón de veces cada segundo, siempre que la frecuencia del cristal sea 12 MHz.

3

Page 4: Micro Control Adores en Control III-Luis Urdaneta

En un tiempo de 0.025 segundos, las matemáticas indican que el T/C debería aumentar hasta 23039.65. Corriendo la cuenta hasta 23040, el tiempo será de 0.025000461, lo cual representa una diferencia despreciable de 0.000000461.

Para un evento que deba realizarse cada segundo bastará con un con- teo inicial hasta 23040, ejecutar la tarea, reiniciar el T/C y repetir 40 veces la cuenta de 23040, debido a que 40x 0.025000461 = 1.000001664

Temporizadores y Contadores

Con f = 11.059 MHz, el T/C se incrementa 921583 veces por segundo y transcurrirán 0.027 segundos durante una cuenta desde 0 hasta 25000. Si ahora se quiere realizar una tarea cada segundo, debe repetirse la cuenta 36.86 veces, lo cual no es posible.

4

Page 5: Micro Control Adores en Control III-Luis Urdaneta

En este modo de operación la entrada externa es examinada durante la fase 2 (F2) del estado S5 de cada ciclo de máquina. Cuando la prueba muestra un alto en un ciclo y un bajo en el siguiente el registro del timer es incrementado. La nueva cuenta será registrada durante F1S3 del ciclo siguiente a aquel cuando la transición fue detectada. Al requerirse 24 estados para reconocer la transición de 1 a 0, la velocidad máxima de conteo es 1/24 de la frecuencia de reloj. En el modo temporizador este valor es 1/12 de la frecuencia de reloj.

Temporizadores y Contadores

Los timers del 8051 pueden usarse también como contadores. En este caso no se incrementan cada ciclo de máquina sino que lo hacen como respuesta a una transición de 1 a 0 en el terminal externo de entrada del temporizador T0 (P3.4) o T1 (P3.5).

Timers como contadores de eventosTimers como contadores de eventos

5

Page 6: Micro Control Adores en Control III-Luis Urdaneta

jnb P2.0,$ ; No hay objeto presente, esperar. jb P2.0,$ ; Entrada en alto. El producto está frente al sensor. inc cont ; El objeto ha cruzado la línea, incrementar contador.

Observe que el código es corto y realiza el trabajo. Pero como desven-taja fundamental: mantiene ocupado continuamente al µctrl.

Temporizadores y Contadores

Considere que se tiene un sensor colocado en una línea de producción industrial el cual envía un pulso cada vez que un objeto pasa a través de éste. El siguiente código puede servir para contar el número de objetos que pasan por el sensor. El pulso es recibido en el terminal 0 del puerto 2.

6

Page 7: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Si es necesario que el microcontrolador realice otras tareas además de contar objetos, puede usarse el timer 1 para registrar el paso de los productos. Lo primero es configurar a T1 como contador y conectar el sensor al terminal P3.5. De este modo T1 contará los pulsos (transiciones de 0 a 1) en P3.5. Cuando se requiera saber cuantos objetos han pasado por la línea, simplemente se lee el valor registrado por T1. De este modo el 8051 puede ejecutar otras tareas mientras el timer 1 realiza la cuenta.

7

Page 8: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

El circuito de la figura muestra los componentes fundamentales de T0 y T1.

Timers T0 y T1Timers T0 y T1

El interruptor de la izquierda selecciona la fuente de reloj para T1 (T0).C/T = 0 1/12 de la fosc C/T = 1 pulsos en terminal T1 (T0)

8

Page 9: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Para arrancar el timer, debe permitirse el paso de los pulsos hacia los registros internos TH1 TL1 (TH0 TL0) que deben incrementarse. Esto se logra cuando la señal interna control está en nivel alto.El control del temporizador puede realizarse por programa a través del bit GATE1 (GATE0) del registro TMOD, si éste se programa con un 0, se bloquea el paso de la señal de acuerdo con el estado del bit TR1 (TR0) del registro TCON. setb TR1 permite (arranca) el conteo, clr TR1 inhibe (para) la cuentaPara control por hardware, se carga un 1 en GATE1 (GATE0) de modo que será la señal externa INT1 (INT0) la que habilita o deshabilita el conteo, estando en 1 TR1 (TR0). 9

Page 10: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Los registros internos contadores TH1 TL1 (TH0 TL0) pueden ser de 8, 13 o 16 bits de acuerdo con el modo de operación programado para el timer. Después de los registros se encuentra el flip flop del bit de bandera TF1 (TF0) del registro TCON, el cual notifica el desbordamiento del contador. Por último, si la interrupción correspondiente está habilitada, se gene-rará una solicitud de interrupción al microcontrolador.

10

Page 11: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Además del funcionamiento como contador de eventos, los timers T0 y T1 pueden ser programados para uno de cuatro modos de operación.Los seis registros usados para configuración y control de T0 y T1 son los siguientes:TMOD (89H) Selección de modos de operación. TCON (88H) Control del timer.TH0, TL0 (8CH, 8AH) bytes alto y bajo de T0TH1, TL1 (8DH, 8BH) bytes alto y bajo de T1

Registros asociados a la operación del los Timers T0 y T1Registros asociados a la operación del los Timers T0 y T1

11

Page 12: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

12

Page 13: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

13

Page 14: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

La función temporizador o contador es seleccionada por el bit de control T/C del registro de funciones especiales TMOD (Timer/Counter Modo Control Register). Tenga en cuenta que este FSR no es direccionable por bits.El modo de operación puede ser seleccionado manipulando los bits M1M0 del registro TMOD, de acuerdo con el timer que corresponda.

14

Page 15: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Poniendo los bits M1M0=0 en el registro TMOD se selecciona el modo de operación cero para los timers T0 y T1.

Modo 0: Temporizador/contador de 13 bitsModo 0: Temporizador/contador de 13 bits

El registro TL1 mantendrá los 5 bits de bajo orden de la cuenta (los bits restantes no se usan) y los 8 bits de orden alto estará en TH1. 15

Page 16: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

En este modo, TL1 contará desde 0 hasta 31 y cuando se desborde se incrementará TH1 en 1. Esto indica que la cuenta máxima será de 8192, Si la cuenta se inicia en cero, la bandera TF1 se activará después de 8192 ciclos de máquinas, cuando la cuenta finaliza.

Para programar un valor de cuenta determinada, los registros internos deben cargarse con el valor dado por la expresión:

16

Page 17: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Para reiniciar la misma cuenta o una nueva, debe recargarse el valor correspondiente en los registros y llevar a cero la bandera TF1.

El tiempo que tarda el contador en alcanzar la cuenta final es dado por:

17

Page 18: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Se usa el timer T0 con disparo por programa y en modo 0 para:

1. Generar una onda cuadrada de1.0 KHz en el terminal 0 del puerto 0.

2. Activar un LED en P0.0 durante ½ segundo y apagarlo el siguiente ½ segundo.

Programa 7Programa 7

18

Page 19: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

1. Para generar una onda cuadrada (DC=50%) de 1.0 KHz se complementa el terminal P0.0 cada 500 µs.

Para configurar el timer para un retardo de 0.5 ms, se debe realizar una cuenta de 500 ciclos de máquina. El valor a cargar en el registro interno es (8192-500) = 7692=1E0CH. Para que los 5 bits de TL0 y el byte de TH0 representen este valor, deben contener:

1E0CH = 11110 00001100B

TH0 = F0H = 11110000B TL0 = 0CH = 00001100B

19

Page 20: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Los temporizadores en modo cero pueden verse como un contador de 8 bits THx (0-FFH) precedido por un divisor de frecuencia TLx de 5 bits (0-1FH)). De modo que el factor de división es de 32 cuando cuenta desde cero. Para el ejemplo anterior, TLx cuenta en el primer paso hasta 20 (32-12) y pone a THx en 1. De modo que el registro alto se desborda cuando han pasado: 15 x 32 + 20 = 500 ciclos de máquina

(FFH-F0H) x 20H + 14H = 1F4H ciclos de máquina

20

Page 21: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

7692240 375

327692 240 32 0 375 32 240 32 12

7692 0 32 0

.

( ) ( . ) ( )

( F H ) CH

21

Page 22: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

22

Page 23: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Señal en P0.0 obtenida de simulación en PROTEUS 6.9

23

Page 24: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

El osciloscopio presenta la señal generada por el código anterior. Observe que la onda no tiene una frecuencia exacta de 1.0 KHz. Esto se debe a que el tiempo que el terminal P0.0 pasa en 1 ó en 0 se alarga sobre los 500 µs generados con precisión por T0, debido al tiempo usado en la ejecución de las instrucciones necesarias para cargar los registros contadores, arrancar T0, limpiar la bandera TF0 y el salto final.Para obtener una señal de 1.0 KHz se debe disminuir el retardo del timer T0, como compensación. Si ahora cargamos en TL0 13H en lugar de 0CH, se obtiene en P0.0:

24

Page 25: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

25

Page 26: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

2. Para activar un LED conectado a P0.0 cada segundo, se complementa la salida cada 0.5 segundos.

Como T1 o T0 en modo cero pueden generar un retardo máximo de 8.192 ms a 12 MHz, para obtener los 500 ms se programa T0 para un retardo de 5 ms y se repite 100 veces.

Los valores a cargar en TH0 y TL0 = son 43H y 18H, respectivamente.

26

Page 27: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD039

P0.1/AD138

P0.2/AD237

P0.3/AD336

P0.4/AD435

P0.5/AD534

P0.6/AD633

P0.7/AD732

P2.7/A1528

P2.0/A821

P2.1/A922

P2.2/A1023

P2.3/A1124

P2.4/A1225

P2.5/A1326

P2.6/A1427

P1.01

P1.12

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD10

P3.1/TXD11

P3.2/INT012

P3.3/INT113

P3.4/T014

P3.7/RD17

P3.6/WR16

P3.5/T115

U1

80C51

X1

CRYSTAL12 MHz

C233pF

C333pF

+5V

R28.2k

C110uF

+5V

R1

220

D1LED-RED

+5V

1 2

U2:A

7406

27

Page 28: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

28

Page 29: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Programa 8Programa 8

En los ejemplos anteriores se ha usado T0 para generar retardos en el modo 0 con disparo por soft. En este ejemplo se configura T1 en modo 0 con disparo por hardware. En este caso el timer se activa ahora cuando se aplica un nivel alto a la entrada del microcontrolador.INT1

29

Page 30: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD039

P0.1/AD1 38

P0.2/AD237

P0.3/AD3 36

P0.4/AD435

P0.5/AD5 34

P0.6/AD633

P0.7/AD7 32

P2.7/A1528

P2.0/A8 21

P2.1/A922

P2.2/A10 23

P2.3/A1124

P2.4/A12 25

P2.5/A1326

P2.6/A14 27

P1.01

P1.12

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD10

P3.1/TXD 11

P3.2/INT012

P3.3/INT1 13

P3.4/T014

P3.7/RD 17P3.6/WR

16P3.5/T1 15

U4

80C51

X1

CRYSTAL12 MHz

C233pF

C333pF

+5V

R28.2k

C110uF

+5V

R1

220

D1LED-RED

+5V

1 2

U1:A

INICIO

30

Page 31: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

31

Page 32: Micro Control Adores en Control III-Luis Urdaneta

Iniciar el destello de un LED con una señal externa no es en realidad una situación común. Este modo de operación puede usarse para medir el ancho de un pulso aplicado al pin de control de T1.

Temporizadores y Contadores

INT1

32

Page 33: Micro Control Adores en Control III-Luis Urdaneta

Este código fue usado para medir un pulso de ancho 2.453 ms. El valor retornado en R1-R2 fue de 4C15H, el cual corresponde al número de 13 bits (en formato del modo 0) de 0995H = 245310

Temporizadores y Contadores

33

Page 34: Micro Control Adores en Control III-Luis Urdaneta

El modo 0 es en realidad una reliquia creada para compatibilidad con el antiguo 8048 y se recomienda no usarlo.En la practica se configura el timer como un contador de 16 bits (modo 1) para que la lectura entregue el ancho del pulso en dos bytes, evitando la necesidad de convertir la medida desde el formato del modo o.

Temporizadores y Contadores

34

Page 35: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Este modo es igual que el anterior excepto que TL0 (TL1) tiene 8 bits, por lo cual la cuenta se extiende hasta 65535 (FFFFH), permitiendo retardos de mayor duración.

Modo 1: Temporizador/contador de 16 bitsModo 1: Temporizador/contador de 16 bits

35

Page 36: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

En este caso la duración del retardo generado es dado por la ecuación:

36

Page 37: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Si el dispositivo opera como contador de 8 bits, la lectura del estado del temporizador en cualquier momento se limita a leer el byte en el registro con una instrucción del tipo:

mov x,TL0 o mov x,TL1.En configuración de 13 ó 16 bits la lectura correcta es algo más complicada. Suponga por ejemplo que en modo de 16 bits se lee una medida que es de 18FFH. Usted lee primero TL0 como FFH y pero luego lee TH1 como 19H, de modo que existe un error apreciable en la lectura.

Error = 665510-639910 = 25610

¿ Cómo leer el timer?

37

Page 38: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

El problema no está en el timer, el valor correcto estuvo disponible pero no fue leído oportunamente. Después de la lectura de TL0 = FFH, cuando se ejecuta la siguiente instrucción transcurre un corto (pero suficiente) tiempo para que el timer se incremente desde 18FFH a 1900H y por esto se lee 19FFH. La solución a este problema puede ser parar el timer al finalizar la medida con clr TR0 o clr TR1, y luego leer los registros. La selección de esta opción depende de si la naturaleza de la aplicación tolera la parada del timer por algunos ciclos de máquina.

38

Page 39: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Cuando no se pueda parar el timer, el error producto de la situación descrita puede ser evitado si nos aseguramos que THx no cambia después de leer TLx. El código siguiente puede ser usado. La lectura queda en los registros A-R1

releer: mov a,TH1 mov r1,TL1

cjne a,TH1,releer …

releer: mov a,TH1 mov r1,TL1

cjne a,TH1,releer …

39

Page 40: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Se debe construir y programar un generador de forma de ondas usando el 8051. El instrumento debe tener tres entradas: la primera es un pulsador S1 para selección del tipo de señal de salida entre: seno, cuadrada, triangular o diente de sierra. Al aplicarse energía al circuito debe generarse una onda seno. Las activaciones subsecuentes del pulsador seleccionarán una salida diferente en el orden especificado. La segunda y tercera entrada son dos interruptores S2 - S3 para aumentar/disminuir la frecuencia de la señal de salida.

Programa 9Programa 9

40

Page 41: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

+5V

C110u

P1.1

P2.4

R6

2.2K

R6

2.2K

R6

2.2K

U4A

74LS14

1 2S1

P2.7

Selector de tipo de onda

+5V

P1.0

P2.2

P1.7

P2.0 +

-

U1

LM741N

3

26

7 14 5

Aumentar frecuencia

S2

P2.6P2.5

C1100n

+5V

P2.1

Generador de señal

Disminuir frecuencia

R1 5.6K

-12V

R5

200

-12V

+5V

R35.6K

Vs

P2.3

-12V

U3

DAC0808

121110

98765

14

15

4

2

16

A8A7A6A5A4A3A2A1

VR+

VR-

IOUT

IOUT

COMP

S3

R45.6K

41

Page 42: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

El tiempo tx entre muestras lo fija el valor cargado en los registros del T/C T1, configurado en modo 1. Para detectar cuando se debe escribir la siguiente muestra se examina la bandera de desborde TF1, así la frecuencia de la salida variará con el valor cargado en los contadores de T1.El timer T0 se configura en modo 1 para generar un retardo de 20 ms para protección por programa contra los efectos del rebote de S2 y S3. Para S1, la supresión del rebote de contactos se realiza por hardware.

42

Page 43: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Para seleccionar el tipo de onda, se programa un contador de módulo 3 que registra el orden en el cual es activado el pulsador. Al inicio el contador está en 0, indicando salida seno. Las subsecuentes activaciones lo pone en 1 para onda cuadrada, en 2 para triangular y en 3 para diente sierra. Al presionarse S1 por cuarta vez el contador vuelve a 0 reiniciándose la secuencia con salida seno. Con el programa en ejecución, se lee el tipo de onda y su frecuencia y se genera un ciclo de la forma de onda deseada a la frecuencia especificada. A continuación se vuelve a leer el estado de los interruptores para generar el siguiente periodo de la misma señal o el primer ciclo de nueva onda de salida.

43

Page 44: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Para generar la onda seno se utiliza una tabla de valores. La k-ésima muestra Nk se obtiene con la siguiente ecuación, donde n es el número de muestras en un periodo:

44

Page 45: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Para que la frecuencia seleccionada sea la misma para todos los tipos de ondas, es necesario generar el mismo número de muestras por ciclo y escribir una muestra cada T/n, donde T es el periodo de la forma de onda. Se desea una amplitud de la salida de 5.0 V (4.98 V) con 128 muestras por ciclo. Con la señal seno no hay problema en usar una tabla de 64 valores (medio ciclo) y con la onda cuadrada basta con escribir 64 muestras en nivel bajo y otras 64 en alto. Pero en el caso de la forma de onda triangular, para obtener la amplitud deseada, la señal debe variar entre 0 y FFH cada medio ciclo, lo cual equivale a 512 muestras por ciclo.

45

Page 46: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Para ajustar el número de muestras a 128, se carga (para la pendiente positiva) en el DAC los valores 0,4,8,0CH,…,FCH,…0CH,8,4,0; lo cual representa 64 muestras en el semiciclo ascendente y 64 muestras en el descendente. Como resultado la amplitud se reduce a 4.93 V. Para que toda salida tenga igual amplitud se ajusta la tabla de valores de la onda seno y el valor de del nivel alto de la onda cuadrada. En el caso de la señal diente de sierra se carga a la entrada del DAC la secuencia 0,2,4,5,8,0AH,…,0FEH para 128 muestras por ciclo.El código del generador consta de un programa principal para detectar el tipo y frecuencia de la onda y generar la señal correspondiente y dos subrutinas: una que escribe el valor digital de la muestra en el P2, cada vez que el temporizador T1 alcanza el final de la cuenta y la otra para control de T0. 46

Page 47: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

47

Page 48: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

48

Page 49: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

49

Page 50: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

50

Page 51: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

51

Page 52: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

52

Page 53: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Aunque el generador funciona, no debe considerarse un instrumento comercial. Son necesarios ciertos refinamientos para convertirlo en un generador de señales práctico.

53

Page 54: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Simulación del generador con Simulación del generador con PROTEUSPROTEUS

P[2

7..

20]

P27P26P25P24P23P22P21P20

P20P21P22P23P24P25P26P27

A26

VREF+14

VEE3

A15

IOUT4

A37

A48

A59

A610

A711

A812

VREF-15

COMP16

U1

DAC0808

R15k

+5V

R25.6k

C1100nF

3

26

74

15

U2

LM741

+12V

-12V

R3

5k

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD039

P0.1/AD138

P0.2/AD237

P0.3/AD336

P0.4/AD435

P0.5/AD534

P0.6/AD633

P0.7/AD732

P2.7/A1528

P2.0/A821

P2.1/A922

P2.2/A1023

P2.3/A1124

P2.4/A1225

P2.5/A1326

P2.6/A1427

P1.01

P1.12

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD10

P3.1/TXD11

P3.2/INT012

P3.3/INT113

P3.4/T014

P3.7/RD17

P3.6/WR16

P3.5/T115

U3

80C51

X1

CRYSTAL

C233pF

33pF

P[27..20]

ONDA

R42.2k

+5V

C410uF

1 2

U4:A

74LS14

R58.2k

C510uF

+5V

RST

+5

V

3

21

411

U5:A

LM324

+12V

R8

10k

R9

10k

R10

48k

-2.45

-12

.0V

RV1100k

A

B

salida

salida

f++

f--R6

2k

54

Page 55: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

55

Page 56: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

En este modo se configura el registro interno como un contador de 8 bits (TL1 o TL0) con recarga automática. El desbordamiento del contador además de activar la bandera TF1 (TF0), recarga TL1 (TL0) con el contenido de TH1 (TH0), iniciándose un ciclo nuevo de conteo.

Modo 2: Temporizador/contador de 8 bits con auto recargaModo 2: Temporizador/contador de 8 bits con auto recarga

56

Page 57: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Este modo es adecuado para temporización con precisión debido a que el retardo no es afectado por el tiempo de ejecución necesario para recargar los registros contadores.

El tiempo de desborde puede calcularse con:

57

Page 58: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

En este ejemplo sencillo se usan los T/C T0 y T1 en modo 2 configurados como contadores de evento.Se tiene una correa transportadora la cual traslada productos de dos tipos: altos y bajos. El sistema tiene dos emisores y dos receptores de luz: A y B. El haz de luz A es interrumpido siempre que un objeto alto pasa por la línea de detección. El rayo luminoso de B es cortado cuando cualquiera de los artículos pasa frente al sensor.Las salidas de los sensores tienen niveles TTL.

Programa 10Programa 10

58

Page 59: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

59

Page 60: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

El 8051 debe contar 100 productos y verificar que exista un máximo de 60% de objetos altos. Si esto se cumple, se emite un beep y se reinicia con un nuevo lote de 100 artículos.Si la proporción no es la establecida, se debe generar una alarma y parar la correa hasta que sea presionado un pulsador de INICIO. También existe un interruptor PARAR, para emergencias.

60

Page 61: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

La salida del sensor A se conecta a la entrada externa de T0, de modo que este timer registre el número de objetos altos. Mientras que la señal de B se aplica a la entrada externa del timer T1 para que este cuente el numero total de productos que pasan por el subsistema.De esta forma es posible conocer la proporción de productos de ambas clase con respecto a un total especificado.

61

Page 62: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

+5V

+12V

Q3TIP32Q4

BC184

Q1BC160

C430pf

RESET

+5V

Q5BC184

R51

R33.3K

+5V

R7

1k

R43.3K

Q2TIP31

R1

8.2K

R2 1k

PARAR

R8

1k

Y1

12 mHz C530pf

C6 10uf

M1

U1

80C51

31

19

18

9

12131415

12345678

3938373635343332

2122232425262728

171629301110

EA/VP

X1

X2

RESET

INT0INT1T0T1

P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7

P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7

P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7

RDWR

PSENALE/P

TXDRXD

INICIO

LS1

62

Page 63: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

63

Page 64: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

64

Page 65: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

65

Page 66: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

Simulación del Programa Simulación del Programa 10 con 10 con PROTEUSPROTEUS

R23.3k

R33.3k

R41

Q1BC160

Q2TIP31

Q3TIP32

Q4BC184

R51k

Q5BC184

+12V

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD039

P0.1/AD138

P0.2/AD237

P0.3/AD336

P0.4/AD435

P0.5/AD534

P0.6/AD633

P0.7/AD732

P2.7/A1528

P2.0/A821

P2.1/A922

P2.2/A1023

P2.3/A1124

P2.4/A1225

P2.5/A1326

P2.6/A1427

P1.01

P1.12

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD10

P3.1/TXD11

P3.2/INT012

P3.3/INT113

P3.4/T014

P3.7/RD17

P3.6/WR16

P3.5/T115

U1

80C51

X1

CRYSTAL12 MHz

C133pF

C233pF

+5V

R68.2k

C310uF

+5V

R7

10k

R1

1k

PARAR INICIAR

+5

V

0BAJAS

0ALTAS

1

23

U2:A

74LS32

LS1

66

Page 67: Micro Control Adores en Control III-Luis Urdaneta

Modo 3: Temporizador en modo divididoModo 3: Temporizador en modo dividido

Cuando el timer 0 es configurado en este modo, se convierte en dos contadores independientes de 8 bits: el timer 00 será TL0 y el timer 01 será TH0. Ambos cuentan hasta 255 y se desbordan cuando regresan cero. Todos los bits asociados al timer 1 real son ahora ligados al TH0 (timer 01).Cuando el timer 0 está en modo 3, el timer 1 real (TH1 TL1) puede ser configurado en los modos 0, 1 y 2, pero no puede ser arrancado/parado y no activa la bandera de desborde, pues sus dos bits de control están cedidos al timer 01 (TH0). En este caso, el timer 1 real será incrementado cada ciclo de máquina.

Temporizadores y Contadores

67

Page 68: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

68

Page 69: Micro Control Adores en Control III-Luis Urdaneta

El único uso de este modo es cuando la aplicación necesite dos timers independientes y uno adicional para generación de la tasa de baudios. En tal caso se usa el timer 1 real como generador de baudios y TH0/TL0 como dos timers separados.

Temporizadores y Contadores

69

Page 70: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

70

Page 71: Micro Control Adores en Control III-Luis Urdaneta

Temporizadores y Contadores

71

Page 72: Micro Control Adores en Control III-Luis Urdaneta

InterrupcionesInterrupciones

Page 73: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

En los ejemplos anteriores, el curso secuencial del programa solo es cambiado por instrucciones específicas de saltos o llamadas/retorno desde subprogramas. El uso de la técnica de interrupciones provee un mecanismo para suspender el curso normal de un programa, ejecutar una subrutina y retornar a continuar con la ejecución del código suspendido temporalmente.

73

Page 74: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Una interrupción, como todo evento asincrónico, puede producirse en cualquier momento durante la ejecución de un programa. Cuando ocurre, se completa la instrucción que está en ejecución. Si la interrupción en cuestión está habilitada, se acepta la petición y se transfiere el control a una rutina de servicio de interrupción (RSI). Esta salva las variables necesarias para preservar las operaciones a reanudarse, y atiende al periférico que originó la llamada. Una vez completada la RSI, el control se transfiere de nuevo al programa principal.

74

Page 75: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

75

Page 76: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

1. Culmina la ejecución de la instrucción en curso.

2. El contenido del contador de programa se almacena en la pila.

3. El PC se carga con la dirección de la primera instrucción de la RSI.

4. Se ejecuta la rutina de servicio.

5. Se recupera el contenido del PC guardado en la pila.

Las tareas que siguen a una interrupción son las siguientes:Las tareas que siguen a una interrupción son las siguientes:

76

Page 77: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Las ventaja principal de la técnica de interrupciones es el ahorro del tiempo de CPU, el cual deja de usar el mecanismo de consultas para detectar la ocurrencia de un eventos críticos, como por ejemplo el desborde de un T/C.Para ilustrar sobre la conveniencia del uso de interrupciones, considere que un programa debe, entre otras tareas, cargar en el A el contenido del puerto 1 cada 50 ms.Para realizar esta función el código configura T1 en modo 1 para que genere el retardo en cuestión.

77

Page 78: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

jnb TF1,saltarclr TF1mov a,P1

saltar: …Considere que aparte de la instrucción jnb (2 ciclos) que prueba TF1 y determina si el salto debe realizarse, el resto del programa consume 98 ciclos de máquina. Esto significa que, en total nuestro, código requiere 100 ciclos de máquina por cada paso. Debido a que TF1 se activa cada 50000 µs, se ejecutarán 500 instrucciones jnb antes que la prueba de TF1 tenga éxito. Sumando a esto los 3 ciclos de máquina del código que lee el puerto y limpia a TF1, se obtiene un total de 1003 ciclos de instrucción invertidos en detectar el desborde del temporizador y ejecutar la lectura de P1. 78

Page 79: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Para evitar tener que examinar el estado de TF1 en cada paso del lazo del programa, se puede programar al 8051 para que pruebe TF1 automáticamente en segundo plano y ejecute un salto a una subrutina cada vez que TF1 conmute a nivel alto. La RSI necesaria sería:

int_T1: mov a,P1 reti

Cuando el µctrl atiende una interrupción de un timer, automáticamente pone a cero la TFx correspondiente. La rutinas RSI en lugar de la instrucción habitual de retorno ret, finaliza con reti la cual además de proveer el retorno al programa principal, indica al µCtrl que una rutina de interrupción ha culminado.

79

Page 80: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Otro ejemplo útil es la recepción de un carácter por el canal serie. Cada vez que el 8051 recibe un carácter activa un bit interno RI de un FSR. Un programa determinado debería examinar en un lazo sin fin el estado de RI para detectar la llegada de un nuevo carácter. Even-tualmente podría chequear a RI ocasionalmente a lo largo de un programa, pero esto implica la posibilidad de pérdidas de caracteres.Usando la interrupción de recepción del puerto serie, el arribo de un carácter genera una interrupción a la cual se asocia el código para la lectura del buffer de recepción del UART del 8051. Esto garantiza la integridad de la información recibida y deja libre al CPU para la realización de otras tareas.

80

Page 81: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Usando la interrupción del timer T1, el código para leer a P1 cada 50 ms

es 334 veces más eficiente.

81

Page 82: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

El 8051 dispone 5 fuentes de interrupción:Internas:

Desborde del timer 0Desborde del timer 1Transmisión/recepción de un carácter por el puerto serie

Externas:Señal en INT0Señal en INT1

Eventos fuentes de interrupción

82

Page 83: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

En resumen, es posible configurar al 8051 para que cuando T0 desborde o sea recibido un carácter por el puerto serie, se ejecute la RSI correspondiente. Para permitir distinguir la fuente especifica de interrupción y ejecutar la RSI procedente, la aceptación de una solicitud es seguida por un salto a un vector de interrupción

83

Page 84: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Existen 8 bytes libres entre cada vector de interrupción, en donde se puede colocar la RSI. Si este espacio de memoria no es suficiente, se inserta en el vector un salto hacia la primera instrucción de la RSI correspondiente.

84

Page 85: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Las interrupciones pueden ser configuradas manipulando los bits de dos FSRs del 8051: IE e IP.

IE : Autoriza la ejecución de interrupciones.

IP: Asigna niveles de prioridad a las interrupciones.

Configurando las interrupciones

85

Page 86: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Después de un RESET, las interrupciones son deshabilitadas. Debido a esto, para que un evento genere una interrupción el programa deberá habilitar el sistema de interrupciones y especificar cual o cuales fuentes serán habilitadas.

Habilitación de interrupciones

86

Page 87: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Para habilitar/deshabilitar las interrupciones se manipula el registro FSR: IE.

87

Page 88: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Por ejemplo, para habilitar la interrupción del timer 0, se ejecuta:

mov IE,#82H o la secuencia

setb EAsetb ET0

Antes de habilitar una interrupción particular, el sistema de interrupciones debe ser habilitado antes, cargando 1 en el bit de habilitación general de interrupciones: EA

Page 89: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

El 8051 verifica la ocurrencia de interrupciones al final de la ejecución de cada instrucción. La secuencia de consulta se realiza en el siguien-te orden:

1. Externa 0

2. Timer 0

3. Externa 1

4. Timer 1

5. Puerto serie

Esto significa que si una interrupción del canal serie y la del timer 1 ocurren simultáneamente, la de T1 será atendida primero. La del puerto serie será ejecutada una vez completada la del T1. 89

Page 90: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

El 8051 ofrece dos niveles de prioridad para las interrupciones:

Nivel alto

Nivel bajo

Esto hace posible asignar prioridad alta a ciertos eventos que sean considerados críticos para el buen desempeño de la aplicación.

Prioridad de las interrupciones

90

Page 91: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Considere que un código autoriza las interrupciones de T1 y del puerto serie. Además se establece que la recepción de un carácter es un evento de mayor importancia que el desborde del timer. De modo que si se está ejecutando la RSI por desborde de T1, conviene que la interrupción serie interrumpa a la RSI del timer. Cuando se complete la recepción del carácter se continúa con la RSI de T1 y al culminar está, se regresa al programa principal.

Esto puede ser programado asignando prioridad alta a la interrupción del puerto serie y baja a la interrupción de T1.

91

Page 92: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Para asignar el nivel de prioridad a las interrupciones se usan los bits el registro FSR: IP.

92

Page 93: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

93

Page 94: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Para asignar el nivel de prioridad a las interrupciones se usan los bits el registro FSR: IP.

94

Page 95: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Reglas para cuando se asigna prioridad a las Reglas para cuando se asigna prioridad a las interrupciones:interrupciones:

1. Una interrupción con prioridad alta puede interrumpir a otra con prioridad baja.

2. Las interrupciones de prioridad alta no pueden interrumpir a otra de igual prioridad.

3. Una interrupción de prioridad baja solo puede ejecutarse cuando ninguna interrupción está en curso.

4. Si dos solicitudes se generan en el mismo momento, primero será ejecutada la de prioridad alta. Si tienen la misma prioridad, se aceptará primero aquella que le corresponda según las prioridades establecidas en la secuencia de consulta. 95

Page 96: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

La figura muestra el proceso normal de atención a una interrupción .

96

Page 97: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Los bits de estado son muestreados durante la fase 2 del estado 5 del ciclo de máquina C1, en el siguiente ciclo son examinados y se determina la interrupción a ejecutar. En los ciclos C3 y C4 se realiza un LCALL con el vector de interrupción y en el C5 se empieza a ejecutar la rutina de interrupción. El proceso descrito se altera si:

• Una interrupción de mayor o igual prioridad está en ejecución.

• No ha finalizado la instrucción en curso.

• La instrucción en proceso es RETI u otra que modifique IE o IP.

97

Page 98: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

• El contenido del PC es cargado en la pila.• Las interrupciones de igual o menor prioridad son

deshabilitadas.• Las banderas TF0 y TF1 son puestas a cero, cuando las

interrupciones son generadas por los timers.• Se transfiere el control del programa a la rutina de servicio.• Al final de la RSI, la ejecución de una instrucción RETI

restaura el contenido del PC.• El estado de las interrupciones es restaurado al estado

anterior a la ocurrencia de la interrupción.

Proceso de interrupción:Proceso de interrupción:

98

Page 99: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Cuando se retorna desde la rutina RSI hacia el código que se ejecutaba cuando ocurrió la interrupción, el procesador debe ser restaurado al estado pre-interrupción. Es responsabilidad del programador salvar todo registro cuyo contenido deba ser preservado. Típicamente los registros que requieren eventual protección son:

• PSW• DPTR (DPH/DPL)• Acc• B• R0-R7

Protección de registrosProtección de registros

99

Page 100: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Para proteger los cinco primeros registros de la lista anterior se inserta en la RSI instrucciones PUSH r al inicio y POP r antes de la instrucción RETI.

En lugar de salvar los registros R0-R7, la RSI puede usar una ventana de registros distintas a la usada por el código interrumpido.

Tenga en cuenta que no es buena idea usar PUSH R0 para preservar el registro R0 porque tal instrucción no será reconocida por el ensamblador. En su lugar use PUSH 00H si está activo el banco 0, PUSH 08H si el banco activo es el 1…

100

Page 101: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

A diferencia de las otra fuentes de interrupción, la interrupción del puerto serie puede ser disparada por dos eventos distintos. Existen dos banderas del puerto serie: RI es activada cuando se recibe el último bit de un carácter por el canal serie, mientras que TI es puesta 1 cuando se transmite el bit de parada de un carácter. En ambos casos se producirá una interrupción, si está habilitada, con vector de interrupción 23H.

Esto obliga a que el código que se inicia en tal dirección deberá primero distinguir si la interrupción se produjo por la transmisión (TI=1) o la recepción (RI=1) de un byte por el puerto serie. De acuerdo con el resultado, se transmitirá o se aceptará un carácter.

La interrupción del puerto serieLa interrupción del puerto serie

101

Page 102: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

jnb RI,exam_TI mov a,SBUF clr RIexam_TI: jnb TI,listo clr TI mov SBUF,a listo: reti

El código examina ambas banderas y procede de acuerdo con cual está activa. Si ambas lo están, ejecutará ambas secciones de código.

Es obligatorio que la RSI limpie las banderas TI y RI.102

Page 103: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Usando las interrupciones de los timers debe generarse en P0.1 un tren de pulsos con ciclo de trabajo de 25 % y frecuencia 10 KHz. Simultáneamente debe parpadear un LED conectado a P0.0

Este ejemplo intenta demostrar como el microcontrolador puede ejecutar varias tareas si se usa la técnica de interrupciones. El periodo de la señal es de 100 µs y el ancho de pulso en alto es 25 µs. Se usa T0 en modo 2 para generar el periodo y a T1 en modo 1 le corresponderá mantener la salida en alto durante 25 µs.

Programa 11Programa 11

103

Page 104: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

El timer T0 se activa primero y cuando desborda la RSI de T0 pone la salida en alto y arranca a T1. Cuando TF1 conmuta a 1, la RSI de T1 retorna P0.1 a cero.

Observe que si TH1/TL1 es cargado con valores desde una tabla en memoria, se puede variar el tiempo alto de la onda con periodo constante. Esto permite realizar la técnica de PWM.

104

Page 105: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

105

Page 106: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

106

Page 107: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Simulación con Simulación con PROTEUSPROTEUS

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD039

P0.1/AD138

P0.2/AD237

P0.3/AD336

P0.4/AD435

P0.5/AD534

P0.6/AD633

P0.7/AD732

P2.7/A1528

P2.0/A821

P2.1/A922

P2.2/A1023

P2.3/A1124

P2.4/A1225

P2.5/A1326

P2.6/A1427

P1.01

P1.12

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD10

P3.1/TXD11

P3.2/INT012

P3.3/INT113

P3.4/T014

P3.7/RD17

P3.6/WR16

P3.5/T115

U1

80C51

X1

CRYSTAL12 MHz

C133pF

C233pF

+5V

R68.2k

C310uF

+5V

R7

10k

A

B

1 2

U2:A

7406

R1

330

D1LED-RED

+5V

107

Page 108: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Onda generada en P0.1Onda generada en P0.1

108

Page 109: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Este ejemplo muestra el uso de las entradas de interrupción externas del 8051. El código debe hacer destellar un LED en P2.4 y muestrear una señal analógica por medio de un convertidor A/D conectado al P1. Si un interruptor SEL (en P2.6) está abierto, la onda adquirida debe enviarse sin alteraciones a un conversor D/A en el puerto 0. En caso que SEL esté cerrado, la señal debe ser invertida antes de ser escrita en el puerto de salida.

Programa 12Programa 12

109

Page 110: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

La frecuencia de muestreo es 3.9 KHz y debe usarse el timer T0 para generarla. El final de la conversión debe ser anunciado por el convertidor A/D mediante una interrupción en el terminal /INT0.Solución:Solución:Se diseña un sistema para procesamiento de señales, controlado por el programa mostrado más adelante.

110

Page 111: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Sistema típico para procesamiento digital de señalesSistema típico para procesamiento digital de señales

111

Page 112: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Sistema de control digitalSistema de control digital

112

Page 113: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Conversión análogo digitalConversión análogo digital

Series de Fourier: fp(t) está constituida por tres componentes113

Page 114: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Señal muestreada por impulsosSeñal muestreada por impulsos

114

Page 115: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

FUNCIONES CON MUESTRAS IGUALESFUNCIONES CON MUESTRAS IGUALES

115

Page 116: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Teorema del muestreoTeorema del muestreo

Establece cuan pequeño debe ser T para reconstruir f(t), dando solamente el conjunto de muestras [fm]. El teorema del muestreo especifica restricciones sobre el contenido de frecuencias de f(t) y puede ser establecido como sigue:

Para recuperar Para recuperar f(t)f(t) exactamente, es necesario exactamente, es necesario muestrear la señal a una velocidad mayor que muestrear la señal a una velocidad mayor que

el doble de su frecuencia más alta.el doble de su frecuencia más alta.ffs s ≥ 2f≥ 2fHH

116

Page 117: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

ffs s ≥ 2f≥ 2fHH

ffss: frecuencia de muestreo: frecuencia de muestreoffHH: frecuencia más alta en la señal que se muestrea : frecuencia más alta en la señal que se muestrea

117

Page 118: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Muestreo Muestreo al dobleal doble de la frecuencia más alta de la frecuencia más alta

118

Page 119: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Muestreo a Muestreo a más del doblemás del doble de la frecuencia más alta de la frecuencia más alta

119

Page 120: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Muestreo a Muestreo a menos del doblemenos del doble de la f de la fHH

120

Page 121: Micro Control Adores en Control III-Luis Urdaneta

Efecto Aliasing

T1 < T2

La forma de onda de f(t) tiene com-ponentes de fre-cuencia por encima de 1/2T2 pero no sobre 1/2T1.

T1 < T2

La forma de onda de f(t) tiene com-ponentes de fre-cuencia por encima de 1/2T2 pero no sobre 1/2T1.

121

Page 122: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

U4A

74LS04

12

+12V

D1

LED

P1.2

U2

DAC0808

121110

98765

14

15

4

2

16

A8A7A6A5A4A3A2A1

VR+

VR-

IOUT

IOUT

COMP

ENT U1

ADC0808

262728

12345

1216

10

97

171415818192021

252423

622

IN0IN1IN2IN3IN4IN5IN6IN7

REF+REF-

CLK

OEEOC

D0D1D2D3D4D5D6D7

A0A1A2

STARTALE

P0.4

-12V

C1100n

P0.1

P1.4

P0.7

R5

5.6k

-12V

P2.0

SAL

P1.1

U5A

7406

1 2

No se muestra el filtro pasa bajo anti-aliasingni el filtro PB de salida. El diagrama completopuede verse en el esquematico para simulaciónen PROTEUS.

P2.6

R6

330

P1.6

P0.0

P0.6

P0.3

P1.5-12V

+5V

P1.0 P2.4

U3 LM741/NS

3

2

74

6

5

1+

-

V+V-

OUT

OS2

OS1

SEL+12V

R4

5.6k

C21n

P1.3

+

-

U6

LF398

3

85

1 24 6 7

+5V

P2.7

P0.5

P0.2

+5V

P1.7

+5V

INT0

CLK

R25.6k

122

Page 123: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

123

Page 124: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

124

Page 125: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

125

Page 126: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

126

Page 127: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Simulación con Simulación con PROTEUSPROTEUS

ENT

U3(CLOCK)

A26VREF+ 14

VEE 3

A15

IOUT 4

A37

A48

A59

A610

A711

A812

VREF- 15

COMP 16

U1

DAC0808

-12V

R15.6k

R2

5.6k

+5V

R3

5.6k

C20.1u

R9(1)

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD0 39

P0.1/AD1 38

P0.2/AD2 37

P0.3/AD3 36

P0.4/AD4 35

P0.5/AD5 34

P0.6/AD6 33

P0.7/AD7 32

P2.7/A15 28

P2.0/A8 21

P2.1/A9 22

P2.2/A10 23

P2.3/A11 24

P2.4/A12 25

P2.5/A13 26

P2.6/A14 27

P1.01

P1.12

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD 10

P3.1/TXD 11

P3.2/INT0 12

P3.3/INT1 13

P3.4/T0 14

P3.7/RD 17P3.6/WR 16P3.5/T1 15

U2

80C51

X1

CRYSTAL12 MHz

C333pF

C433pF

+5V

+5V

OUT1 21

ADD B24ADD A25

ADD C23

VREF(+)12

VREF(-)16

IN31

IN42

IN53

IN64

IN75

START 6

OUT5 8

EOC 7

OE 9

CLOCK 10

OUT2 20

OUT7 14OUT6 15

OUT8 17

OUT4 18OUT3 19

IN228IN127IN026

ALE22

U3

ADC0808

12

U4:A

74LS04

U3(START)

R4220

+5V

+12V

-12V

3

26

74

15

U5

LM741

LED

LED

SEL

SEL

SEL

R58.2k

C5

10uF

R61k

+5V+5V

12

U6:A

7406

D1LED-GREEN

LED

U3(EOC)

SUB1

SAMPLE/HOLD

S/H

AY

S/H

3

21

411

U7:A

LM324

-12V

+12V

R7

22k

C60.067uF

R8

1k

C7

0.002uF

R9

1k

SAL

ENT_ADC

5

67

411

U7:B

LM324

-12V

+12V

R10

22k

C80.067uF

R11

1k

C9

0.002uF

R12

1k

ENT_ADC

ENT_ADC

ENT

S/H

S/H

127

Page 128: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

PROTEUS PROTEUS no tiene modelos no tiene modelos parapara SAMPLE/HOLDSAMPLE/HOLD.. A

SW1DSWITCH

C110nF

Y

S/H

Los operacionales son ideales

Page 129: Micro Control Adores en Control III-Luis Urdaneta

Señal de entradaSeñal de entrada

Interrupciones

Page 130: Micro Control Adores en Control III-Luis Urdaneta

Señal de entrada y Señal de entrada y salida salida del S/Hdel S/H

Interrupciones

Page 131: Micro Control Adores en Control III-Luis Urdaneta

Ahora con control Ahora con control S/HS/H

Interrupciones

Page 132: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Page 133: Micro Control Adores en Control III-Luis Urdaneta

Salida del Salida del S/HS/H y Salida del y Salida del Conversor D/AConversor D/A

Interrupciones

Page 134: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Page 135: Micro Control Adores en Control III-Luis Urdaneta

Señal de salida con Señal de salida con SELSEL cerradocerrado

Interrupciones

Page 136: Micro Control Adores en Control III-Luis Urdaneta

Señales de Señales de entradaentrada y y salidasalida

Interrupciones

Page 137: Micro Control Adores en Control III-Luis Urdaneta

Señales de Señales de controlcontrol

Interrupciones

137

Page 138: Micro Control Adores en Control III-Luis Urdaneta

AdquisiciónAdquisición de una señal de una señal de de vozvoz

Interrupciones

Page 139: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

El ejemplo anterior fue modificado para adquirir una señal de audio. Debido a que el ancho de banda de la voz es de 3.4 KHz, el muestreo se realiza a 8.0 KHz.Un mensaje de voz fue grabado y almacenado en un archivo de audio: entrada_voz.wav y aplicado como entrada al sistema de adquisición.

139

Page 140: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Modificaciones realizadas al circuito:Modificaciones realizadas al circuito:Debido a que la señal de entrada es bipolar; y en la práctica puede ser de magnitud diferente a la nuestra (± 1 V), se agrega a la etapa de entrada circuitos para modificar la amplitud de la entrada y ajustar su nivel DC. El conversor A/D debe recibir una onda de 0 a +5 V, en nuestro configuración. Otro circuito analógico hace posible ajustar el desplazamiento (offset) de la salida. La frecuencia de corte de los filtros pasa bajo, a la entrada y la salida fue modificada como corresponde.Se eliminó el interruptor SEL y también el LED parpadeante.

140

Page 141: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

ic=03

21

411

U1:A

LM324

5

67

411

U1:B

LM324

Vi

R1

10k

R2

100k

R3

10k

R4

10k

R5

10k

R610k

+5V

ESH

+12V

47%

RV2

100k

46%RV3

47k

+12V

-12V

-12V

C11

10uF

C6

10uF

C7

10uF

C8

10uF

C90.0022uF

ETAPA DE ENTRADA

C13

0.002uF

141

Page 142: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

10

98

411

U1:C

LM324

12

1314

411

U1:D

LM324

R13

10k

R14

10kSDAC

R15

10k

R1610k

R17

470k

R18

470k

Vo

+5V

53%

RV1

10k

+12V

-12V

-12V

+12V

C100.0028uF

C12

0.002uF

ETAPA DE SALIDA 142

Page 143: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Modificaciones realizadas al programa:Modificaciones realizadas al programa:Al suprimir el LED, el programa principal se reduce a una instrucción que espera la interrupción de T0:

sjmp $El valor a cargar en T0 para un muestreo de 8.0 KHz es de 83H.En la rutina de servicio de INT0 se elimina el examen del interruptor SEL y la inversión de la señal.

143

Page 144: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Simulación en Simulación en ProteusProteusU4(CLOCK)

A26

VREF+14

VEE3

A15

IOUT4

A37

A48

A59

A610

A711

A812

VREF-15

COMP16

U2

DAC0808

-12V

R85.6k

R9

5.6k

+5V

R10

5.6k

C20.1u

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD039

P0.1/AD138

P0.2/AD237

P0.3/AD336

P0.4/AD435

P0.5/AD534

P0.6/AD633

P0.7/AD732

P2.7/A1528

P2.0/A821

P2.1/A922

P2.2/A1023

P2.3/A1124

P2.4/A1225

P2.5/A1326

P2.6/A1427

P1.01

P1.12

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD10

P3.1/TXD11

P3.2/INT012

P3.3/INT113

P3.4/T014

P3.7/RD17

P3.6/WR16

P3.5/T115

U3

80C51

X1

CRYSTAL12 MHz

C333pF

C433pF

+5

V

+5V

OUT121

ADD B24

ADD A25

ADD C23

VREF(+)12

VREF(-)16

IN31

IN42

IN53

IN64

IN75

START6

OUT58

EOC7

OE9

CLOCK10

OUT220

OUT714

OUT615

OUT817

OUT418

OUT319

IN228

IN127

IN026

ALE22

U4

ADC0808

12

U5:A

74LS04

+12V

-12V

3

26

74

15

U6

LM741

R118.2k

C5

10uF

R121k

+5V+5V

SUB2

SAMPLE/HOLD

S/H

AY

SAL

SUB1(Vi)

SUB1

ETAP_ENT

Vi ESH

SUB3

ETAP_SAL

SDAC Vo

144

Page 145: Micro Control Adores en Control III-Luis Urdaneta

Interrupciones

Salida de Salida de 1.4 segundos1.4 segundos de de audioaudio

Page 146: Micro Control Adores en Control III-Luis Urdaneta

Versiones del 8051

El 8051 original fue diseñado por Intel. Las funciones de 4 de los primeros miembros de la familia MCS-51 son:El 8051 original fue diseñado por Intel. Las funciones de 4 de los primeros miembros de la familia MCS-51 son:

M E M O R I A I N T E R N A

T I P O C A P A C I D A D

R O M E P R O M N IN G U N A C Ó D I G O R A M T IM E R S T E C N O L O G ÍA 8 0 5 1 8 7 5 1 8 0 3 1 4 K 1 2 8 2 H M O S

8 0 5 1 A H 8 7 5 1 A H 8 0 3 1 A H 4 K 1 2 8 2 H M O S 8 0 5 2 A H 8 7 5 2 A H 8 0 3 2 A H 8 K 2 5 6 3 H M O S

8 0 C 5 1 B H 8 7 C 5 1 8 0 C 3 1 B H 4 K 1 2 8 2 C M O S

M E M O R I A I N T E R N A

T I P O C A P A C I D A D

R O M E P R O M N IN G U N A C Ó D I G O R A M T IM E R S T E C N O L O G ÍA 8 0 5 1 8 7 5 1 8 0 3 1 4 K 1 2 8 2 H M O S

8 0 5 1 A H 8 7 5 1 A H 8 0 3 1 A H 4 K 1 2 8 2 H M O S 8 0 5 2 A H 8 7 5 2 A H 8 0 3 2 A H 8 K 2 5 6 3 H M O S

8 0 C 5 1 B H 8 7 C 5 1 8 0 C 3 1 B H 4 K 1 2 8 2 C M O S

Existen al menos catorce fabricantes de microcon- troladores basados y compatibles con el 8051, quie- nes producen casi 300 versiones del dispositivo. En el programa µVision de Keil Software se encuentran las especificaciones de cada modelo.

Existen al menos catorce fabricantes de microcon- troladores basados y compatibles con el 8051, quie- nes producen casi 300 versiones del dispositivo. En el programa µVision de Keil Software se encuentran las especificaciones de cada modelo.

Sólo la empresa holandesa Philips produce 40 modelos.

Sólo la empresa holandesa Philips produce 40 modelos.

146

Page 147: Micro Control Adores en Control III-Luis Urdaneta

Versiones del 8051

• CPU 80C51.• 8 K x 8 de ROM/EPROM con expansión externa hasta 64 K.• 256 bytes de memoria RAM.• 2 Timers/Contadores estándares de 16 bits.• 1 Timer/Contador de 16 bits asociado a 4 registros de captura y 3

registros de comparación.• 2 canales PWM.• Convertidor A/D de 10 bits con 8 entradas multiplexadas.• Salida para bus serie I2C.• 5 Puertos de E/S de 8 bits más 1 compartido con entradas analógicas.• Frecuencia de operación hasta 30 MHZ (80C552). 16 MHz (87C552).

Características del 80C552Características del 80C552

147

Page 148: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

RST15

P3.0/RxD24

P3.1/TxD25

P3.2/INT026

P3.3/INT127

P3.4/T028

P3.5/T129

P3.6/WR30

P3.7/RD31

XTAL234

XTAL135

VS

S1

36V

DD

2

P0.0/AD057

P0.1/AD156

P0.2/AD255

P0.3/AD354

P0.4/AD453

P0.5/AD552

P0.6/AD651

P0.7/AD750

EA/VPP49

ALE/PROG48

PSEN47

P2.0/A839

P2.1/A940

P2.2/A1041

P2.3/A1142

P2.4/A1243

P2.5/A1344

P2.6/A1445

P2.7/A1546

P1.0/CT0I16

P1.1/CT1I17

P1.2/CT2I18

P1.3/CT3I19

P1.4/T220

P1.6/SCL22

P1.7/SDA23

P1.5/RT221

P4.0/CMSR07

P4.1/CMSR18

P4.2/CMSR29

P4.3/CMSR310

P4.4/CMSR411

P4.5/CMSR512

P4.6/CMT013

P4.7/CMT114

P5.0/ADC01

P5.1/ADC168

P5.2/ADC267

P5.3/ADC366

P5.4/ADC465

P5.5/ADC564

P5.6/ADC663

P5.7/ADC762

STADC3

PWM04

PWM15

EW6

AVref-58

AVref+59

AV

SS

60A

VD

D61

VS

S2

37

148

Page 149: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

149

Page 150: Micro Control Adores en Control III-Luis Urdaneta

Organización de la memoriaOrganización de la memoria

µCTRL 80C552/87C552

Igual que en el 80C51, pero con 8K de memoria interna de código, 256 bytes de RAM y nuevos FSR para el control de funciones adicionales.

150

Page 151: Micro Control Adores en Control III-Luis Urdaneta

El 805552 incluye un CAD de 10 bits con 8 canales de entrada. Estas son las especificaciones del CAD.8 canales de entrada multiplexados (Puerto 5).Resolución de 10 bits.Modo de conversión de una muestra o continuo.Disparo de conversión interno o externo.Genera interrupción al final de la conversión.

El convertidor A/DEl convertidor A/D

µCTRL 80C552/87C552

151

Page 152: Micro Control Adores en Control III-Luis Urdaneta

FSR para control del convertidor FSR para control del convertidor A/DA/D

µCTRL 80C552/87C552

152

Page 153: Micro Control Adores en Control III-Luis Urdaneta

Operación del CADOperación del CADPara iniciar internamente la conversión, se pone en 1 el bit ADCSADCON. ADCS puede ser puesto a uno por el programa solamente o por el hardware o el programa.El modo de arranque sólo por programa es seleccionado con el bit de control ADEXADCON = 0. La conversión se inicia cuando el código pone a 1 el bit ADCS. El inicio por hardware o programa se habilita con ADEXADCON = 1, e cuyo caso la conversión se inicia activando ADCS o aplicando un flanco de subida en el terminal externo STADC. En este último modo, debe ser aplicado STADC un nivel bajo durante un ciclo de máquina seguido por un nivel alto con duración mínima de 1 ciclo.

µCTRL 80C552/87C552

153

Page 154: Micro Control Adores en Control III-Luis Urdaneta

La bandera de ocupado ADCI (ADCON.4) es automáticamente puesta a 0 al inicio de la conversión y llevada a 1 al final de la misma. Una solicitud de interrupción puede ser generada cuando se completa una conversión. ADCI Debe ser llevada a cero por el código.El resultado de 10 bits es entregado en formato justificado a la izquierda en los FSR ADCH y ADCON. El bit ADCH.7 es el bit de mayor orden del resultado y ADCON.6 el menos significativo. Para una conversión de 8 bits sólo es necesario leer a ADCH. Los bits ADCON.2, ADCON.1 y ADCON.0 se usan para la selección de los canales de entrada.

µCTRL 80C552/87C552

154

Page 155: Micro Control Adores en Control III-Luis Urdaneta

El 80515A incluye un CAD de 10 bits con 8 canales de entrada. Estas son las especificaciones del CAD.8 canales de entrada multiplexados (Puerto 6).Resolución de 10 bits.Modo de conversión de una muestra o continuo.Disparo de conversión interno o externo.Genera interrupción al final de la conversión.

Señales con modulación de ancho de pulso (Señales con modulación de ancho de pulso (PWMPWM))

µCTRL 80C552/87C552

155

Page 156: Micro Control Adores en Control III-Luis Urdaneta

Una onda PWM tiene un tiempo base (periodo) y un tiempo durante el cual la salida permanece en nivel alto (ciclo de trabajo). El periodo es la duración a partir del flanco de subida, hasta cuando la salida se repite. La resolución de la salida PWM es la granularidad con la cual puede ser variado el ciclo de trabajo y por supuesto, la frecuencia PWM es el inverso del periodo.

Señales con modulación de ancho de pulso (Señales con modulación de ancho de pulso (PWMPWM))

µCTRL 80C552/87C552

156

Page 157: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

157

Page 158: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

158

Page 159: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

El contador de 8 bits de la unidad PWM es de módulo 255, cuenta de 0 a 254. El valor en el contador es comparado con los contenidos de los registros PWM0 y PWM1. Si el número en uno de los registros es mayor que la cuenta, la salidas PWM que corresponda es puesta a cero. En caso que el contenido de los registros sea menor o igual que el estado del contador, entonces la salida PWM estará en nivel alto. La razón de ancho de pulso estará fijada por el contenido del registro PWMx y está en el rango de 0 a 1 y puede programarse con incrementos de 1/255. Si se carga en los registros PWM: 0 ó FFH, la salida será un nivel constante alto o bajo, respectivamente. Esto se debe a que el contador no alcanza FFH por ser de módulo 255, 159

Page 160: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

160

Page 161: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

161

Page 162: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

Se trata de adquirir voltajes DC desde 8 potenciómetros conectados a las entradas análogas del 87C552. Los valores de las muestras deben ser promediados y escritos en el canal PWM0.El periodo de muestreo debe ser de 0.2 segundos y la frecuencia PWM 15.68 KHz

Programa 13Programa 13

162

Page 163: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

RST15

P3.0/RxD24

P3.1/TxD25

P3.2/INT026

P3.3/INT127

P3.4/T028

P3.5/T129

P3.6/WR30

P3.7/RD31

XTAL234

XTAL135

VS

S1

36V

DD

2

P0.0/AD057

P0.1/AD156

P0.2/AD255

P0.3/AD354

P0.4/AD453

P0.5/AD552

P0.6/AD651

P0.7/AD750

EA/VPP49

ALE/PROG48

PSEN47

P2.0/A839

P2.1/A940

P2.2/A1041

P2.3/A1142

P2.4/A1243

P2.5/A1344

P2.6/A1445

P2.7/A1546

P1.0/CT0I16

P1.1/CT1I17

P1.2/CT2I18

P1.3/CT3I19

P1.4/T220

P1.6/SCL22

P1.7/SDA23

P1.5/RT221

P4.0/CMSR07

P4.1/CMSR18

P4.2/CMSR29

P4.3/CMSR310

P4.4/CMSR411

P4.5/CMSR512

P4.6/CMT013

P4.7/CMT114

P5.0/ADC01

P5.1/ADC168

P5.2/ADC267

P5.3/ADC366

P5.4/ADC465

P5.5/ADC564

P5.6/ADC663

P5.7/ADC762

STADC3

PWM04

PWM15

EW6

AVref-58

AVref+59

AV

SS

60A

VD

D61

VS

S2

37

87C552

X1

CRYSTAL16 MHzC1

33pFC233pF

+5

V

C3

2.2uF

+5V

RESET

+5V

SALIDA PWM

P6 P5 P4 P3 P2 P1 P0P7

+5V

10k X 8

C410uF

R1

5.1k

+88.8

Volts

32

U1:A

4050

163

Page 164: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

164

Page 165: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

165

Page 166: Micro Control Adores en Control III-Luis Urdaneta

µCTRL 80C552/87C552

166

Page 167: Micro Control Adores en Control III-Luis Urdaneta

El simulador PROTEUS no incluye el modelo del 87C552. de modo que para simular la ejecución del código anterior se recurre al paquete ya conocido µVision 2.Las herramientas de Keil Software permiten la simulación del hardware del µCtrl, incluyendo el conversor A/D y la salida PWM.

µCTRL 80C552/87C552

167

Page 168: Micro Control Adores en Control III-Luis Urdaneta

Simulación con Simulación con µVision 2µVision 2

µCTRL 80515A

Page 169: Micro Control Adores en Control III-Luis Urdaneta

Los valores de entrada y los resultados pueden verse en 3 ventanas de periféricos: la del centro corresponde al convertidor A/D y se especifican los voltajes aplicados a los 8 canales, el estado de los bits asociados al ADC y el resultado de la conversión. Para el instante mostrado ADCH= 2BH y el resultado de 10 bits 26EH. Observe que la tensión promedio es de 2.5 V. Los valores de la conversión se muestran a partir de la posición de memoria de datos 55H (canal 0) 56H (canal 1) … El promedio se carga en 61H. En este caso no es necesario convertir los resultados a BCD. La ventana de la derecha muestra el estado de T0 y la de la izquierda el canal PWM0, donde se ha cargado 7FH. En ejecución en tiempo real se puede seguir el timer PWM y verificar que la salida PWM0 está en nivel bajo el mismo tiempo que en alto, para un ciclo de trabajo de 50 %.

µCTRL 80C552/87C552

169

Page 170: Micro Control Adores en Control III-Luis Urdaneta

Con un circuito amplificador de corriente apropiado, las salidas PWM se puede usar para controlar un motor DC. La velocidad de giro de la máquina será proporcional al contenido del registro PWMx. En este caso es preferible aplicar la señal de salida a los terminales del motor sin modificarla previamente .Cuando las salidas se usen como convertidores D/A es necesario usar un filtro para alisar la señal y obtener la tensión requerida. Este puede ser una red RC si la frecuencia PWM es mucho mayor (5 a 10 veces) que la de la señal que sale. La alternativa es usar un filtro activo.Para procesamiento digital de señales se obtienen mejores resultados si la frecuencia PWM es al menos cinco veces mayor que la frecuencia más alta de la onda que se reconstruye.

µCTRL 80C552/87C552

170

Page 171: Micro Control Adores en Control III-Luis Urdaneta

Modos de consumo reducido

Modos de consumo reducidoModos de consumo reducido

Las versiones CMOS del 8051 permiten el funcionamiento del µCtrl en dos modos de consumo bajo:

1. Modo ocioso (idle)

2. Modo de potencia baja (Power down)

Ambos se controlan con los bits IDL y PD del registro FSR PCON. El mecanismo consiste en desconectar la señal de reloj a los subsistemas internos.

171

Page 172: Micro Control Adores en Control III-Luis Urdaneta

Modos de consumo reducido

172

Page 173: Micro Control Adores en Control III-Luis Urdaneta

Si se pone en 1 el bit IDL, el reloj no llega al CPU y se detiene la ejecución de instrucciones. En este caso no se afecta el funcionamiento de los timers, puerto serie y el sistema de interrupciones. Con el bit PD puesto a 1, se detiene el reloj y todo funcionamiento interno es suspendido.

Durante cualquier modo de consumo bajo, se preserva el contenido de la memoria y los puertos y FSRs retienen el valor que tenían antes de ejecutarse la instrucción que activo el modo.

La forma de restaurar el modo normal desde bajo consumo depende del modo activado.

Modos de consumo reducido

173

Page 174: Micro Control Adores en Control III-Luis Urdaneta

El modo idle puede desactivarse por la ejecución de una interrupción válida o por la aplicación de un reset al sistema. En el primer caso se ejecuta la rutina de servicio y la instrucción RETI, al final de la RSI, dirige el programa hacia la instrucción siguiente a aquella que activó el modo idle. Además, el bit IDL es puesto a cero. Para conocer si la interrupción ocurrió durante el modo normal o el de bajo consumo, pueden usarse las banderas GFn, poniéndolas a 1 antes de entrar al modo idle y examinándolas en la rutina de interrupción.

Al salir del modo idle por medio de un reset, se limpia el bit IDL y se retorna a la siguiente instrucción a la que activó el modo.

Para salir del modo Power Down, debe aplicarse un reset. Después de un operación de reinicio se pierde el contenido de los FSR pero se preserva la memoria de datos interna.

Modos de consumo reducido

174

Page 175: Micro Control Adores en Control III-Luis Urdaneta

EL Puerto de Comunicación

Serie

EL Puerto de Comunicación

Serie

Page 176: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

El 8051 incluye un puerto serie que hace posible la comunicación unidireccional (half duplex) o bidireccional (full duples) en modo sincrónico o asincrónico en sistemas punto a punto o punto a multipunto. Estas características simplifican la realización de redes de microcontroladores con dispositivos de la familia MCS-51.

El 8051 dispone de un UART integrado en el encapsulado, el cual re- presenta el puerto para comunicación serie del µCtrl. El proceso de transmisión/recepción se limita a escribir/leer un valor desde el puerto.

176

Page 177: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

Antes de usar el puerto serie es necesario configurar el modo de ope- ración y seleccionar la velocidad en baudios. Una vez realizada estas tareas se escribe al SFR SBUF (99H) un valor para escribir al puerto serie o se lee del mismo SFR para leer el puerto. SBUF representa dos registros con igual dirección.

El 8051 informa cuando finaliza la transmisión del carácter escrito y cuando ha recibido un dato, de modo que pueda ser procesado. El programador no debe preocuparse por la transmisión a nivel de bit.

177

Page 178: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

Configuración del Puerto SerieLo primero que debe hacerse para usar el puerto serie es indicarle al 8051: cuantos bits deseamos transmitir, la velocidad a usar, y como esta debe ser determinada. Para esta tarea se usa el FSR SCON (98H).

SCONSCON

178

Page 179: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

SM0-SM1 Serial Mode BitsSeleccionan 1 entre 4 modos de operación, como indica la tabla abajo. También indican como se calcula la velocidad. En los modos 0 y 2 es fijada por la frecuencia del reloj maestro, mientras que en los modos 1 y 3 es variable, determinada por cuan a menudo se sobrepasa el TIMER 1.

* La velocidad indicada es duplicada si PCON.7 (SMOD) es 1.* La velocidad indicada es duplicada si PCON.7 (SMOD) es 1. 179

Page 180: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

180

Page 181: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

181

Page 182: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

SM2 Serial Mode 2Es una bandera para comunicación multiprocesador. Cuando un dato es recibido el 8051 pone a 1 la bandera de recepción RI, indicando al programa que un byte fue recibido y que debe ser procesado. Cuando SM2 está activado, RI va a 1 sólo si el 9no bit recibido es 1. Esto es útil en ciertas aplicaciones avanzadas de transmisión serie.

REN Receiver EnableEn estado alto permite recibir datos por el puerto serie

182

Page 183: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

Los siguientes cuatro bits (0 a 3) son operacionales. Se usan durante el proceso de transmisión, no para configurar el UART.

TB8 Transmition Bit 8Es usado en los modos 2 y 3, en los cuales se transmiten 9 bits. Los primeros 8 corresponden al dato principal, mientras que el 9no bit es tomado desde TB8.

RB8 Reception Bit 8No se utiliza en el modo 0.Es el bit de parada en el modo 1, si SM1 es 0En los modos 2 y 3 es el noveno bit que se recibe

183

Page 184: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

TI Transmit InterruptCuando un programa escribe un dato al puerto serie, pasará cierta cantidad de tiempo antes que los bits sean cargados al puerto. Si el programa intenta enviar otro byte antes que el anterior sea escrito, la información se perdería. Con TI en 1 el 8051 indica al programa que el puerto serie está listo para enviar el próximo byte.RI Receive InterruptIgual que TI, pero para recepción de datos serie.

184

Page 185: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

185

Page 186: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

Seleccionando la velocidad del Puerto SerieUna vez configurado el modo del puerto serie, como se explicó anteriormente, el programa debe seleccionar la velocidad de baudios. Esto sólo aplica a los modos del 1 y 3. En los modos 0 y 2, la velo- cidad es determinada en base a la frecuencia del oscilador 2.

MODO 0: la velocidad es siempre la frecuencia del oscilador dividida por 12. Esto significa que con un cristal de 11.059 MHz, la velocidad será 921,583 baudios para el modo 0. MODO 2: la velocidad corresponde a la frecuencia del oscilador dividida por 64, así que una f = 11.059Mhz fijará una velocidad de 172,797 baudios.

186

Page 187: Micro Control Adores en Control III-Luis Urdaneta

MODOS 1 y 3: La velocidad es determinada por la frecuencia con la cual el timer 1 se sobrepasa. Hay muchas formas de lograr una fre cuencia de el sobrepaso del timer 1 de modo de modo que correspon- da a una determinada velocidad en baudios, pero el método más co- mún es poner al timer 1 en el modo de 8 bits con autorrecarga (T1 en MODO 2) y cargar un valor en TH1 que permita generar la velocidad deseada.

Puerto serie

187

Page 188: Micro Control Adores en Control III-Luis Urdaneta

La expresión para la velocidad usando T1 es dada por:

Puerto serie

El tiempo de desborde de T1 en modo 2 se calcula con:

188

Page 189: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

189

Page 190: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

Por ejemplo para fijar la velocidad de 19200 baudios con un cristal de 11.059 MHz, se debe:1.Configurar el puerto serie en el modo 1 ó 3.2.Configura temporizador T1 en modo 2 ( 8 bits con autorecarga).3.Cargar TH1 Con FDH (253).4.Poner a 1 PCON.7 (SMOD).

190

Page 191: Micro Control Adores en Control III-Luis Urdaneta

Puerto serieRecepción por el puerto seriePara recibir un dato una vez configurado el puerto serie, se lee el registro FSR SBUF (99H), después que el 8051 haya activado la bandera RI en SCON. Para que el programa espere por la recepción de un carácter para cargarlo en el registro acumulador, puede usarse el código siguiente:

jnb RI,$mov a,SBUF

Por supuesto el µCtrl deberá esperar continuamente por el arribo de un carácter. Cuando el UART recibe el bit de parada activa a RI. Este modo de operación puede ser mejorado usando las interrupciones del puerto serie. Más adelante se presentarán los ejemplos corres-pondientes.

191

Page 192: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

Transmisión por el puerto serieSi se quiere enviar la letra P por el canal serie , se debe ejecutar:

mov SBUF,#’P’Antes de transmitir un carácter debe tenerse la seguridad que el anterior ya ha sido enviado. El 8051 notifica que un carácter ha sido enviado activando la bandera TI en SCON. El siguiente código transmite un carácter y espera que TI se active , antes de continuar.

clr TImov SBUF,a jnb RI,$.

192

Page 193: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

Escribir un programa que presente el siguiente menú en la pantalla.

Programa 14Programa 14

193

Page 194: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

Al pulsar la tecla <ENTER> se podrá realizar una nueva selección. La velocidad de transmisión es de 9600 baudios.

194

Page 195: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

195

Page 196: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

196

Page 197: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

197

Page 198: Micro Control Adores en Control III-Luis Urdaneta

Puerto serie

198