La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

TIMER0. Es un modulo contador/temporizador de 8 BITs, que cuenta con un preescalador programable de 8 BITs Puede funcionar como temporizador o como contador.

Presentaciones similares


Presentación del tema: "TIMER0. Es un modulo contador/temporizador de 8 BITs, que cuenta con un preescalador programable de 8 BITs Puede funcionar como temporizador o como contador."— Transcripción de la presentación:

1 TIMER0

2 Es un modulo contador/temporizador de 8 BITs, que cuenta con un preescalador programable de 8 BITs Puede funcionar como temporizador o como contador En modo temporizador el modulo Timer0 se incrementa con cada ciclo de instrucción. En el modo contador el modulo timer0 se incrementa en cada flanco (ascendente o descendente) del pin RA4/TOCKI. En ambos casos al desbordarse (pasar de FF A 00) el modulo timer0 genera una interrupción.

3 EL REGISTRO OPTION. El registro OPTION (o registro de opciones) se emplea para programar las opciones del temporizador TMR0, el tipo de flanco con el que se detecta una interrupción y la activación de las resistencias de polarización del puerto B. Ocupa la posición 81h de la página 1 del banco de registros. Debe escribirse usando la instrucción especial OPTION. Esta instrucción carga el contenido de W en el registro OPTION. si el BIT TOCS del registro OPTION es cero entonces se trabaja en modo temporizador. si el BIT TOCS del registro OPTION es uno entonces se trabaja en modo contador. En el modo contador se puede seleccionar si el incremento se producirá en un flanco de subida o en un flanco de bajada, mediante el BIT TOSE del registro OPTION. El Preescaler es compartido por el TIMER0 y por el WATCHDOG, se asigna a un modulo o a otro mediante el BIT PSA del registro OPTION. El valor del preescaler se selecciona con los BITS PS0:PS2.

4

5

6 El tiempo de desbordamiento del TIMER0, se halla de acuerdo a la siguiente formula. T=T CM *PRESCALER*(256-carga TIMER0) T CM =4/F OSC=CICLO DE MAQUINA.

7 SETUP_TIMER_0(MODO).- establece la fuente de reloj, el preescaler, etc. para el TIMER0; donde MODO esta definido en el fichero de cabecera, estos afectan a los BITs 0:5 del registro OPTION.

8 SETUP_TIMER_0(MODO)OPTION_REG() RTCC_INTERNAL00H RTCC_EXT_L_TO_H20H RTCC_EXT_H_TO_L30H RTCC_DIV_108H RTCC_DIV_201H RTCC_DIV_402H RTCC_DIV_803H RTCC_DIV_1604H RTCC_DIV_3205H RTCC_DIV_6405H RTCC_DIV_12806H RTCC_DIV_25607H

9 Estos distintos modos se puede agrupar usando el símbolo | Setup_timer_0(RTCC_DIV_2|RTCC_INTERNAL|RTCC_8_BIT); SET_TIMER0() Fija el valor inicial del TIMER0 para que empiece la cuenta. SET_TIMER0(15); VALUE=GET_TIMER0(); Lee el valor actual del Timer0;

10 Generar una señal cuadrada de 62.5Hz utilizando la interrupción del TIMER0 Se necesita un semiperiodo de 8mS, por lo tanto, utilizando la siguiente formula: T=TCM*PRESCALER*(256-carga TIMER0) 8ms=4/(4MHZ)*2*(256-X) X=?

11

12 Hacer parpadear un LED conectado al PIN_B0 cada 500mS y ademas hacer cambiar de estado a un led conectado al PIN_B1 cada tres pulsos que ingresan por RA4. Solucion: El timer0 es un registro de 8 bit que puede contar hasta 256, para que se desborde con tres pulsos se le cargara con 253.

13

14 #include #fuses xt,nowdt,protect #use delay(clock=4Mhz) #INT_TIMER0 void isr_timer0(){ //rutina de atencion a la interrupcion del timer0 output_toggle(PIN_B1); //invirtiendo el estado del pin b1 set_timer0(253); //cargando el timer0 con 253 } void main(){ setup_timer_0(RTCC_EXT_H_TO_L|RTCC_DIV_1); //timer0 como contador enable_interrupts(INT_TIMER0); //habilitacion de la interrupcion timer0 enable_interrupts(GLOBAL); //habilitacion global de interrupcion set_timer0(253); //se carga el registro timer0 con 253 while(true){ output_toggle(PIN_B0); //parpadeo de led delay_ms(500); }


Descargar ppt "TIMER0. Es un modulo contador/temporizador de 8 BITs, que cuenta con un preescalador programable de 8 BITs Puede funcionar como temporizador o como contador."

Presentaciones similares


Anuncios Google