Temporizador Timer 0

June 24, 2007 at 12:33 pm | Posted in Tutorial | 11 Comments

El Timer 0 es un modulo temporizador/contador de 8 bits que cuenta con un preescalador programable también de 8 bits. Puede funcionar como temporizador o como contador. En modo temporizador el valor del registro TMR0 se incrementa con cada ciclo de instrucción (o cada X ciclos dependiendo del preescalador). En modo contador el valor del registro TMR0 se incrementa en cada flanco (ascendente o descendente) del pin RA4/T0CKI. En ambos casos al desbordarse (pasar de 0xFF a 0x0) el registro TMR0 la bandera de interrupción del timer 0 (bit T0IF del registro INTCON) se pone a 1.

El modo temporizador se selecciona poniendo a cero el bit T0CS del registro OPTION. Poniendo a uno ese bit el modulo trabaja en modo
contador
, en este modo de operación además se debe seleccionar si el incremento se producirá en cada filo ascendente o descendente, al poner a cero el bit T0SE del registro OPTION se selecciona el filo ascendente.

El preescalador es compartido por el Timer 0 y por el Watchdog. Se asigna a un módulo o a otro mediante el bit PSA del registro OPTION. Poniendo el bit a 1 el preescalador se asigna al Watchdog y poniendolo a 0 el preescalador se asigna al Timer 0. El valor del preescalador se selecciona con los bits PS2:PS0 de la siguiente manera:

Lea el artículo completo en el blog Circuitos electronicos.

11 Comments »

RSS feed for comments on this post. TrackBack URI

  1. […] módulo al igual que el Timer 0 puede funcionar en modo temporizador y en modo contador. En modo temporizador el par de registros […]

  2. hola, tengo una duda: cuando quiero configurar el flanco activo que provocará la interrupción lo hago con el bit INTEDG o el bit TOSE del registro OPTION? cual es la diferencia entre uno y otro? eso, gracias chao

  3. Tal vez estás confundido. Si quieres tener una interrupción cada flanco ascendente debes poner a 1 el bit INTEDG del registro OPTION, con eso seleccionas la interrupción en el flanco ascendente del pin RB0, además debes poner en 1 el bit RBIE del registro INTCON para habilitar la interrupción RB0/INT y después poner en 1 el bit GIE del mismo registro INTCON para habilitar las interrupciones, solamente recuerda borrar el bit RBIF del registro INTCON antes de poner en 1 el bit GIE. Esos son los pasos que debes seguir para tener una interrupción en cada flanco ascendente en el pin RB0.

    Te dije que tal vez estás confundido porque el bit T0SE es para seleccionar el flanco ascendente o descendente que haría que el valor del registro TMR0 se incrementara en modo contador. El bit T0SE no genera ninguna interrupción al detectar el flanco ya que la interrupción del timer 0 se lleva a cabo cuando se presenta el desborde del registro TMR0.

    Espero que te haya quedado claro la diferencia. Para lo que tu quieres hacer debes usar la interrupción externa RB0/INT siguiendo los pasos que escribí al principio.

  4. No me funciona el progrma de lectura de botones del puerto A; Tendre que configurar algo?

  5. Gracias!

  6. esta es la mejor,cencilla y mas completa descripcion que e leido, se entiende muy bien, muchas gracias, me gustaria si tienes un website me lo mandes a mi mail porfavor.
    el de el timer 1 es muy bueno tambien.

  7. Disculpa mi ignorancia ya me di cuenta de que todo el citio es tuyo muchisimas gracias por tam buena informacion

  8. Hola!! Muchas gracias por la forma como explicas esto, es realmente facil de entender y ayuda a aclarar las dudas que te quedan al leer los datasheets.

    Sin embargo tengo una dudad, en la fórmula (Tinstrucción = 4/frecuencia de oscilación) Tinstr se refiere al tiempo q demora un ciclo de reloj? No seria Tinst = 1/FrecClk?

  9. tengo una duda similar a Blanco86 el Tinstruccion es 1/frecclock y debo multiplicarlo por el numero d instrucciones. no es cierto? q en este caso era 4

  10. Buenos días.
    engo un inconveniente con el PIC16F887, no he logrado inicializar el Timer0 o ninguno de los otros dos timers. No se si se deba a la falta de algún código en ASM. Estoy trabajando en Mikroc sin registrar, no se si también se pueda deber a esto.

    • Les agradezco cualquier información que me puedan suministrar respecto a esto.


Leave a comment

Blog at WordPress.com.
Entries and comments feeds.