temporizadores y contadores (t/c) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 diagrama...

83
TEMPORIZADORES Y CONTADORES (T/C) (Timers/Counters)

Upload: duongthuy

Post on 11-Feb-2018

222 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES (T/C)(Timers/Counters)

Page 2: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 2

Objetivos

? Conocer y comprender la utilidad de los temporizadores y contadores.

? Comprender su estructura y lógica de funcionamiento.

? Sintetizar programas que hagan uso del sistema de contadores/temporizadores.

? Sintetizar manejadores de interrupción para los contadores/temporizadores.

Page 3: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 3

Resumen de contenidos

1 Introducción.

2 Los Temporizadores/Contadores 0 y 1.2.1 Características básicas.2.2 Hardware involucrado.2.3 Diagrama de bloques.2.4 Registros SFR TMOD y TCON.2.5 Modos de funcionamiento.2.6 Ejemplos.

3 Interrupciones asociadas a los contadores/temporizadores.

4 Ejemplos de aplicación.4.1 Medición del ancho de un pulso positivo.4.2 Medición del período de una señal.4.3 Generación de un pulso.4.4 Generación de una señal PWM.

Page 4: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 4

1 - Introducción

Page 5: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 5

1 - Introducción

? Contabilizar eventos externos– Contar cajas en una cinta transportadora, vehículos en una carretera, ...– Velocidad de un motor (encoder)

Muchas aplicaciones de automatización y regulación necesitan ...

?Medir frecuencias/periodos de señales digitales– Sensores.– Receptores de señales infrarrojas, radio ...

? Realizar retardos de precisión o tareas periódicas– Semáforos, pasos a nivel, ...– Generación de señales PWM, ondas cuadradas, control de potencia

Page 6: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 6

1 - Introducción

Motor Encoder

Pulsos

FrecuenciaTensión

PIDanalógico

Referencia

Puenteen H

ModuladorPWM

PWM

EJEMPLO: Control velocidad motor asignatura Regulación Automática

Page 7: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 7

1 - Introducción

EncoderMotor

Pulsos

Puenteen H

PWM

PIDdigital

Referencia

Microcontrolador

EJEMPLO: Control velocidad motor asignatura Regulación Automática

Page 8: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 8

1 - Introducción

EJEMPLO:

? El encoder genera una onda cuadrada con frecuencia proporcional a la velocidad del motor? Midiendo el ancho del periodo ON (Ton) se podría calcular la velocidad

Toff = “0” Ton = “1”

Encoder

Pulsos

Page 9: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 9

1 - Introducción

Medir ancho de un pulso

“0” “1”

Cuenta=0

Nivel0?

SI

Incrementacuenta

Nivel1?

SI

Encoder

Pulsos µCP1.0

... MOV DPTR,#0es_0: JNB P1.0,es_0es_1: INC DPTR JB P1.0,es_1 ...

... MOV DPTR,#0es_0: JNB P1.0,es_0es_1: INC DPTR JB P1.0,es_1 ...

... MOV DPTR,#0es_0: JNB P1.0,es_0es_1: INC DPTR JB P1.0,es_1 ...

Page 10: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 10

1 - Introducción

Medir ancho de un pulso

“0” “1”

Cuenta=0

Nivel0?

SI

Incrementacuenta

Nivel1?

SI

Encoder

Pulsos µCP1.0

unsigned int contador=0;while (!P1.0) {}while (P1.0) { contador++; }

Page 11: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 11

1 - Introducción

? Problemas al resolverlo por software.– Hay que saber cuánto tardan en ejecutarse las instrucciones.– No se puede trabajar con frecuencias altas.– Si hay interrupciones es imposible lograr precisión.– La CPU desperdicia su tiempo y no puede hacer otras cosas.

? Los microcontroladores integran temporizadores/contadores (T/C).– No necesitan circuitos adicionales (integración).– Sin sobrecargar a la CPU (funcionamiento en paralelo con la CPU).– Programación sencilla y transparente.

? Solución: Emplear contadores y/o temporizadores (T/C).

Page 12: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 12

1 - Introducción

? Los T/C tienen innumerables aplicaciones.– Contabilización de eventos.

• Encoders, contadores de objetos, ...

– Generación de señales digitales. PWM.• Control de potencia, motores de continua, motores AC, motores P. a P., ...• Generación de señales para transmisión/recepción de datos.

– Medición de señales digitales.• Sensores de humedad, de distancia, de luminosidad...

– Temporizaciones.• Retardos, tareas periódicas, planificación de tareas, ...

? Cada generación de microcontroladores añade más capacidad.– Intel 8051 -> 2 T/C: T/C0, T/C1– Intel 8052 -> 3 T/C: T/C0, T/C1, T/C2– Siemens SAB80C517 -> 3 T/C: T/C0, T/C1, T/C2 , unidad comparación/captura– Motorola MPC555 (32 bits) -> 2 Time Processor Unit 3 (TPU3)– Atmel T89C51CC01 -> 3 T/C: T/C0, T/C1, T/C2 , unidad comparación/captura

Page 13: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 13

2 – Los Temporizadores/Contadores 0 y 1T/C 0 y T/C 1 en la familia MCS-51

Page 14: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 14

? Dos temporizadores/contadores “casi” idénticos: T/C0 y T/C1

? Registro de cuenta de hasta 16 bits

– Cuenta tiempo: TEMPORIZADOR

