Você está na página 1de 10

Aula 23.05.

12 Objetivos: -timers/couters -rotina de delay Timers / counters Temporizadores / contadores - Marcao de tempo - gerao de freqncias

TH 1 (0X8D )

TL1 (0X8B )

TH 0 (0X8C )

TL0 (0X8A)

T/C 0 (16 bits) - no 8051: T/C 1 (16BITS)

T/C 1

TH 1 8DH

TL1 8BH TL0 8AH

T/C 0

TH 0 8CH

Exemplo: T/C 1 TH 1 8DH TL1 8BH ck f = fcy =1/12 fext

Obsp: Os dois contadores so progressivo Modo 0 Modo 1 Modo 2 Modo 3 Os registradores para controle TCON reg. de 8 bits e j estudamos quando viu interrupo

Resgistrador TCON ( timer control) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON (0X88)

TRx (x = 0 ou 1) para ligar o timer 1 = liga a contaem TRx 0 = desliga a contagem REGISTRADOR TMOD: GATE1 TFx T/C1 M11 M10 GATE0 T/C0 M01 M00 TMOD (0X89)

1 = indica estouro de contagem t/c =0 0 = no houve estouro TR1

T/C 1

TH 1 8DH

TL1 8BH

ck

Tfx = 1 => solicita interrupo 0 = T/C x = ON TRx =1 Gatex 1 = T/C x = ON TRx.and INTx =1

APLICAO P/ GATEx =1 EX: GATE1 =1 TR1 =1

CONTAGEM EM T/C 1 Fck = 12 Mhz fint = 1Mhz T = 1 s,. Supor T/C 1 =0 APS T2 T/C1 =1000 T = 1000 X 1 s. T = 1ms ; preparando o gate1 e tr1 Set b gate1 Set b tr1

0= timer ck interno = fext /12 Bit C/T 1 contador ck externo T0 = p3.4 T1 = p3.5

Exemplo: Usando o Timer/ contador para contar o n de latas de cerveja que passam pelo sensor

Modos de operao dos timer/contador do 8051

Mx1 0 0 1 1

Mx0 0 1 0 1

MODO MODO MODO MODO MODO

0 - c/t com prescaler 1 - C/T 16 bits 2 - C/T recarga automtica 3 - .2 x C/T 8 bits

Bits de modo de operao: Modo 0 => O TLx 5 bit vira um pr-escale ( divisor de freqncia para THx) TLx = 00010b =2 divide por 2 TLx = 01010b =10 divide por 10 TLx = 01100b =12 divide por 12 Modo 1 os dois contadores vai unir para formar nico de 16 bits 2 16 contagem = 65536 contagem Se meu Tck = 1 s 65536 x 1 s TMAX = 65,536 ms. Modo 2 No muda nada no controle, so muda a contagem q feita no TLx a recaga feita no THx a qualquer momento pode recarregar. Quando ele estoura ele recarrega muito usado na transmisso da serial

Modo 3 dois contadores de 8 bits que so controlados a contagem s no TL0 quem controla o TR0 que liga TL01 a contagem em TH0 quem controla o TR1 que liga TH0 Ex: trabalhar no modo 1 para contagem plena para gerao de Delay de 1 s A max contagem 65535 Quero um valor inicial para estourar ele 65536 = contagem mxima -50000 = contagem 15535 valor nicial = 3CAFh Programar o T/C com esse valor MOV TH1,#3Ch ; T/C1 3C MOV TL1,# AFh OU MOV TH1,# high (65535 50000) MOV TL1,# LOW (65535 50000) Exemplo: fazer um delay de 1 s ; CDIGO PARA A TEMPORIZAO DE 1s ; USANDO T/C1, OPERANDO A 12 MHZ ; CK INTERNO = 12MHZ/12 = 1MHZ ; T =1 s ORG 0 INICIO: SLMP TIMER_1S ORG 100H TIMER_1S: MOV TMOD, # 10H ; T/C1 MODO 1 MOV R0, # 20H; N DE REPETIES Denovo: MOV TH1,# HIGH (65536 -50000); T/C1 15536 MOV TL1,# LOW (65536 -50000) ; PREPAROU P/ TEMPORIZAO DE 50 ms. Set b tr1 ; ligou o timer Jnb tf1, $ ; aquarda fim de 50 ms Clr Tr 1 ; para a contagem DCR R0; ; Atualiza o contador Cjne R0,# 20, Denovo Sjmp $; fim do programa ; pode ser um RET

Outro programa ORG 0 INICIO: SLMP TIMER_1S ORG 100H SET B P1.1 TIMER_1S: MOV TMOD, # 10H ; T/C1 MODO 1 MOV R0, # 20H; N DE REPETIES Denovo: MOV TH1,# HIGH (65536 -50000); T/C1 15536 MOV TL1,# LOW (65536 -50000) ; PREPAROU P/ TEMPORIZAO DE 50 mg. Set b tr1 ; ligou o timer Jnb tf1, $ ; aquarda fim de 50 ms Clr Tr 1 ; para a contagem DCR R0; ; Atualiza o contador Cjne R0,# 20, Denovo Sjmp $; fim do programa CLR P1.1 ; pode ser um RET

Exerccio para casa 1 refazer o programa de delay de 1 S usando interrupes 2 fazer um programa para gerar um pulso de 1 s no pino p1.1 3 escreve um programa para gerar uma onda quadrada de 1 Hz em P1.1.

Rotina de delay de 8 bits:

3 Atraso: MOV R0, # VALOR ; 1 CICLO (1 ) DJNZ R0, $ ; 2 CICLO ( VALOR ) RET ; 2 CICLOS ( 1 ) = R0 N TOTAL DE CICLOS = C = 1 + VALOR x 2 + 2 C = 3 + 2 R0 1 CICLO 12 T CLOCK EXT. 1 CICLO NECESSITA 1/12 da fext 1 ciclo tem perodo T Tint = 1/ fext/12 T = 12/fexT

T = C.T T = C . 12/fexT T = (3+ 2 R0) . 12/fexT


Ex: se fexT = 12 MHz

T = (3 +2 R0)
Rotina de delay de 16 bits:

Rotina de 8 bts

Atraso: MOV R1, # MSN ; 1 ( 1) Loop: MOV R0,# LSB ; 1 R1 . (3 + 2 R0) DJNZ R0, $ ;2 DJNZ R1, loop ; 2 RET ;2 ( 1)

C = 1 + (3 +2 R0) R1 + 2 C = 3 + ( 3 + 2 R0) R1

T = 3 + (3+2R0) R1 x 12 /fext

Rotina de delay de 24 bits:

Rotina de 16 bits

Exerccio: Considere o cristal 11,059 MHZ. fazer LED,s ligados na porta 0 ficarem alternando Soluo

Org 0000h MOV A,# 10101010B VOLTA: MOV P0,A LCALL TEMPO CPL A SJMP VOLTA ; SUBROTINA DE TEMPO DE 1 S TEMPO: MOV R2, #8 VOLTA2 : MOV R2, #250 VOLTA 1:MOV R2, #250 DJNZ R0, $ DJNZ R1, VOLTA1 DJNZ R2, VOLTA2 RET END

Você também pode gostar