Você está na página 1de 5

Laboratório de Microprocessadores e

Microcontroladores

Experimento: Temporizador via SRF


Prof. Msc. Carlos Alexandre Ferri

1. Introdução
Este laboratório tem o objetivo de apresentar o periférico TIMER e sua configuração
pelo Registrador de Função Especial TH0/TL0, TH1/TL1, TMOD e TCON.

1.1. Temporizador
O 8051 possui 2 Temporizadores / Contadores, controláveis por programa, que podem
operar de maneira totalmente independente dos demais sistemas do chip, podendo ser
habilitados ou não por software ou hardware (pelos registros de controle ou pinos de
interrupção). Na função de “temporizador”, o registrador é INCREMENTADO a cada ciclo de
máquina, isto é, a cada 12 PERÍODOS DO OSCILADOR.

1.1.1. TMOD (Timer Mode) – Endereço 89h

M1 M0
13 bits
16 bits
8 bits
Serial

GATE:
 Se GATE = 1, o temporizador/contador “x” é habilitado somente quanto Intx = 1 (no
registrador TCON).
 Se GATE = 0, o temporizador/contador “x” é habilitado somente quanto TRx = 1.
C/T: Define se a operação será de contagem (entrada no pino Tx) ou temporização (entrada
pelo oscilador).

Prof. Carlos Alexandre Ferri 1


MODO DE OPERAÇÃO: M1, M0 (Modo 0, Modo 1, Modo 2 ou Modo 3)
MODO 0 (8 bits + divisor de até 32):
Este modo configura o Timer 0/1 como um contador de 8 bits (THx) com um “prescaler”
de 5 bits (divisor de frequência de até 32 [freq_clock / 2]), tonando-se equivalente a 13bits.
Quando houver overflow, isto é, quando a contagem passar de “todos 1s” para “todos 0s”, o
flag de interrupção TF1 é setado.

MODO 1 (16 bits):


Contador ou Temporizador de 16 bits, para isso temos um par de registradores TH0 e
TL0 ou TH1 e TL1 escolhido para efetuar a contagem, sendo possível contagens de até FFFFh
(65535 em decimal) com o valor inicial programável por software. A contagem é realizada
por ciclo de instrução.
MODO 2 (8 bits auto recarga):
Contador e temporizador de 8 bits com auto recarga de 8bits. Neste modo, os registros
TL1 e TL0 são responsáveis pela contagem e TH1 e TH0 ficam com o valor a ser carregado
nos registros TL1 e TL0, quando ocorrer overflow. Mesmo com a recarga automática do valor
da contagem, os registros TH1 e TH0 podem ser alterados a qualquer momento. Neste modo
de funcionamento, temos um sistema no qual não precisamos reescrever por software o valor a
ser contado.
MODO 3 (serial):
O modo 3 terá comportamentos diferentes para os dois temporizadores. O temporizador
0 estabelece que TL0 e TH0 serão dois contadores separados. TL0 usa os bits de controle do
temporizador 0, ou seja, usa os bits C/T.0, GATE.0, TR0, TF0 e INT0 e pode operar como
contador ou temporizador. TH0 opera somente como temporizador e usa os bits de controle
TR1 e TF1 do temporizador 1. Assim TH0 controla a interrupção do temporizador 1. O
temporizador 1 permanece com a sua contagem (mantém TH1 e TL1) quando no modo 3. Fica
desligado, ou seja, é como se o TR1 estivesse em "0". Quando configurado para outro modo
funciona normalmente, mas fica permanentemente ligado, ou seja, como se TR1 = "1".

1.1.2. Registrador TCON (Timer Control) – Endereço 88h


Os bits IE1, IT1, IE0 e IT0 são usados no controle das interrupções externas, não sendo
necessários ajustes para o temporizador.

Prof. Carlos Alexandre Ferri 2


TF1: Sempre que ocorrer um overflow no T/C 1, este bit será setado, gerando um pedido de
interrupção do T/C 1. É resetado pelo hardware interno ao final da rotina de interrupção.
TR1: Setado pelo software para ligar T/C 1. Resetado para desligar o T/C (parar contagem).
TF0: Sempre que ocorrer um overflow no T/C 0, este bit será setado, gerando um pedido de
interrupção do T/C 0. É resetado pelo hardware interno ao final da rotina de interrupção.
TR0: Setado pelo software para ligar T/C 0. Resetado para desligar o T/C (parar contagem).