– Cuenta eventos: CONTADOR

? Contabilización ascendente (cuenta = cuenta+1).

? El desborde se usa para detectar el fin de cuenta/temporización.

? Dispone de hardware/software para arrancar y parar la cuenta.

2 - T/C 0 y T/C 1 en la familia MCS-51

Características básicas

Page 15: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 15

? A OTRO SITIO

2.1 Características básicas

1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0

Valor cuenta = 9746h = 38726

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 16: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 16

2.2 Hardware involucrado

TEMPORIZADOR/CONTADOR 0 (T/C 0)– Registros (zona SFR):

• TMOD (modo operación) (dir. 89h por máscara).• TCON (control operación) (dir. 88h bit a bit).• TL0, TH0 (registros cuenta) (dir. 8Ah y 8Ch).

– Terminales (Pines):• T0 (P3.4) (entrada de pulsos).• /INT0 (P3.2) (control de puerta).

TEMPORIZADOR/CONTADOR 1 (T/C 1)– Registros (zona SFR):

• TMOD (modo operación) (dir. 89h por máscara).• TCON (control operación) (dir. 88h bit a bit).• TL1, TH1 (registros cuenta) (dir. 8Bh y 8Dh).

– Terminales (Pines):• T1 (P3.5) (entrada de pulsos).• /INT1 (P3.3) (control de puerta).

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 17: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 17

2.3 Diagrama de bloques

TEMPORIZADOR/CONTADOR 0 (T/C 0)– SFR: TMOD (modo operación), TCON (control operación), TL0, TH0 (registros cuenta).– Pines: T0 (P3.4) (entrada de pulsos), /INT0 (P3.2) (control de puerta).

TEMPORIZADOR/CONTADOR 1 (T/C 1)– SFR: TMOD (modo operación), TCON (control operación), TL1, TH1 (registros cuenta).– Pines: T1 (P3.5) (entrada de pulsos), /INT1 (P3.3) (control de puerta).

Controlde puerta

ContadorGeneración:

- Eventos externos

- Señal reloj interno

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 18: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 18

2.3 Diagrama de bloques

TEMPORIZADOR/CONTADOR 0 (T/C 0)– SFR: TMOD (modo operación), TCON (control operación), TL0, TH0 (registros cuenta).– Pines: T0 (P3.4) (entrada de pulsos), /INT0 (P3.2) (control de puerta).

TEMPORIZADOR/CONTADOR 1 (T/C 1)– SFR: TMOD (modo operación), TCON (control operación), TL1, TH1 (registros cuenta).– Pines: T1 (P3.5) (entrada de pulsos), /INT1 (P3.3) (control de puerta).

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

(P3.4)

pin/INT0

(P3.2)

1

01 = cerrado

Contador

Controlde puerta

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 19: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 19

2.3 Diagrama de bloques

TEMPORIZADOR/CONTADOR 0 (T/C 0)– SFR: TMOD (modo operación), TCON (control operación), TL0, TH0 (registros cuenta).– Pines: T0 (P3.4) (entrada de pulsos), /INT0 (P3.2) (control de puerta).

TEMPORIZADOR/CONTADOR 1 (T/C 1)– SFR: TMOD (modo operación), TCON (control operación), TL1, TH1 (registros cuenta).– Pines: T1 (P3.5) (entrada de pulsos), /INT1 (P3.3) (control de puerta).

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

(P3.4)

pin/INT0

(P3.2)

1

01 = cerrado

Contador

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 20: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 20

2.3 Diagrama de bloques

TEMPORIZADOR/CONTADOR 0 (T/C 0)– SFR: TMOD (modo operación), TCON (control operación), TL0, TH0 (registros cuenta).– Pines: T0 (P3.4) (entrada de pulsos), /INT0 (P3.2) (control de puerta).

TEMPORIZADOR/CONTADOR 1 (T/C 1)– SFR: TMOD (modo operación), TCON (control operación), TL1, TH1 (registros cuenta).– Pines: T1 (P3.5) (entrada de pulsos), /INT1 (P3.3) (control de puerta).

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

(P3.4)

pin/INT0

(P3.2)

1

01 = cerrado

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 21: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 21

2.3 Diagrama de bloques

TEMPORIZADOR/CONTADOR 0 (T/C 0)– SFR: TMOD (modo operación), TCON (control operación), TL0, TH0 (registros cuenta).– Pines: T0 (P3.4) (entrada de pulsos), /INT0 (P3.2) (control de puerta).

TEMPORIZADOR/CONTADOR 1 (T/C 1)– SFR: TMOD (modo operación), TCON (control operación), TL1, TH1 (registros cuenta).– Pines: T1 (P3.5) (entrada de pulsos), /INT1 (P3.3) (control de puerta).

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

(P3.4)

pin/INT0

(P3.2)

1

01 = cerrado

Interrupción

(si está habilitada)

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 22: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 22

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

2 - T/C 0 y T/C 1 en la familia MCS-51

2.3 Diagrama de bloques

T/C 1

T/C 0

Page 23: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 23

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

T/C 0T/C 1

2.4 Registros SFR TMOD y TCON

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 24: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 24

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

2.4 Registros SFR TMOD y TCON

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 25: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 25

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin-INT0

1

01 = cerrado

InterrupciónBit C/TSelección modo

contador o temporizador. 0 -> temporizador

1 -> contador

2.4 Registros SFR TMOD y TCON

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 26: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 26

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

