Você está na página 1de 1

O timer 1 pode ser usado como 8 ou 16 bits

Vamos aplicar 1 kHz para controlar externamente o TIMER1 em 16 bits


Para isto vamos trabalhar com o estouro do timer 1 em 16bits (65536 mxima contage
m)
Queremos que uma sada inverta o seu estado a cada 500ms. Para isto vamos acionar
uma entrada com 1000 Hz.
Naturalmente, vamos usar o conceito de interrupo e no de loop, pois assim a melhor
tcnica.
Definimos a saida RB7 como a sada do 500ms ---- #define outT1 LATB7_bit
criamos uma interrupo para o timer1 e:
testamos o bit sinalizador da interrupo: TMR1IF_bit se verdadeiro
resetamos este bit: TMR1IF=0x00;
recarregamos o valor do timer 1 para se criar 500 pulsos para o estouro
TMR1L = 0X0C;
TMR1H = OXFE;
Invertemos a sada: outT1=~outT1
note que quando houver novo estouro que a sada ir se inverter novamente e isto lev
a 500 pulsos de 1ms = 500ms
Na funo principal primeiro habilitamos as interrupes necessrias
INTCON = OXC0; Habilita a interrupo global e dos perifricos
De forma direta habilitamos no PIE1 (pag 100 do datasheet) a interrupo do TIMER1:
TMR1IE_bit=0X01;
Vamos no registrador de controle do timer 1 - T1CON e ajustamos cada bit para o
que queremos
T1CON = 0X83;OB1000 0011
BIT7
RD16
Habilita modo 16 bits
BIT6
T1RUN
Clock a partir de outra fonte
BIT5-4 T1CKPS<1:0>
Prescaler 1:1
BIT3
TIOSCEN
Oscilador do timer1 desabilitado
BIT2
T1SYNC
Clock assncrono
BIT1
TMR1CS
Timer1 incrementa com borda de subida
BIT0
TMR1ON
Liga a contagem do TIMER1
Na rotina principal precisamos carregar o valor inicial do timer 1 para que cont
e 500 pulsos
Se o timer1 conta no modo 16 bits 65536 pulsos, ento se tirarmos 65036 ele conta
500 pulsos
se cada pulso tem o perodo de 1ms (frequencia externa em 1kHz), ento teremos 500ms
Equao do estouro:
Timer1_0vf=(contagem mxima - valor inicial) x prescaler do timer1 x perodo de cloc
k externo
Timer1_0vf=(65536-65036)x1x1xE10-3
Timer1_0vf=500ms
Configuramos os ports envolvidos, que no caso somente o PORTB
TRISB = 0X7F; O PORTB_RB7 = SADA, os demais como entrada 0B0111 1111
NO ESQUECER DAS FUNES ANALGICAS DO PORTB
Para isto atuamos na configurao do ADCON1
ADCON1=0X0F; Configura os pinos do PORTB como pinos digitais

Você também pode gostar