• Viernes 3 de Mayo de 2024, 00:36

Autor Tema:  problema de codigo fuente  (Leído 2223 veces)

damian_ayalazubrin

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
problema de codigo fuente
« en: Lunes 9 de Febrero de 2009, 17:04 »
0
hola soy nuevo en el mundo de los pic. yo suelo programar en c y c++ pero no me llevo muy bien con el ASM.
estoy trabajando con un pic 16f84 y lo que tengo que hacer es aplicar una rutina si se pulsa un pulsador y aplicar una rutina diferente si el pulsador permanece precionado por 0.5 seg.
el problema con el que me encuentro es que este pic puede atender solo una interrupcion, la verdad es que se me complico mas de lo que pensaba, ya que la logica a la que estoy acostumbrado no se aplica de la misma forma en este caso.

help please
de antemano muchas gracias.

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: problema de codigo fuente
« Respuesta #1 en: Miércoles 18 de Febrero de 2009, 16:29 »
0
Hola, es un placer poder ayudarte. Lo puedes hacer con la interrupcion del timer0 y colocando el pulsador en una de las lineas del RB4-7. Cuando pulse el pulsador entra en la interrupcion del pulsador, esperas 20ms para el antirebote y miras si el pin esta a 0 o a 1 (pulsado o no), si esta pulsado, pones a funcionar el timer0 lo mas lento posible, habilitas su interrupcion, reseteas el valor del timer (TMR0) y pones un contador a decrementar, si el cristal es de 4mhz saltara la interrupcion del timer0 15 veces por segundo, entonces para 0.5s tiene que estar mas o menos a 7 el contador. Cada vez que salte la irq del timer decrementas el contador y sales, y cuando el contador este a 0 entonces desactivas la TOIF y los demas registros del timer no te preocupes.
Cuando suelte el pulsador entrara en la rutina de atencion de nuevo por cambio de estado en las lineas del RB4-7 y miras si la interrupcion del timer esta activada (bit T0IF a 1) eso significa que no ha pasado el medio segundo y por lo tanto es una pulsacion rapida. Si por contrario cuando entre al soltar el pulsador el timer ya esta apagado, es que ha pasado medio segundo desde que se pulso y por lo tanto es una pulsacion larga.

Espero que te sirva.

Un saludo.

damian_ayalazubrin

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: problema de codigo fuente
« Respuesta #2 en: Jueves 19 de Febrero de 2009, 16:11 »
0
Hola, has sido super claro y si!!!!! funciona a la perfeccion, muchisimas gracias.
al ayudarme me abriste la mente, estaba bloqueado con este problema, yo habia empezado a hacerlo y me di cuenta que no funcionaba. el simple hecho de leer el bit TOIF era la clave

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: problema de codigo fuente
« Respuesta #3 en: Jueves 19 de Febrero de 2009, 19:48 »
0
De nada majo, a mandar!!

Saludos.