2. Modulação por largura de pulso (PWM)


Também conhecida por PWM, do inglês Pulse Width Modulation, este tipo de
modulação mantém a amplitude dos pulsos constantes e varia-se a sua largura
proporcionalmente aos valores pré-definidos. A modulação PWM tem diversas aplicações.
Uma aplicação simples é usá-lo para controlar a intensidade luminosa de um LED, conhecida
como “DIMMER de LEDS”. Ao mudar a razão em que o sinal fica em nível alto é possível
controlar o tempo em que o LED fica iluminado e, assim, com uma frequência de oscilação
adequada, temos a sensação de que é possível mudar sua intensidade luminosa.

Onde:
Duty-Cycle: Valor em (%), correspondente à proporção do período que o sinal
ficará em nível alto.
Largura do pulso: Tempo em que o sinal este ligado.
Período: Tempo de um ciclo da onda., sendo dependente da frequência do sinal
desejado.

Prof. Carlos Alexandre Ferri 3


3. Parte experimental
Leia os tópicos anteriores a respeito das instruções apresentas. Compile e execute cada
um dos códigos mencionados nos exercícios abaixo. Desenvolva as modificações quando
necessário. Entre, no final do laboratório, uma folha contendo o nome da equipe e o que foi
realizado em cada exercício.
1. Use o simulador do Kit Didático para simular o programa abaixo. VERIFIQUE
e COMENTE o que ocorre quando a chave conectada ao pino P1.5, é
pressionada.
Rótulo Mnemônico Comentário
ORG 00H ; A instrução a seguir está no endereço 00H

INICIO: SETB P2.1 ; faz o pino P2.1 ficar com nível logico “1”
V1: JB P1.5,V1 ; Enquanto P1.5 =1, espera em um loop infinito
CLR P2.1 ; faz o pino P2.1 ficar com nível logico “0”
LCALL DELAY ; Chama subrotina de delay
SJMP INICIO ; Retorna para a linha V1

DELAY: MOV TMOD,#10h ;Ativa TIMER 1 em modo 1 = 16bits


MOV R0,#10
PULO: MOV TH1,#high(5000) ;Carrega os 8bits mais significativos em TH1
MOV TL1,#low(5000) ;Carrega os 8bits menos significativos em TH1
SETB TR1 ;Ativa o início da contagem de tempo
AQUI: JNB TF1, AQUI ;Monitora o bit TR1 aguardando o fim da contagem
CLR TR1 ;Terminou a contagem, desativa o temporizador
CLR TF1 ; Limpa a flag de termino de contagem.
DJNZ R0,PULO ; Avalia o ciclo de repetição
RET ; Retorna da subrotina de delay

END

2. Reprograme os valores de TH1 e TL1 para promover um atraso aproximado de


5 segundos. Recalcule para 15 segundos.

3. Altere o programa para trabalhar com o TIMER 0.

4. Crie um programa que ao apertar o botão S0 (P1.5) será emitido uma onda
quadrada PWM de 100Hz na saída P2.1. Esse pulso deverá ser 50% alto e 50%
em baixo.

Ta Tb

𝟏 𝟏 𝑇 = 𝑇𝑎 + 𝑇𝑏 → 𝑇𝑎 = 𝑇𝑏
𝑻= = = 𝟎, 𝟎𝟏𝒔
𝑭 𝟏𝟎𝟎
Para 100Hz  T = 0,01s, Logo:
Ta = 0,005s
Tb = 0,005s

Prof. Carlos Alexandre Ferri 4


5. Altere o programa anterior de forma que o pulso PWM apresente 70% baixo e
30% em alto, ou seja, Ta = 0,007 e Tb = 0,003.

Dica: Duas rotinas de temporização serão necessárias. Uma para os 70%


(DELAY70) e outra para os 30% (DELAY30).

Prof. Carlos Alexandre Ferri 5

Você também pode gostar