? Operación como temporizador– Cuentan ciclos de máquina (1 ciclo máquina (C.M.) = 12 ciclos de reloj).

? Operación como contador– Detección de flancos de bajada en el pin T0 (P3.4).– Muestreo cada CM -> Flanco de bajada = detectar “1” y después “0”.– Máxima frecuencia detectable será 1/24 frecuencia reloj.

“0”“1”

C.M.

“0”“0”

C.M.

01

2.4 Registros SFR TMOD y TCON

pinT0

Pulso muy estrecho:¡se pierde!

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 27: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 27

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Bit TR0Activación T/C 0.

0 -> desactivado1 -> activado

2.4 Registros SFR TMOD y TCON

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 28: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 28

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Bit GATEControl de puerta.

0 -> interno (software) 1 -> externo (hardware)

2.4 Registros SFR TMOD y TCON

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 29: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 29

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Bit GATEControl de puerta.

0 -> interno (software) 1 -> externo (hardware)

D1 0 D

2.4 Registros SFR TMOD y TCON

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 30: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 30

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Bit GATEControl de puerta.

0 -> interno (software) 1 -> externo (hardware)

D0 1 1

2.4 Registros SFR TMOD y TCON

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 31: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 31

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Modo Modo 0: Contador 13 bits. Modo 1: Contador 16 bits. Modo 2: Cont. 8 bit autorrecarga Modo 3: Desdoble (T/C0)

2.4 Registros SFR TMOD y TCON

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 32: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 32

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

ContadorRegistros SFR TH0 y TL0.

Ascendente.Y cuando desborda ...

111...100111...101111...110111...111000...000000...001000...010 1

Interrupción2.4 Registros SFR TMOD y TCON

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 33: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 33

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Bit TF0Timer flag 0.

1 -> desbordePERO NO SE DETIENE

EL CONTADOR

2.4 Registros SFR TMOD y TCON

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 34: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 34

Ejemplo:

Se desea temporizar un intervalo de 125 ?s. ¿Cuál es el valor acargar como cuenta inicial?

Para un valor de fOSC=12MHz:

Duración de 1 Ciclo Máquina:

1

12MHz*12=1? s

Si se utilizan 8 bits: 256-125=131=83H

Si se utilizan 16 bits: 65536-125=65411=FF83H

Duración=125?s=1?s*125Duración=125?s=1?s*Cuenta

THx=? TLx=131

THx=255 TLx=131

THx=? TLx=131

THx=255 TLx=131

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 35: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 35

Ejemplo:

Se desea temporizar un intervalo de 2s. ¿Cuál es el valor acargar como cuenta inicial? (fOSC=12MHz)

Duración=2000000? s=1? s*Cuenta

Duración=2000000? s=1? s*2000000 No cabe en 16 bits

No cabe en 16 bits

Solución: Contabilizar desbordes del contador (Con 16 bits cada

desborde equivale a 65536 ? s).

Desbordes = 30 Resto_hasta_completar = 33920

Cuenta = 30*65536+33920 = 2000000

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 36: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 36

M1 M0 Modo

0 0 0Temporizador/contador de 8 bits con THx. TLx actúa como preescala de 5 bits (los demenor peso) (13 bits en total). (los 3 bits de mayor peso de TLx son de valorindeterminado)

0 1 1 Temporizador/contador de 16 bits, con THx y TLx en cascada

1 0 2 Temporizador/contador de 8 bits con autorrecarga. THx contiene el valor de recargapara TLx tras cada desbordamiento

1 1 3Para el temporizador 0, TL0 y TH0 son dos temporizadores/contadores de 8 bits,controlados con los bits de control de los temporizadores 0 y 1 respectivamente.Temporizador 1 inactivo.

2.5 Modos de funcionamiento

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 37: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 37

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

M1 M0 Modo

0 0 0 Temporizador/contador de 8 bits con THx. TLx actúa como preescala de 5 bits (13 bitsen total).

0 1 1 Temporizador/contador de 16 bits, con THx y TLx en cascada

1 0 2 Temporizador/contador de 8 bits con autorrecarga. THx contiene el valor de recargapara TLx tras cada desbordamiento

1 1 3Para el temporizador 0, TL0 y TH0 son dos temporizadores/contadores de 8 bits,controlados con los bits de control de los temporizadores 0 y 1 respectivamente.Temporizador 1 inactivo.

TL05 bits

de menor peso

TH08 bits

MODO 0: Contador de 13 bits

LSB MSB

13 bits

2.5 Modos de funcionamiento

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 38: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 38

LSB MSB

16 bits

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

M1 M0 Modo

0 0 0 Temporizador/contador de 8 bits con THx. TLx actúa como preescala de 5 bits (13 bitsen total).

0 1 1 Temporizador/contador de 16 bits, con THx y TLx en cascada

1 0 2 Temporizador/contador de 8 bits con autorrecarga. THx contiene el valor de recargapara TLx tras cada desbordamiento

1 1 3Para el temporizador 0, TL0 y TH0 son dos temporizadores/contadores de 8 bits,controlados con los bits de control de los temporizadores 0 y 1 respectivamente.Temporizador 1 inactivo.

TL0 8 bits

TH08 bits

MODO 1: Contador de 16 bits

2.5 Modos de funcionamiento

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 39: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 39

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

M1 M0 Modo

0 0 0 Temporizador/contador de 8 bits con THx. TLx actúa como preescala de 5 bits (13 bitsen total).

