Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿Cómo inicializar TMR0 del microcontrolador pic16f877? ¿Cómo cronometrar 1 segundo usando TMRO?

¿Cómo inicializar TMR0 del microcontrolador pic16f877? ¿Cómo cronometrar 1 segundo usando TMRO?

/************************?

Foro:

Autor:hnrain?

Fecha:2010-12-28?

Correo electrónico:hnrain1004@gmail.com?

********************* *** *******?

Cuando TMR0 se utiliza como temporizador, el reloj del temporizador = reloj del sistema/4;?

Escribir en TMR0 producirá un retraso de 2 ciclos. Si no se utiliza el preescalador, ¿se puede configurar?

¿El valor inicial se puede configurar mediante

Por ejemplo,?Cuando se requieren 200 ciclos de reloj, TMR0=?256?-200?+?2=?58

OPTION_REG:

bit5?T0CS:TMR0?Clock ?Source? Select?bit

1?=?T0CKI?PIN

0=Reloj de ciclo de instrucción interno (CLKO)

Bit 4T0SE:TMR0: Borde de fuente bit de selección

1=El incremento cuando el pin T0CKI pasa de nivel alto a nivel bajo

0=El incremento cuando el pin T0CKI pasa de nivel bajo a nivel alto

1=Incremento en la transición de bajo a alto en el pin T0CKI

Bit 3PSA: ¿bit de asignación del preescalador

1? =? ¿Prescaler asignado a WDT

0? =? ¿Prescaler asignado al módulo del temporizador 0

bit2-0? Seleccione "Bit"

Recomendación: si desea utilizar TMR0 para una sincronización precisa, no escriba ninguna escritura en TMR0 después de usar el preescalador.

Nota: Al consultar la interrupción TMR0 en la rutina del servicio de interrupción, consulte el bit T0IE y el bit T0IF al mismo tiempo.

************************/?

#include??

#include?/head/config.h"

__CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);?

//Oscilación HS, desactivar el mecanismo de vigilancia, desactivar la programación de bajo voltaje, retardo de inicio temporizador

uint16?count?=?0;?

void.main(void)?

{?

PSA?= ?1;//prescaler asignado a WDT

T0CS?=?0;//?Reloj de período interno

GIE=?1;//Habilitación de interrupción global

T0IE=?1;//Activación de interrupción TMR0

PORTD=?

TRISD?=?0x00;

while(1 )?

{}?

}

¿nulo?

{?

si(T0IE?&& ?T0IF)?

{?

T0IF?

cuenta++;?

si(cuenta?==?1000)?

{?

count?=?0;?

PORTD?=?~PORTD;?

}?

TMR0? =?TMR0?+?58;?

}?

}.