La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

MICROCONTROLADORES PIC

Presentaciones similares


Presentación del tema: "MICROCONTROLADORES PIC"— Transcripción de la presentación:

1 MICROCONTROLADORES PIC
TIMER0

2 MODULO 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 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 MODULO TIMER0 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 MODULO TIMER0

5 Modulo TIMER0

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

7 TIMER0 EN CCS 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 TIMER0 EN CCS SETUP_TIMER_0(MODO) OPTION_REG() RTCC_INTERNAL 00H
RTCC_EXT_L_TO_H 20H RTCC_EXT_H_TO_L 30H RTCC_DIV_1 08H RTCC_DIV_2 01H RTCC_DIV_4 02H RTCC_DIV_8 03H RTCC_DIV_16 04H RTCC_DIV_32 05H RTCC_DIV_64 RTCC_DIV_128 06H RTCC_DIV_256 07H

9 TIMER0 EN CCS 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 Uso del TIMER0 como temporizador
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 ESQUEMATICO

12 USO DEL TIMER0 COMO CONTADOR
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 ESQUEMATICO

14 CODIGO #include<16f628a.h> #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 "MICROCONTROLADORES PIC"

Presentaciones similares


Anuncios Google