0 1 1 Temporizador/contador de 16 bits, con THx y TLx en cascada

1 0 2 Temporizador/contador de 8 bits con autorrecarga. THx contiene el valor de recargapara TLx tras cada desbordamiento

1 1 3Para el temporizador 0, TL0 y TH0 son dos temporizadores/contadores de 8 bits,controlados con los bits de control de los temporizadores 0 y 1 respectivamente.Temporizador 1 inactivo.

TL0 8 bits

TH08 bits

MODO 2: Contador de 8 bits con autorrecarga

Recarga

2.5 Modos de funcionamiento

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 40: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 40

M1 M0 Modo

0 0 0 Temporizador/contador de 8 bits con THx. TLx actúa como preescala de 5 bits (13 bitsen total).

0 1 1 Temporizador/contador de 16 bits, con THx y TLx en cascada

1 0 2 Temporizador/contador de 8 bits con autorrecarga. THx contiene el valor de recargapara TLx tras cada desbordamiento

1 1 3Para el temporizador 0, TL0 y TH0 son dos temporizadores/contadores de 8 bits,controlados con los bits de control de los temporizadores 0 y 1 respectivamente.Temporizador 1 inactivo.

MODO 3: Desdoble T/C 0

2.5 Modos de funcionamiento

OSC 1/12

TL0??????

TH0??????

TF0

pin T0

Intr

TR1

TF1 Intr

GATE

pin INT0

TR0

TL0 8 bits

TH08 bits

C/T1

0

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 41: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 41

Se desea contabilizar los vehículos que circulan por una carretera.NO excederán de 30.000.

? PASO 1: ¿Contador o temporizador?– Contador.

? PASO 2: ¿Control puerta externo o interno? (GATE)– Interno.

? PASO 3: Modo 0 (13 bits), Modo 1 (16 bits) o Modo 2 (8 bits rec.)– Modo 1. En principio podemos contar hasta 65535.

? PASO 4: ¿Valor inicial del contador?– 0.

2.6 Ejemplo de un contador

µCT0 0

Cuenta

12

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 42: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 42

– Contador.– Interno– Modo 1. En principio podemos contar hasta 65535.– 0.

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

10 10

TH0=0x00; TL0=0x00;

2.6 Ejemplo de un contadorSe desea contabilizar los vehículos que circulan por una carretera.NO excederán de 30.000.

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 43: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 43

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

10 10

TH0=0x00; TL0=0x00;

2.6 Ejemplo de un contador

Se desea contabilizar los vehículos que circulan por una carretera. NO excederán de 30.000.

sfr TMOD=0x89,TCON=0x88,TH0=0x8C,TL0=0x8A; sbit TF0=TCON^5, TR0=TCON^4; void main(void) { int vehiculos;/* Para contabilizar vehículos */ TMOD = 0x05; /* 0101(b => T/C 0, control sw, contador, modo 1 */ TH0=0x00; TL0=0x00; /* sigue ... */ }

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 44: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 44

sfr TMOD=0x89,TCON=0x88,TH0=0x8C,TL0=0x8A; sbit TF0=TCON^5, TR0=TCON^4; void main(void) { int vehiculos; TMOD = 0x05; /* T/C 0, modo 1, soft, contador */ TH0=0x00; TL0=0x00; TR0=1; /* arrancar timer */ while(1) { /* hacer otras cosas */ TR0=0; /* evitar condiciones de carrera */ vehiculos = TH0*256 + TL0; TR0=1; } }

vehiculos = TH0;vehiculos = vehiculos << 8;vehiculos = vehiculos | TL0;

2.6 Ejemplo de un contadorSe desea contabilizar los vehículos que circulan por una carretera.NO excederán de 30.000.

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 45: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 45

sfr TMOD=0x89,TCON=0x88,TH0=0x8C,TL0=0x8A; sbit TF0=TCON^5, TR0=TCON^4; void main(void) { unsigned long vehiculos, desbordes=0; TMOD = 0x05; /* timer 0, modo 1, soft. */ TH0=0x00; TL0=0x00; TF0=0; TR0=1; /* arrancar timer */ while(1) { /* hacer otras cosas */ if (TF0==1) { TF0=0; desbordes++; } TR0=0; /* evitar condiciones de carrera */ vehiculos = desbordes*65536 + TH0*256 + TL0; TR0=1;

}}

2.6 Ejemplo de un contador (ampliación)Se desea contabilizar los vehículos que circulan por una carretera.Mejora, 4.000 millones de vehículos.

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 46: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 46

2.6 Ejemplo de un temporizadorSe desea realizar un retardo de 10 ms. Reloj del ?C de 12 Mhz

SMáquinaCiclo ?1reloj de períodos 12

Mhz 121 ??

desbordehastacuentasSmS 000.10000.1010 ?? ?

? PASO 1: ¿Contador o temporizador?– Temporizador.

? PASO 2: ¿Control puerta externo o interno? (GATE)– Interno.

hFDcuenta 08536.55000.10536.65216 ?????

? PASO 3: Modo 0 (13 bits), Modo 1 (16 bits) o Modo 2 (8 bits rec.)– Modo 1.

? PASO 4: ¿Valor inicial del contador?

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 47: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 47

2.6 Ejemplo de un temporizadorSe desea realizar un retardo de 10 ms. Reloj del ?C de 12 Mhz

