Timers/Counters do 8051 Disciplina: Microcontroladores Prof. Remy Eskinazi, MSc UPE - POLI 1 Registradores dos T/C’s 7 0 TH1 (0X8D) T/C 1 TL1 (0X8B) TH0 (0X8C) T/C 0 TL0 (0X8A) TF1 GATE1 TR1 T/C1 TF0 M11 TR0 M10 IE1 GATE0 IT1 T/C0 IE0 M01 IT0 M00 TCON TMOD (0X88) (0X89) 2 Registrador TCON TF1 Símbolo TF1 Posição TCON.7 TR1 TCON.6 TF0 TCON.5 TR0 TCON.4 IE1 TCON.3 IT1 TCON.2 IE0 TCON.1 IT0 TCON.0 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON (0X88) Nome e Significado Flag de overflow do Timer /Contador 1 : Setado por hardware no overflow do Timer /contador 1. Limpado por hardware quando o microprocessador vetoriza (endereça) a sub-rotina de atendimento a fonte de interrupção do Timer /Contador 1 (001Bh). Bit de controle de liga/desliga do Timer /Contador 1 : Setado/Limpado por software para ligar ou desligar o Timer /contador 1. Flag de overflow do Timer /Contador 0 : Setado por hardware no overflow do Timer /contador 0. Limpado por hardware quando o microprocessador vetoriza (endereça) a sub-rotina de atendimento a fonte de interrupção do Timer /Contador 1 (000Bh). Bit de controle de liga/desliga do Timer /Contador 0 : Setado/Limpado por software para ligar ou desligar o Timer /contador 0. Flag de detecção de borda da interrupção externa 1 : Setado/Limpado por hardware sempre quando uma borda de descida da fonte de interrupção externa é detectada. Limpado quando a sub-rotina de atendimento a fonte de interrupção 1 é processada. Bit de controle do tipo da interrupção 1 : Setado/Limpado por software para especificar o tipo de detecção da interrupção externa 1, se é por borda de descida ou nível baixo. Flag de detecção de borda da interrupção externa 1 : Setado/Limpado por hardware sempre quando uma borda de descida da fonte de interrupção externa é detectada. Limpado quando a sub-rotina de atendimento a fonte de interrupção 0 é processada. Bit de controle do tipo da interrupção 0 : Setado/Limpado por software para especificar o tipo de detecção da interrupção externa 0, se é por borda de descida ou nível baixo. 3 Registrador TMOD GATE1 Símbolo GATE C/Tbarra M1 M0 Posição TMOD.3 TMOD.7 T/C1 M11 M10 GATE0 T/C0 M01 M00 TMOD (0X89) Função Controle de disparo: 0: O Timer/Contador X é habilitado sempre TRX=1 (contagem controlada por software); 1: O Timer/Contador é habilitado somente quando o pino INTX = 1 e TRX (em TCON) =1 (contagem controlada por software e hardware); TMOD.2 Seletor de Timer ou Contador: TMOD.6 0: define operação Timer (entrada de clock do sistema interno - fcristal/12); 1: define operação Contador (entrada de clock definido pelo pino externo TX). TMOD.0/1 Define o modo de operação dos Timers/Contadores, em conjunto com M0. TMOD.4/5 Define o modo de operação dos Timers/Contadores, em conjunto com M1. 4 Registrador TMOD GATE1 M1 0 T/C1 M11 M10 M0 0 0 1 1 0 Obs: X = 0 ou 1. 1 T/C0 M01 M00 TMOD (0X89) Modo de operação 7654 3210 4 3210 0: Timer de 13 bits de contagem (THX8=xxxx xxxx TLX5= ***x xxxx) contagem inicial: ( 0000 0000 ***0 0000) : : contagem final: ( 1111 1111 ***1 1111) 1: Timer/Contador de 16 bits (THX8 TLX8)16 2: Timer/Contador de 8 bits com recarregamento automático. A cada interrupção, o registrador de contagem (TLX) é recarregado automaticamente com o valor do registrador de recarregamento (THX) Registrador de Contagem 1 GATE0 Registrador de Recarregamento (TLX8=xxxx xxxx)(THX8= valor a ser recarregado no registrador de contagem) 3: Timer 0: - TL0 é um Timer/Contador de 8 bits controlado pelos bits de controle do Timer 0; - TH0 é simplesmente um Timer de 8 bits controlado pelos bits de controle Timer 1. Timer 1: parado. 5 Modo 0 dos T/Cs Oscilador 12 Flag de Inter. Controle C/T=0 TLX5 THX8 TFX C/T=1 TX pino Registradores de contagem TRX Porta AND Interrupção Timer/Contador no Modo 0 de operação (Prescaler: 13 bits de contagem). GATE Porta OR X = 0 ou 1 INTX 6 Modo 1 dos T/Cs Oscilador 12 Flag de Inter. Controle C/T=0 TLX8 THX8 TFX C/T=1 TX pino Registradores de contagem TRX Porta AND Interrupção Timer/Contador no Modo 1 de operação (Contagem plena: 16 bits de contagem). GATE Porta OR X = 0 ou 1 INTX 7 Modo 2 dos T/Cs Oscilador 12 Controle C/T=0 Registrador de contagem TLX8 Flag de Inter. TFX C/T=1 Interrupção TX pino Recarregamento TRX Porta AND THX8 X = 0 ou 1 GATE Porta OR INTX Timer/Contador no Modo 2 de operação (8 bits de contagem com recarga). 8 Modo 3 dos T/Cs Oscilador 12 Controle C/T=0 Registrador de contagem TL08 Flag de Inter. TF0 C/T=1 T0 pino Interrupção TR0 X = 0 ou 1 Porta AND GATE Timer/Contador 0 no Modo 3 de operação (8 bits de contagem). Porta OR INT0 Controle Oscilador TH08 12 Flag de Inter. TF1 Interrupção TR1 9 M1x M0x CKint 0 CK TLx Prescaler Bits 04 THx 15 TFx Contagem Tx 0 0 Modo 0: Contador 8 bits c/ preescaler C/T 0 TRx TLx Contagem THx 15 TFx Contagem GATEx 0 1 Modo 1: Contagem plena INTx TFx (X =1 ou 0) 0 TLx Contagem 1 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 THx 15 Recarga Modo 2: Recarga automática IT0 TF0 TCON 15 0 GATE1 T/C1 M11 M10 GATE0 T/C0 M01 TL0 M00 TF1 TH0 TMOD TR0 CK TR1 Timers / Counters - 8051 1 1 10 Modo 3: 2 Contadores Independentes 8 bits INÍCIO Geração de Delay de 1s R0 20d T1 15.535d 65.535 - 50.000 15535 Liga Timer TF = 1 ? N S R0 R0 - 1 N R0 = 0 ? S RET 11 INÍCIO Geração de Delay de 1s T1 15.000d R0 20d 65.536 - 50.000 15536 Liga Timer TF = 1 ? N S R0 R0 - 1 Repetir utilizando interrupções N R0 = 0 ? S RET 12