Temporizador/Contador no Intel 8051

Instruções do Intel 8051 Mapa de Memória no Intel 8051 8051 Arquitetura Intel 8051

Este artigo é continuação da série Intel 8051 e tem como principal objetivo caracterizar um módulo temporizador/contador no Intel 8051. 

Módulo Contador/Temporizador no Intel 8051

O 8051 possui dois módulos temporizadores/contadores (Timer 0 e Timer 1) de 16 bits. Quando na função temporizador, o módulo utiliza um sinal de referência 12 vezes menor que a frequência do oscilador, isto é, na frequência do ciclo de máquina. Já na função contador, esse módulo utiliza um pino de entrada para contar pulsos.

Os pinos de entrada desses dois módulos são: P3.4 para o Timer0 e P3.5 para o Timer1. A configuração desses módulos é realizada pelos registradores TCON e TMOD. Além disso, esses módulos podem gerar interrupções quando a condição de overflow for detectada, isto é, quando o valor máximo de contagem for obtido.

Registradores

Os dois temporizadores/contadores são controlados pelos registradores Timer Control (TCON) e Timer Mode (TMOD). O registrador TCON, ilustrado na Figura 1, pode ser endereçado bit a bit e está localizado no endereço 88H.

Registrador TCON
Figura 1: Registrador TCON [1].
  • TF1: Timer 1 Overflow Flag – Seu valor é determinado pelo hardware.

–0: Quando o processador inicia a rotina de interrupção localizada no endereço 001BH.

–1: Quando ocorre overflow do timer 1.

  • TR1: Timer 1 Run Control – Seu valor é determinado pelo programa.

–0: Desativa o timer 1.

–1: Ativa o timer 1.

  • TF0: Equivalente ao timer 1 (para rotina localizada no endereço 000BH).
  • TR0: Equivalente ao timer 1.

Já o registrador TMOD, ilustrado na Figura 2, está localizado no endereço 89H e não pode ser endereçado bit a bit. Os quatro bits menos significativos são usado para configuração do Timer 0 e os quatro mais significativos para o Timer 1.

Registrador TMOD
Figura 2: Registrador TMOD [1].
  • Gate:

–0: O módulo será habilitado se TR1 (TCON) é 1.

–1: O módulo Será habilitado se TR1 (TCON) é 1 e INT1 = 1.

  • C/T: Counter/Timer Selector:

–0: Temporizador.

–1: Contador.

  • M1/M0: Mode Selector:

–00: Modo 0 – Temporizador/Contador de 8 bits com divisor de frequência.

–01: Modo 1 – Temporizador/Contador de 16 bits.

–10: Modo 2 – Temporizador/Contador de 8 bits com recarga automática.

–11: Modo 3 – Temporizador/Contador de 8 bits. Timer 1 está desativado.

 

Os registradores contadores desses dois módulos são nomeados como TL e TH. Para o Timer 0, os registradores são referenciados como TL0 e TH0. Já para Timer 1, os registradores são referenciados como TL1 e TH1.

Modos de Operação

Modo 0 – Temporizador/Contador de 8 bits com divisor de frequência

Conforme a Figura 3, nesse modo de operação os registradores TL0 e TL1 são utilizados como divisores de clock (apenas 5 bits), já os registradores TH0 e TH1 determinam o valor inicial (8 bits) da contagem. A contagem é crescente até o valor FFH, e cabe ressaltar que o contador é incrementado sempre que os pulsos contabilizados são equivalentes ao valor do divisor.

Esse modo de operação é mostrado na figura 3.

Timer1 configurado no modo 0
Figura 3: Timer1 configurado no modo 0 [1].

Modo 1 – Temporizador/Contador de 16 bits

Esse modo é equivalente ao descrito anteriormente, contudo os 16 bits são utilizados para contagem, isto é, não há divisor de frequência. A contagem é crescente até o valor FFFFH.

Modo 2 – Temporizador/Contador de 8 bits com recarga automática

Conforme a Figura 4, nesse modo de operação os registradores TL0 e TL1 são utilizados como contadores. O valor de recarga é determinado pelos registradores TH0 e TH1. A contagem é crescente até o valor FFH, sendo que o processo de recarga ocorre após a condição de overflow ser detectada. No processo de recarga o registrador TLx tem seu valor inicializado de acordo com THx.

Timer1 configurado no modo 2
Figura 4: Timer1 configurado no modo 2 [1]

Modo 3 – Temporizador/Contador de 8 bits

Nesse modo de operação, o registrador TL0 é um temporizador/contador controlado pelo bit TR0 (TCON) e o registrador TH0 é um temporizador/contador controlado pelo bit TR1 (TCON). Além disso, TH0 poderá contar somente os pulsos de clock, isto é, pode operar somente na função de temporizador. Esse modo de operação é ilustrado na Figura 5.

A condição de overflow para esses dois temporizadores ativa as seguintes flags:

  • TL0: O evento de overflow aciona a flag TF0.
  • TF0: O evento de overflow aciona a flag TF1.

Cabe ressaltar que os registradores TL1 e TH1 não são utilizados.

Timer1 configurado no modo 3
Figura 5: Timer1 configurado no modo 3 [1]

Aplicações

Neste exemplo considerou-se a frequência do oscilador igual a 11,0592 MHz. Portanto, O ciclo de máquina tem frequência de 0,9216 MHz, isto é, a frequência do oscilador divido por doze. Para realizar o atraso de aproximadamente 1 segundo, o procedimento será realizado 16 vezes, logo cada passo deve gerar um atraso de 0,0625 segundos. Como a frequência de contagem do timer é de 921600 Hz, então serão necessários 921600×0,0625 pulsos para obter o delay desejado. O resultado dessa operação é 57600, sendo que esse valor deve ser subtraído de 65536, isto é, do valor que gera o sinal de estouro do timer. Logo, o valor inicial de contagem é 7936 (65536 – 57600), que em hexadecimal é representado por 1F00H.

Neste exemplo a frequência do oscilador também é igual a 11,0592 MHz, logo o período de contagem é de 1/921600, ou 1,085 us. No entanto, o valor inicial de contagem é zero. Assim, o timer irá gerar uma interrupção a cada 65536×1,085 us, isto é, aproximadamente 71,1 ms.

Referências

  • [1] MCS® 51 Microcontroller Family User’s Manual.
  • Crédito da Imagem Destacada.

Outros artigos da série

<< Entradas e Saídas Digitais do Intel 8051Comunicação Serial com Intel 8051 >>
Veja + conteúdo

Fascinado por computação, especialmente na interface entre hardware e software, me engajei na área de sistemas embarcados. Atuo com desenvolvimento de sistemas embarcados e sou docente da Faculdade de Engenharia de Sorocaba.

Para mais informações: https://about.me/fdelunogarcia

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Ricardo Munhoz
Ricardo Munhoz
07/11/2016 11:46

Opa, estou pronto para praticar …
Estou com o AT89S8253 em mãos, alguns outros componentes e o gravador AVRUSB.
Gostaria de saber onde encontro uma placa pronta pra eu brincar, senão vou tentar na Protoboard mesmo.
Uma outra coisa que “xeretei” por aí é que os 8051 estão em desuso .. o pessoal está indo direto para uns mais robustos mas o que vale é o Mercado, ainda tem espaço pra ele ?
Abraços e muito agradecido pelos tutoriais.

Souza
Souza
05/11/2016 19:47

Leitura terminada.
Agora é só brincar um pouco com o que aprendi.

Talvez você goste:

Séries



Outros da Série

Menu