TH0=0xD8; TL0=0xF0;

– Temporizador.– Interno– Modo 1.– 55.536 (D8F0h)

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

T/C 1 T/C 0

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

00 10

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 48: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 48

2.6 Ejemplo de un temporizadorSe desea realizar un retardo de 10 ms. Reloj del ?C de 12 Mhz

sfr TMOD=0x89,TCON=0x88,TH0=0x8C,TL0=0x8A; sbit TF0=TCON^5, TR0=TCON4; void main(void) { /* ... */ TMOD |= 0x01; /* timer 0, modo 1, soft. */ TMOD &= 0xF1; TH0=0xD8; TL0=0xF0; TF0=0; TR0=1; /* arrancar timer */ while(!TF0); /* esperar desborde */ /* ... */ }

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 49: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 49

? AYUDA:

– Prototipo función: void delay_ms(unsigned int ms);– Calcular ciclos de máquina a esperar y usar un timer para contabilizarlos– Emplear mecanismo de desborde para realizar temporizaciones grandes

ActividadSe desea disponer de una función en lenguaje C para realizarretardos de precisión del orden de milisegundos. Reloj del ? C de 12Mhz.

Solución

2 - T/C 0 y T/C 1 en la familia MCS-51

Page 50: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 50

3 – Interrupciones asociadas a loscontadores/temporizadores

Page 51: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 51

? Permite sacar mayor partido al sistema.? Liberan a la CPU de tener que encuestar flag de desborde.

Contador

OSC 1/12

C/T

GATE

TR0

TF0pinT0

pin/INT0

1

0 1 = cerrado

Interrupción

Descripción Nombre Flag hab. (IEN0)

Flag act. (TCON) Vector Borrado Núm

Interrup

Cont./Temp. 0 T/C0 ET0 TF0 000Bh Hw 1 Cont./Temp.1 T/C1 ET1 TF1 001Bh Hw 3

Bit ET0Habilitación deinterrupción.

3 – Interrupciones asociadas a los T/C

Page 52: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 52

Descripción Nombre Flag hab. (IEN0)

Flag act. (TCON) Vector Borrado Núm

Interrup

Cont./Temp. 0 T/C0 ET0 TF0 000Bh Hw 1 Cont./Temp.1 T/C1 ET1 TF1 001Bh Hw 3

3 – Interrupciones asociadas a los T/C

? Permite sacar el máximo partido? Liberan a la CPU de tener que

encuestar flag de desborde

Contador

OSC 1/12

C/T

GATE

TR0

TF0pinT0

pin/INT0

1

0 1 = cerrado

Interrupción

Bit TF0Activación petición

interrupción.(a 1)

Borrado automáticoal vectorizarse.

(puesta a 0)

Page 53: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 53

Descripción Nombre Flag hab. (IEN0)

Flag act. (TCON) Vector Borrado Núm

Interrup

Cont./Temp. 0 T/C0 ET0 TF0 000Bh Hw 1 Cont./Temp.1 T/C1 ET1 TF1 001Bh Hw 3

3 – Interrupciones asociadas a los T/C

? Permite sacar el máximo partido? Liberan a la CPU de tener que encuestar flag de desborde

Contador

OSC 1/12

C/T

GATE

TR0

TF0pinT0

pin-INT0

1

0 1 = cerrado

Interrupción

Dirección derutina interrupción.

void servicio (void)interrupt 1{ /* codigo */}

Page 54: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 54

3 – Interrupciones asociadas a los T/C

? Permite sacar el máximo partido? Liberan a la CPU de tener que encuestar flag de desborde

Contador

OSC 1/12

C/T

GATE

TR0

TF0pinT0

pin/INT0

1

0 1 = cerrado

Interrupción

Se puede combinarel T/C y la

interrupción externa.

Descripción Nombre Flag hab. (IEN0)

Flag act. (TCON) Vector Borrado Núm

Interrup

Cont./Temp. 0 T/C0 ET0 TF0 000Bh Hw 1 Cont./Temp.1 T/C1 ET1 TF1 001Bh Hw 3

Page 55: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 55

3 – Interrupciones asociadas a los T/C

– Se trata de un ejemplo típico de tareaperiódica.

– Interesa tener desocupada la CPU paraotros menesteres.

– Se propone que el T/C genere unainterrupción transcurrido cada semiperiodoy que la rutina de servicio modifique el valordel pin.

Ejemplo generación onda cuadrada

Generar onda cuadrada de 10 Khz por el pin P1.0. Reloj del ?C de 12 Mhz

10 Khz

P1.0

Page 56: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 56

Ejemplo generación onda cuadrada

