Você está na página 1de 14

Família MCS-51

Temporizadores/Contadores
Programação dos timers
(registrador TMOD)
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Tim er 1 Tim e r 0
TM O D = G ATE C /T ba rra M1 M0 G ATE C /T barra M1 M0

Símbolo Posição Função


GATE TMOD.3 0: O Timer/Contador habilitado sempre TRx=1 ( software);
TMOD.7 1: O Timer/Contador habilitado pelo pino INTx = 1 e TRx =1
(software e hardware );

C/T barra TMOD.2


TMOD.6 0: Timer (entrada de clock interno - f cristal /12);
1: Contador (entrada de clock pelo pino externo TX).

M1 MO TMOD.0/1 Define o modo de operação dos Timers/Contadores, em


TMOD.4/5 conjunto com M0.
Modos de operação T0 e T1
M1M0 Modo de operação
00 7654 3210 4 3210
0: Timer de 13 bits (THX8 =xxxx xxxx TLX 5= ***x xxxx)
contagem inicial : ( 0000 0000 ***0 0000)
: :
contagem final : ( 1111 1111 ***1 1111)
01 1: Timer/Contador de 16 bits (THX8 TLX8)16

10 2: Timer/Contador de 8 bits com recarga automática. (TLx é


recarregado automaticamente com o valor de THx)
Registrador de Contagem Registrador de Recarregamento
(TLX8=xxxx xxxx) (THX8= valor a ser recarregado)

11 3:
Timer 0 compartilhado:
- TL0 Timer/Contador de 8 bits - bits de controle do Timer 0;
- TH0 Timer de 8 bits - bits de controle Timer 1. (Timer 1 parado)

.
Obs: X = 0 ou 1.
Modo 0
Oscilador 12
Flag de
Controle Inter.

C/Tbarra=0 THX8 TLX5 TFX

C/Tbarra=1
TX pino Registradores de
contagem
Interrupção

TRX
Timer/Contador no
Porta Modo 0 de operação (13
AND bits de contagem).
GATE
Porta OR

INTXbarra
M odo 1 :
É u m Tim er/co n tad o r d e 1 6 b its. A p resen ta o m esm o h a rd w a re d a fig u ra 1 , p o rém o seu reg istrad o r d e
co n tag em é d e 1 6 b its (8 b its d o reg istrad o r T H X e tam b ém 8 b its d o reg istrad o r T L X ). U sad o p ara g erar
tem p o s m aio res q u e o m o d o 0 .
Modo 2
Oscilador 12 Registrador de
contagem Flag de
Controle Inter.

C/Tbarra=0 TLX8 TFX

C/Tbarra=1
TX pino Interrupção

Recarregamento
TRX
THX8
Porta
AND
GATE
Porta OR
Timer/Contador no Modo 2
INTXbarra de operação (8 bits de
contagem).
Modo 3
Oscilador 12 Registrador de
contagem Flag de
Controle Inter.
C/Tbarra=0 TL08 TF0

C/Tbarra=1
T0 pino Interrupção

TR0

Porta
AND
GATE
Porta OR Timer/Contador 0 no Modo 3
de operação (8 bits de
INT0barra
contagem).

Flag de
Controle
Inter.
TH08 TF1
Oscilador 12

Interrupção
TR1
Flags de sinalização
(registrador TCON)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
(TCON) = TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Símbolo Posição Nome e Significado


TF1 TCON.7 Flag de overflow do Timer/Contador 1 : Setado por hardware no overflow do
Timer/contador 1.

TR1 TCON.6 Bit de controle do Timer/Contador 1 : Setado/Limpado por software para ligar ou
desligar o Timer/contador 1.

TF0 TCON.5 Flag de overflow do Timer/Contador 0 : Setado por hardware no overflow do


Timer/contador 0.

TR0 TCON.4 Bit de controle do Timer/Contador 0 : Setado/Limpado por software para ligar ou
desligar o Timer/contador 0.
Timer 2
Controle do Timer 2
Exemplo da programação de um timer

Programa Principal:
(0100h)

(SP) #30h PROGP: MOV SP,#30h


(TMOD) #10h MOV TMOD,#10h
MOV TH0,#0FFh
(TH0) #0FFh
MOV TL0,#00h
(TL0) #00h MOV TH1,#0FFh
(TH1) #0FFh MOV TL1,#00h
(TL1) #00h MOV IE,#8Ah
(IE) #8Ah MOV TCON,#50h
(TCON) #50h MOV P0,#7Fh
(P0) #7Fh MOV P1,#0FEh
MOV P2,P1
(P1) #0FEh
(P2) (P1)
LOOP: ACALL SUBROT
Chama sub-rotina SUBROT
SJMP LOOP
END
Interrupções
Item F o n te d e In terru p çã o N ível d en tro d a m esm a p rio rid a d e
1 IE 0 (+ + + ++ + ) M aio r
2 T F0 (+ + + ++ )
3 IE 1 (+ + + +)
4 T F1 (+ + + )
5 R I+ T I (+ + )
6 T F2 + E X F2 (+ ) M en o r

F o n te d e In te rru p çã o N o m e d a F o n te d e In terru p çã o E n d ere ço V e to r


RESET R e set 0000h
IE 0 Fo n te d e In te rru p ç ão E x tern a 0 0003h
T F0 Fo n te d e In te rru p çã o d o Tim e r/C o n tad o r 0 000Bh
IE 1 Fo n te d e In te rru p ç ão E x tern a 1 0013h
T F1 Fo n te d e In te rru p çã o d o Tim e r/C o n tad o r 1 001Bh
R I + TI Fo n te d e In terru p ç ão d o C a n a l d e C o m u n ic aç ão Se rial 0023h
T F2 + E X F2 Fo n te d e In terru p ç ão d o Tim e r/C o n tad o r 2 + E x te rn a 2 002Bh
Exemplo da rotina de interrupção
de um timer
Rotina de atendimento a fonte de
interrupção do Timer/Contador 0

(0040h)
T0INT: PUSH ACC
Salvar (ACC) e (PSW) na pilha PUSH PSW
(TH0) #0FFh MOV TH0,#0FFh
(A) (P1) MOV A,P1
Rotaciona o (A) um bit para a esquerda RL A
(P1) (A) MOV P1,A
Recupera (PSW) e (ACC) da pilha POP PSW
POP ACC

RETI RETI
Uso do KID51
Endereços das rotinas de atendimento a interrupção originais foram
direcionados para posições da RAM externa (acima de 2000h).

Você também pode gostar