#include "Timer.h"

void InitTimer0 (void)
{

T0CONbits.TMR0ON = 0; //timer0 off

T0CONbits.T08BIT = 0; //timer de 16 bits

T0CONbits.T0CS = 0; //contador interno

T0CONbits.PSA = 0; //utilizar pre-escala

T0CONbits.T0PS2 = 0;
T0CONbits.T0PS1 = 0;
T0CONbits.T0PS0 = 0; //pre-escala de 1:2

//interrupt

INTCONbits.TMR0IF = 0; //coloca a flag do interrupt de timer a 0
INTCON2bits.TMR0IP = 1; //interrupts de timer de alta prioridade
INTCONbits.GIEH = 1; //activa os interrupts de alta prioridade
INTCONbits.GIEL = 0; //não activa os interrupts de baixa prioridade
INTCONbits.TMR0IE = 1; //activa o interrupt de timer

TMR0H = 195;
TMR0L = 80;
}

void InitTimer1 (void)
{

T1CONbits.TMR1ON = 0; //timer1 off

T1CONbits.RD16 = 1; //timer de 16 bits

T1CONbits.TMR1CS0 = 0;
T1CONbits.TMR1CS1 = 0; //contador interno

T1CONbits.T1OSCEN=1; //Timer1 oscillator activado

T1CONbits.T1CKPS0 = 1;
T1CONbits.T1CKPS1 =1; //pre-escala de 1:8

//interrupt

PIR1bits.TMR1IF = 0; //coloca a flag do interrupt de timer a 0
IPR1bits.TMR1IP = 1; //interrupts de timer de alta prioridade
INTCONbits.GIEH = 1; //activa os interrupts de alta prioridade
INTCONbits.GIEL = 0; //não activa os interrupts de baixa prioridade
PIE1bits.TMR1IE = 1; //activa o interrupt de timer

TMR1H = 255;
TMR1L = 255;

//T1CONbits.TMR1ON = 1; //timer1 on
}

void InitTimer2 (void){
	
T2CONbits.TMR2ON=0;

T2CONbits.T2OUTPS0=1;
T2CONbits.T2OUTPS1=1;
T2CONbits.T2OUTPS2=1;
T2CONbits.T2OUTPS3=1;

T2CONbits.T2CKPS0=0;
T2CONbits.T2CKPS1=1;

PIR1bits.TMR2IF = 0; //coloca a flag do interrupt de timer a 0
IPR1bits.TMR2IP = 1; //interrupts de timer de alta prioridade
INTCONbits.GIEH = 1; //activa os interrupts de alta prioridade
INTCONbits.GIEL = 0; //não activa os interrupts de baixa prioridade
PIE1bits.TMR2IE = 1; //activa o interrupt de timer

TMR2=0;
PR2=127;

T2CONbits.TMR2ON=1;
}

void InitTimer4 (void){
	
T4CONbits.TMR4ON=0;

T4CONbits.T4OUTPS0=1;
T4CONbits.T4OUTPS1=1;
T4CONbits.T4OUTPS2=1;
T4CONbits.T4OUTPS3=1;

T4CONbits.T4CKPS0=0;
T4CONbits.T4CKPS1=1;

PIR3bits.TMR4IF = 0; //coloca a flag do interrupt de timer a 0
IPR3bits.TMR4IP = 1; //interrupts de timer de alta prioridade
INTCONbits.GIEH = 1; //activa os interrupts de alta prioridade
INTCONbits.GIEL = 0; //não activa os interrupts de baixa prioridade
PIE3bits.TMR4IE = 1; //activa o interrupt de timer

TMR4=0;
PR4=127;
}	