SMáquinaCiclo ?11 ?

)(501001,010

1CMSoSemiperiodSmS

KhzT ?? ?????

? PASO 1: ¿Contador o temporizador?– Temporizador

? PASO 2: ¿Control puerta externo o interno? (GATE)– Interno

? PASO 3: Modo 0 (13 bits), Modo 1 (16 bits) o Modo 2 (8 bits rec.)– Modo 2. 8 bits con autorrecarga

? Hacer números

Generar onda cuadrada de 10 Khz por el pin P1.0. Reloj del ?C de 12 Mhz

3 – Interrupciones asociadas a los T/C

Page 57: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 57

Ejemplo generación onda cuadrada

2065025628 ???? cuenta

? PASO 1: ¿Contador o temporizador?– Temporizador

? PASO 2: ¿Control puerta externo o interno? (GATE)– Interno

? PASO 3: Modo 0 (13 bits), Modo 1 (16 bits) o Modo 2 (8 bits rec.)– Modo 2. 8 bits con autorrecarga

? PASO 4: ¿Valor inicial del contador?

Generar onda cuadrada de 10 Khz por el pin P1.0. Reloj del ?C de 12 Mhz

3 – Interrupciones asociadas a los T/C

Page 58: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 58

Ejemplo generación onda cuadrada

– Temporizador– Interno– Modo 2– 206

b7 TMOD, dir. 89h, por máscara b0GATE C / T M1 M0 GATE C / T M1 M0

TIMER 1 TIMER 0

b7 TCON, dir. 88h, bit a bit b0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

00 01

TH0=TL0=206;

Generar onda cuadrada de 10 Khz por el pin P1.0. Reloj del ?C de 12 Mhz

3 – Interrupciones asociadas a los T/C

Page 59: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 59

Ejemplo generación onda cuadrada

sfr TMOD=0x89,TCON=0x88,TH0=0x8C,TL0=0x8A; sfr IEN0=0xA8, P1=0x90; sbit ET0=IEN0^1, EAL=IEN0^7, TR0=TCON^4; void main(void) { EAL = 0; TMOD = 0x02; TH0 = 206; TL0 = 206; ET0 = 1; /* habilitar int. timer 0 */ EAL = 1; /* habilitar interrupciones */ TR0 = 1; /* a correr */ while (1) { /* otras cosas */ } } void T0 (void)interrupt 1 { P1.0 = ~P1.0; }

Generar onda cuadrada de 10 Khz por el pin P1.0. Reloj del ?C de 12 Mhz

3 – Interrupciones asociadas a los T/C

Page 60: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 60

Actividad

Generar onda cuadrada de 50 Hz por el pin P1.0. Reloj del ? C de 12 Mhz.

? AYUDA:– DOS CAMINOS– a) Las recargas del temporizador/contador se pueden hacer por software.– b) Cada N interrupciones realizar la acción.

Solución

3 – Interrupciones asociadas a los T/C

Page 61: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 61

En la actividad anterior, conseguir que el tiempo que la señal está anivel alto y a nivel bajo sean distintos.

Actividad

Solución

3 - T/C 0 y T/C 1 en el 805x7

Page 62: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 62

4 - Ejemplos de aplicación

Page 63: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 63

– Para introducir el pulso se emplea la entrada de interrupción externa /INT0.Se emplea el T/C 0 como temporizador en modo control hardware.

– Si se desea medir el nivel bajo de esta manera es necesario emplear uninversor externo.

?

4.1 Medir el ancho de un pulso positivo

4 - Ejemplos de aplicación

? C

INT0?

Page 64: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 64

?

4.1 Medir el ancho de un pulso positivo

4 - Ejemplos de aplicación

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

1 0

Control externo,

bit GATE = 1

00

¡Nocuenta!

Page 65: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 65

4.1 Medir el ancho de un pulso positivo

4 - Ejemplos de aplicación

Contador

OSC 1/12

C/T

GATE

TR0

TF0

pinT0

pin/INT0

1

01 = cerrado

Interrupción

1 0

1

11?

¡Sicuenta!

1

Page 66: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 66

?

TR0 = 1 Termina de contar

4.1 Medir el ancho de un pulso positivo

4 - Ejemplos de aplicación

Control por HW:Comienza a contar

Aprovechar flancode bajada para generar

una interrupción externay leer valor cuenta

Page 67: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 67

sfr TMOD=0x89,TCON=0x88,TH0=0x8C,TL0=0x8A, IEN0=0xA8; sbit TR0=TCON^4, IT0=TCON^0, EX0=IEN0^0, EAL=IEN0^7; unsigned int ancho_pulso; void main(void) { EAL = 0; /* deshabilitar interrupciones */ TMOD = 0x09; /* control hard., timer, modo 1 */ TH0 = 0x00; TL0 = 0x00; IT0 = 1; /* disparo interrupción externa por flanco bajada*/ EX0 = 1; /* habilitar int. externa 0 */ EAL = 1; /* habilitar interrupciones */ TR0 = 1; /* a correr */ while (1) { /* otras cosas */ } } void Externa0_INT0 (void) interrupt 0 { TR0 = 0; /* para timer */ ancho_periodo = TH0*256+TL0; /* recoger medida */ TH0 = TL0 = 0; /*reiniciar cuenta timer */ TR0 = 1; }

4.1 Medir el ancho de un pulso positivo

4 - Ejemplos de aplicación

Page 68: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 68

– La señal se introduce al microcontrolador mediante la entrada de interrupciónexterna /INT0.

?

4.2 Medir el periodo de una señal

4 - Ejemplos de aplicación

? C

INT0

Page 69: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 69

– El método puede suponer algo de perdida de precisión debido a las variaciones delatencia de la interrupción.

?

Flanco bajadagenerar petición

Interrupción externa:

Comenzar cuenta

4.2 Medir el periodo de una señal

4 - Ejemplos de aplicación

Control por software. Bit GATE =0

Flanco bajadagenerar petición

Interrupción externa:

Parar cuentay procesar cuenta

Flanco bajadagenerar petición

Interrupción externa:

Comenzar cuenta

Page 70: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 70

