Apresentacao TIMER0 PIC16F877A

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 11

Disciplina de Sistemas Microprocessados

Contador/Temporizador TIMER 0 - PIC16F877A

Prof. Amauri Amorin Assef


Prof. Maurício Kaster

UTFPR - Campus Ponta Grossa


19/10/2010 1
Prof. Amauri Amorin Assef

1
Contador/Temporizador Timer 0
CARACTERÍSTICAS
 Contador binário de 8 bits (0x00 – 0xFF)
 Prescaler programável (divisor de frequência)
 Seleção de clock interno ou externo
 Interrupção de overflow de 0xFF para 0x00
 Seleção de borda para clock externo (subida ou descida)
 Registro de contagem TMR0 (endereço 0x01 – banco 0)

FUNÇÕES BÁSICAS
 Contagem de eventos externos (clock de entrada no pino RA4/T0CKI)
 Temporização (contagem de tempo) para clock interno (fclk / 4)

UTFPR - Campus Ponta Grossa


19/10/2010 2
Prof. Amauri Amorin Assef

2
Diagrama em bloco do TIMER 0

T0SE T0CS
PSA

PS2:PS0
PSA

PSA

UTFPR - Campus Ponta Grossa


19/10/2010 3
Prof. Amauri Amorin Assef

3
Registrador de configuração do TIMER 0 – OPTION_REG

 Bit 7 - /RBPU  Bit 2-0 – PS2:PS0: Bits de seleção da taxa do prescaler


 Bit 6 – INTEDG
 Bit 5 – T0CS: Bit de seleção da fonte de clock do TIMER 0
 0 – Interno
 1 – Transição do pino T0CKI
 Bit 4 – T0SE: Bit de seleção da borda do TMR0
 0 – Incrementa na transição 1 para 0 do pino T0CKI
 1 – Incrementa na transição 0 para 1 do pino T0CKI
 Bit 3 – PSA: Bit de atribuição do prescaler
 0 – Prescaler para o TIMER 0
 1 – Prescaler para p WDT

O registro OPTION_REG fica no BANCO 1, endereço 0x81

UTFPR - Campus Ponta Grossa


19/10/2010 4
Prof. Amauri Amorin Assef

4
Interrupção
 Pode ser causada por evento interno ou externo:
 Mudança de estado no pino
 Overflow do timer
 Conversão do A/D
 Endereço de retorno salvo na pilha
 Vetor de interrupção no endereço 0x04
 Retorno da interrupção com a instrução RETFIE
 Salvamento de contexto
 W
 STATUS
 PCLATCH
 Limpar o bit de sinalização da interrupção, por exemplo
BCF INTCON, TMR0IF

UTFPR - Campus Ponta Grossa


19/10/2010 5
Prof. Amauri Amorin Assef

5
Registro de Interrupção - INTCON

 Bit 7 – GIE: Bit Global Interrupt Enable – Habilitação global das interrupções
 0 – Desabilita todas as interrupções
 1 – Habilita todas as interrupções desmascaradas
 Bit 5 – TMR0IE: Bit de habilitação da interrupção de overflow do TIMER0
 0 – Desabilita a interrupção do TMR0
 1 – Habilita a interrupção do TMR0
 Bit 2 – TMR0IF: Bit de sinalização da interrupção de overflow do TIMER0
 0 – TIMER0 sem overflow
 1 – TIMER0 com overflow

UTFPR - Campus Ponta Grossa


19/10/2010 6
Prof. Amauri Amorin Assef

6
Interrupção do Timer 0
DESCRIÇÃO
 A interrupção do TIMER 0 é gerada quando o registro TMR0 transborda (overflow)
de 0xFF para 0x00
 O overflow seta o bit TMR0IF (timer 0 interrupt flag) do registro INTCON
 A interrupção pode ser mascarada resetando o bit TMR0IF do registro INTCON
 O bit TMR0IF deve ser resetado por software para habilitar nova interrupção

O registro INTCON é presente em todos os bancos de registradores.

UTFPR - Campus Ponta Grossa


19/10/2010 7
Prof. Amauri Amorin Assef

7
Contador/Temporizador Timer 0
RESUMO DOS REGISTRADORES DO TIMER 0

UTFPR - Campus Ponta Grossa


19/10/2010 8
Prof. Amauri Amorin Assef

8
Exemplo de cálculo para o TIMER 0
 Utilizando o TIMER 0, escrever um programa para incrementar o PORTD a cada
2ms (clock de 8MHz):
PRESCALER TEMPO
1:2 256μs
 FCLK = 8MHz
 TTMR = 4 / 8M = 0,5μs 1:4 512μs
 TESTOURO = 256 * 0,5μs = 128μs 1:8 1,024ms
1:16 2,048ms
1:32 4,096ms
1:64 8,192ms
1:128 16,384ms
1:256 32,768ms

OPTION_REG <= B’0000 0011’


UTFPR - Campus Ponta Grossa
19/10/2010 9
Prof. Amauri Amorin Assef

9
Programa principal:
INICIO BANK1
MOVLW 0X00
Configura o MOVWF TRISD ; CONFIGURA PORTD COMO SAÍDA
PIC16F877A MOVLW B'00000011' ; TIMER 0 -> PRESCALER DE 1:16
MOVWF OPTION_REG
BANK0

CLRF PORTD

TESTE BTFSS INTCON,TMR0IF ; VERIFICA SE OCORREU OVERFLOW DO T0


GOTO TESTE
BCF INTCON,TMR0IF ; LIMPA BIT DE OVERFLOW
INCF PORTD,F
GOTO TESTE

UTFPR - Campus Ponta Grossa


19/10/2010 10
Prof. Amauri Amorin Assef

10
Habilitação da interrupção do TIMER0:
MOVLW B‘10100000' ; TIMER 0 -> PRESCALER DE 1:16
; ||| ---------> HABILITA A INTERRUPÇÃO DO TIMER0
; | ---------> HABILITA A INTERRUPÇÃO GLOBAL
MOVWF INTCON

UTFPR - Campus Ponta Grossa


19/10/2010 11
Prof. Amauri Amorin Assef

11

Você também pode gostar