Capítulo 7 Os “Timers”/Contadores da família de microcontroladores MCS-51 da Intel Prentice Hall Microcontroladores 8051 1 Capítulo 7 Interrupções: Prentice Hall Instrução Bytes Ciclos Codificação Representação Simbólica LCALL addr16 (sub-rotina) 3 2 0001 0010 addr15-8 addr7-0 (PC) (PC) + 3 (SP) (SP) + 1 ((SP)) (PC7-0) (SP (SP) + 1 ((SP)) (PC15-8) (PC) addr16 LCALL “endereço vetor de interrupção” (definido pelo fabricante) 0 2 - (PC) (PC) + 3 (SP) (SP) + 1 ((SP)) (PC7-0) (SP (SP) + 1 ((SP)) (PC15-8) (PC) addr16 Microcontroladores 8051 2 Capítulo 7 Item Fonte de Interrupção Nível dentro da mesma prioridade 1 IE0 (++++++) Maior 2 TF0 (+++++) 3 IE1 (++++) 4 TF1 (+++) 5 RI+TI (++) 6 TF2+EXF2 (+) Menor Fonte de Interrupção RESET IE0 TF0 IE1 TF1 RI + TI TF2 + EXF2 Prentice Hall Nome da Fonte de Interrupção Reset Fonte de Interrupção Externa 0 Fonte de Interrupção do Timer/Contador 0 Fonte de Interrupção Externa 1 Fonte de Interrupção do Timer/Contador 1 Fonte de Interrupção do Canal de Comunicação Serial Fonte de Interrupção do Timer/Contador 2 + Externa 2 Microcontroladores 8051 Endereço Vetor 0000h 0003h 000Bh 0013h 001Bh 0023h 002Bh 3 Capítulo 7 TMOD = Símbolo GATE C/Tbarra M1 M0 bit 7 bit 6 GATE Timer 1 C/Tbarra Posição TMOD.3 TMOD.7 bit 5 M1 bit 4 M0 bit 3 bit 2 bit 1 bit 0 GATE Timer 0 C/Tbarra M1 M0 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. Prentice Hall Microcontroladores 8051 4 Capítulo 7 M1 0 M0 0 0 1 1 0 Modo de operação 7654 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 1 4 3210 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. Obs: X = 0 ou 1. Prentice Hall Microcontroladores 8051 5 Capítulo 7 Oscilador 12 Flag de Inter. Controle C/Tbarra=0 THX8 TLX5 TFX C/Tbarra=1 TX pino Registradores de contagem TRX Porta AND Interrupção Figura 1: Timer/Contador no Modo 0 de operação (13 bits de contagem). GATE Porta OR INTXbarra Prentice Hall Microcontroladores 8051 6 Capítulo 7 (TCON) = 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 Prentice Hall bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 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. Microcontroladores 8051 7 Capítulo 7 Modo 1: É um Timer/contador de 16 bits. Apresenta o mesmo hardware da figura 1, porém o seu registrador de contagem é de 16 bits (8 bits do registrador THX e também 8 bits do registrador TLX). Usado para gerar tempos maiores que o modo 0. Prentice Hall Microcontroladores 8051 8 Capítulo 7 Oscilador 12 Registrador de contagem Controle C/Tbarra=0 TLX8 Flag de Inter. TFX C/Tbarra=1 Interrupção TX pino Recarregamento TRX THX8 Porta AND GATE Porta OR INTXbarra Prentice Hall Figura 2: Timer/Contador no Modo 2 de operação (8 bits de contagem). Microcontroladores 8051 9 Capítulo 7 Oscilador 12 Registrador de contagem Controle C/Tbarra=0 TL08 Flag de Inter. TF0 C/Tbarra=1 T0 pino Interrupção TR0 Porta AND GATE Figura 3: Timer/Contador 0 no Modo 3 de operação (8 bits de contagem). Porta OR INT0barra Controle Oscilador TH08 12 Flag de Inter. TF1 Interrupção Prentice Hall TR1 Microcontroladores 8051 10 Capítulo 7 Inicialização (set-up) dos Timers/Contadores: Modo Função do Timer/Contador 0 0 1 2 3 Timer/Contador de 13 bits Timer/Contador de 16 bits 8 bits com recarregamento automático 2 Timers/Contadores de 8 bits Modo Função do Timer/Contador 0 0 1 2 3 Timer/Contador de 13 bits Timer/Contador de 16 bits 8 bits com recarregamento automático 2 Timers/Contadores de 8 bits Prentice Hall TMOD Controle Interno Controle Externo (nota 1) (nota 2) 04h 0Ch 05h 0Dh 06h 0Eh 07h 0Fh TMOD Controle Interno Controle Externo (nota 1) (nota 2) 00h 80h 10h 90h 20h A0h 30h B0h Microcontroladores 8051 11 Capítulo 7 Modo Função do Timer/Contador 0 0 1 2 3 Timer/Contador de 13 bits Timer/Contador de 16 bits 8 bits com recarregamento automático 2 Timers/Contadores de 8 bits Prentice Hall TMOD Controle Interno Controle Externo (nota 1) (nota 2) 40h C0h 50h D0h 60h E0h 70h F0h Microcontroladores 8051 12 Capítulo 7 Rotina de atendimento a fonte de interrupção do Timer/Contado 0 Salvar (ACC) e (PSW) na pilha (TH0) #0FFh (A) (P1) Rotaciona o (A) um bit para a esquerda (P1) (A) Recupera (PSW) e (ACC) da pilha ACC PSW TH0,#0FFh A,P1 A P1,A PSW ACC RETI RETI Prentice Hall (0040h) T0INT: PUSH PUSH MOV MOV RL MOV POP POP Microcontroladores 8051 13 Capítulo 7 Rotina de atendimento a fonte de interrupção do Timer/Contado 1 Salvar (ACC) e (PSW) na pilha (TH1) #0FFh (A) (P2) Rotaciona o (A) um bit para a esquerda (P2) (A) Recupera (PSW) e (ACC) da pilha ACC PSW TH1,#0FFh A,P2 A P2,A PSW ACC RETI RETI Prentice Hall (0060h) T1INT: PUSH PUSH MOV MOV RL MOV POP POP Microcontroladores 8051 14 Capítulo 7 Sub-rotina (0080h) SUBROT:MOV INC MOV CPL MOV (A) (P0) (A) (A) + 1 (P0) (A) (A) not (A) (P3) (A) A,P0 A P0,A A P3,A RET RET Prentice Hall Microcontroladores 8051 15 Capítulo 7 Programa Principal: (0100h) (SP) #30h (TMOD) #10h (TH0) #0FFh (TL0) #00h (TH1) #0FFh (TL1) #00h (IE) #8Ah (TCON) #50h (P0) #7Fh (P1) #0FEh (P2) (P1) Chama sub-rotina SUBROT PROGP: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP,#30h TMOD,#10h TH0,#0FFh TL0,#00h TH1,#0FFh TL1,#00h IE,#8Ah TCON,#50h P0,#7Fh P1,#0FEh P2,P1 LOOP: ACALL SJMP END SUBROT LOOP Figura 4: Fluxograma e programa fonte estruturado do exercício resolvido 1. Prentice Hall Microcontroladores 8051 16