sfr TMOD=0x89,TCON=0x88,TH0=0x8C,TL0=0x8A, IEN0=0xA8; sbit TR0=TCON^4, IT0=TCON^0, EX0=IEN0^0, EAL=IEN0^7; unsigned int periodo; void main(void) { EAL = 0; /* deshabilitar interrupciones */ TMOD = 0x01; /* control soft., timer, modo 1 */ TH0 = 0x00; TL0 = 0x00; IT0 = 1; /* disparo int. externa. 0 por flanco bajada */ EX0 = 1; /* habilitar int. externa 0 *7 EAL = 1; /* habilitar interrupciones */ TR0 = 1; /* a correr */ while (1) { /* otras cosas */ } } void Externa0_INT0 (void) interrupt 0 { /* arranca y para el timer en */ /* interrupciones alternadas */ TR0 = ~TR0; /* complementar. if (TR0==1) return; /* salir si timer corriendo */ periodo = TH0*256+TL0; /* recoger medida */ TH0 = 0; TL0 = 0; /*reiniciar cuenta timer */ }

4.2 Medir el periodo de una señal

4 - Ejemplos de aplicación

Page 71: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 71

– Se utiliza un pin de un puerto (P2.0) para generar el pulso– La precisión del método depende de la latencia de la interrupción del

temporizador.

temporizador

4.3 Generar un pulso

4 - Ejemplos de aplicación

? C

P2.0

Page 72: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 72

– Control por software. Bit GATE = 0– P2.0 = 1– Habilitar interrupción del T/C 0– Arrancar el temporizador inicializando la cuenta en función del ancho del pulso– Cuando rebose, se generará una interrupción procedente del T/C cuyo

manejador pondrá P2.0 = 0 dado que se ha alcanzado la duración del pulso

4.3 Generar un pulso

4 - Ejemplos de aplicación

temporizador

P2.0 = 1Inicializar

temporizador ycomenzar cuenta

El manejador de la interrupcióndel T/C 0, dará por finalizado

el pulso P2.0 = 0

Page 73: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 73

sfr TMOD=0x89,TCON=0x88,TH0=0x8C,TL0=0x8A, IEN0=0xA8 P2=0xA0;

sbit TR0=TCON^4, ET0=IEN0^1, EAL=IEN07;#define HITime ???

#define LoTime ???void main (void){

EAL = 0; /* deshabilitar interrupciones */ ET0 = 1; /* habilitar int. del T/C 0 *7

TCON = 0x00; /* Asegurarse que el temporizador está parado. */ TMOD =0x01; /* Temporizador en modo 1, soft. */

TH0 = HiTime; /* Cargar T/C 0 con la cuenta para la duración del pulso. */ TL0 = LoTime;

TR0 = 1; /* Arrancar temporizador. */ P2.0 = 1; /* Comenienzo pulso. */

EAL = 1; /* habilitar interrupciones */ }void Timer0_int (void) interrupt 1

{ TR0 = 0; /* Parar temporizador */

P2.0 = 0; /* Final del pulso */ }

4.3 Generar un pulso

4 - Ejemplos de aplicación

Page 74: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 74

Inicio: MOV TCON,#$00 ;Asegurarse que el temporizador está parado.MOV TMOD,#$01 ;Temporizador en modo 1.

MOV TH0,#HiTime ;Cargar T/C 0 con la cuenta para la; duración del pulso.

MOV TL0,#LoTimeSETB TR0 ;Arrancar temporizador.

SETB P2.0 ;Comenienzo pulso.

;Manejador interrupción del T/C 0.TC0INT: CLR P2.0 ;Final del pulso.

CLR TR0 ;Parar temporizador.RETI

4.3 Generar un pulso

4 - Ejemplos de aplicación

Page 75: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 75

– La precisión de este método depende de la latencia de las interrupcionesdel temporizador.

– Para generar señales de mayor frecuencia usar modo 2.

Arrancar tempo.Valor “1”

Arrancar tempo.Valor “0”

Repetir

4.4 Generar una señal PWM

4 - Ejemplos de aplicación

Page 76: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 76

T0INT: CLR TR0 ;Parar el temporizador.

CPL P2.0 ;Complementar valor pin.

JB P2.0,SetPWMHigh ;Está a valor “1” ó “0”?

MOV TH0,PWMLowH ;Poner PWM a “0”.

MOV TL0,PWMLowL

SJMP T0EX

SetPWMHigh: MOV TH0,PWMHighH ;Poner PWM a “1”.

MOV TL0,PWMHighL

T0EX: SETB TR0 ;Reinicializar temporizador.

RETI

4.4 Generar una señal PWM

4 - Ejemplos de aplicación

Page 77: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 77

ReadTimer:MOV ValH,TH0 ;Leer parte alta y baja.MOV ValL,TL0MOV A,TH0 ;Leer nuevamente parte alta.CJNE A,ValH,ChkHigh ;Ha cambiado?SJMP RTEX ;Si no, la primera lectura es válida.

ChkHigh: JB ValL.7,RTEX ;Otro caso, verificar parte baja para ver ; si ha cambiado despúes de leer la parte

; alta original.MOV ValH,A ;Si ha cambiado, usar la segunda lectura

; de la parte altaRTEX: RET

4.5 Leer un timer “al vuelo”

4 - Ejemplos de aplicación

Page 78: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 78

