Escolar Documentos
Profissional Documentos
Cultura Documentos
-> O timer0 possui um registrador TMR0 que conta de 0 at 255. Quando esse registrador chega em 255 e incrementa mais uma unidade, a interrupo do timer0 ativada. -> O prescaler determina quantas bordas vo incrementar o registrador TMR0 em 1 unidade -> Quando se escolhe a frequncia do oscilador de clock do microcontrolador como a frequncia de operao do timer0, importante ressaltar que o timer0 divide essa frequncia por 4. Ex.: se a frequncia do clock do microcontrolador de 4MHz e se escolhe a frequncia do timer0 como sendo essa, ele divide essa frequncia por 4, que resulta em 1MHz, e utiliza esse 1MHz de frequncia como frequncia de operao. -> Assim, o tempo necessrio para que a interrupo seja chamada : T = (4*prescaler*(256-TMR0))/frequencia_microcontrolador
*/
// reinicia o timer0 em 0 set_timer0(0); conta++; printf("\n\r Interrupo # %d", conta); if (conta == 61) // se j ocorreram 61 interrupes { conta = 0; //reseta a varivel contadora
printf("\n\r Contou 4 segundos!"); if(estado==1){ output_low(pin_d7); estado=0; }else if(estado==0){ output_high(pin_d7); estado=1; }
/* finterna=fexterna/4 T=1/f Prescaler = a cada valor de prescaler de pulsos de clock incrementa 1 na varivel at 256 quando chama a interrupo 256*prescaler*T=tempo para interrupo */
void main(){
output_high(pin_d7);
while(true); }