Você está na página 1de 1

#include <pic16f84a.

h>

int c=0; //contador

void main() {
TRISB = 0; //todas os pinos da porta B s�o sa�das
PORTB = 0; //todas os pinos da porta B come�am em 0

/* Fazendo
* (256-TMR0)*Prescaler*Ciclo de m�quina = Novo ciclo
*
* Tomando o novo ciclo em 0,001 segundos ent�o e a frequ�ncia de opera��o
* em 8MHz
*
* Ciclo de m�quina = 4/8000000
*
* (256-TMR0)*Prescaler = 0,001*8000000/4 = 2000
*
* � importante escolher o valor de prescaler para que o lado direito da
* equa��o seja inteiro e menor que 256. Fazendo uma divis�o de frequ�ncia
* 1:8 � o suficiente, nesse caso.
*
* (256-TMR0)=2000/8
* TMR0 = 256 - 250
*
* TMR0 = 6;
*/

OPTION_REG = 0b00100010; //setando TIMER 0 com divisor de frequ�ncia 1:8 e com


clock externo
TMR0 = 6;

while(1){
if (T0IF){ //se o temporizador gerou overflow
T0IF = 0; //reinicia o temporizador
TMR0 = 6;
c++; //contagem do n�mero de overflows
if (c==500){ //500 x 0,001 = 0,5 segundos - tempo desejado de delay
PORTB++;
c=0; //reinicia o contador
}
}
}
}

Você também pode gostar