Solución actividadGenerar onda cuadrada de 50 Hz por el pin P1.0. Reloj de 12 Mhz.– 50 Hz = 20000 µS periodo = 10000 µS semiperiodo– Usar temporizador y modo 1 (16 bits). Recargar por programa el timer en interrupción.– Recarga: 10000 µS -> 65536 -10000 = 55536 = D8F0h

sfr TMOD=0x89,TCON=0x88,TH0=0x8C,TL0=0x8A; sfr IEN0=0xA8, P1=0x90; sbit ET0=IEN0^1, EAL=IEN0^7, TR0=TCON^4; void main(void) { TMOD = 0x01; TH0 = 0xD8; TL0 = 0xF0; EAL = 0; ET0 = 1; EAL = 1; TR0 = 1; /* a correr */ while (1) { /* otras cosas */ } } void T0 (void)interrupt 1 { P1.0 = ~P1.0; TR0 = 0; TH0 = 0xD8; TL0 = 0xF0; TR0 = 1; }

Page 79: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 79

void delay_ms(unsigned int mseg){ long l; unsigned int desbordes, resto;

l = 1000L * mseg; /* ciclos máquina en us */ desbordes = (l / 65536) + 1; /*incluye desborde del resto*/ resto = 65536 - (l % 65536); TR0=TF0=0; /*garantizar condiciones iniciales adecuadas*/ TMOD |= 0x01; TMOD &= 0xF1; /* modo 1, temporizador, control soft. */ TL0 = resto & 0x00FF; TH0 = resto >> 8; TR0 = 1; /* a correr */

while(desbordes) if (TF0) { TF0 = 0; desbordes--; } TR0 = TF0 = 0;}

Solución actividadSe desea disponer de una función C para realizar retardos deprecisión del orden de milisegundos. Reloj del ?C de 12 Mhz.

Page 80: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 80

sfr TMOD=0x89,TCON=0x88,TH0=0x8C,TL0=0x8A, IEN0=0xA8; sbit TR0=TCON^4, IT0=TCON^0, ET0=IEN0^1, EAL=IEN0^7; #define T_ON 1000 #define T_OFF 2000 #define P_OUT P1.0 unsigned char t_on_h, t_on_l, t_off_h, t_off_l; void main(void) { t_on_h = T_ON / 256; t_on_l = T_ON % 256; t_off_h = T_OFF / 256; t_off_l = T_OFF % 256; TMOD = 0x01; TH0 = t_on_h; TL0 = t_on_l; P_OUT = 1; ET0 = 1; EAL = 1; TR0 = 1; /* a correr */ while (1) { /* otras cosas */ } } void T0 (void) interrupt 1 { TR0=0; P_OUT++; /* complementar salida */ if (P_OUT) { TH0 = t_on_h; TL0 = t_on_l; } else { TH0 = t_off_h; TL0 = t_off_l; } TR0=1; }

Conseguir que el tiempo a nivel alto y a nivel bajo sean distintos.Actividad

Page 81: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 81

? EJERCICIO:– Realizar un programa en lenguaje C, que configure el TEMPORIZADOR-0

en modo 2 (Temporizador/Contador de 8 bits con autorrecarga), de formaque genere una interrupción con cada overflow. El manejador deinterrupción tendrá como única misión invertir el valor de P3.5

SOLUCIÓN:

7 6 5 4 3 2 1 0

EAL WDT ET2 ES0 ET1 EX1 ET0 EX0

GATE C/T M1 M0 GATE C/T M1 M0

TIMER-0

IEN0

TMOD

7 6 5 4 3 2 1 0

0 0 0 0 0 0 1 0 = $02

1 0 0 0 0 0 1 0 = $82

Page 82: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 82

sfr TMOD=0x89,TCON=0x88,TH0=0x8C,TL0=0x8A, IEN0=0xA8, P3=0xB0;sbit TR0=TCON^4;

void T0_int (void) interrupt 1; /* Rutina Timer-0 */

void main (void){

/* Inicialización de registros */IEN0 = 0x82; /* Habilitación Interrupciones */TMOD = 0x02; /* Configuración Timer-0 */TH0 = 0x05; /* Valor inicial en TH0 */TL0 = 0x05; /* Valor inicial en TL0 */TR0 = 1; /* Arranque del Timer-0 */while (1) {}

}

void T0_int (void) interrupt 1{ P3.5 = ~P3.5; /* Invertir salida */}

Page 83: TEMPORIZADORES Y CONTADORES (T/C) …bitschips.com/infoind/tema_temporizadores.pdf · 2.3 Diagrama de bloques. ... digital Referencia Microcontrolador EJEMPLO: ... -Señal reloj interno

TEMPORIZADORES Y CONTADORES 83

Bibliografía

[Domíng2001] C. Domínguez, J.M. Martínez, A. Perles, J. Albaladejo, H.Hassan. “Curso de Informática Industrial: Aplicación con elmicrocontrolador”. Ed. Universidad Politécnica de Valencia,2001.

[Campelo1998] J. C. Campelo, A. Perles, F. Rodríguez. “MicrocontroladoresIntel MCS-51. Arquitectura y programación”. Ed. UniversidadPolitécnica de Valencia, 1.998.

[Martínez2001] J.M. Martínez, C. Domínguez, A. Perles, H. Hassan, J.Albaladejo. “Problemas de microcontroladores de la familiaMCS-51”. Ed. Universidad Politécnica de Valencia, 2001.

[Intel1994] MCS-51 Microcontroller Family User´s Manual.