• Domingo 22 de Diciembre de 2024, 23:46

Autor Tema:  Interrupciones  (Leído 1714 veces)

Ingeniero

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Interrupciones
« en: Domingo 16 de Septiembre de 2007, 19:42 »
0
Bueno, siguiendo con mi proyecto, despues de ver que funcionaba el lcd y el teclado, me toca meterme con las interrupciones  :unsure:  :unsure:

yo quiero activar las interrupciones de desbordamiento del timer y de cambio del puerto RB para lo que utilizo

movlw   b'10101000'   
movwf   INTCON   

despues en el servicio de interrupcion, miro quien me proboca esa interrupcion

btfsc   INTCON,RBIF   
call   INTERRUPCION_TECLADO
btfsc   INTCON,T0IF
call   INTERRUPCION_TIMER

lo que pasa es  que solo se me activa la del timer continuamente, y esa solo quiero que se active cuando no este pulsado el boton de 'modo teclado'

el timer debe actuar cada 2sg.

no se como solucionarlo, he probado de todo pero nada, siempre que se activa las interrupciones es la misma, alguien me echa una mano??

subo el programa
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Interrupciones
« Respuesta #1 en: Domingo 23 de Septiembre de 2007, 23:20 »
0
"lo que pasa es que solo se me activa la del timer continuamente, y esa solo quiero que se active cuando no este pulsado el boton de 'modo teclado'"

Hola. ¿puedes explicarlo un poco mas extendido? No entiendo mucho de pics, pero de interrupciones un rato.
Saludos.

Ingeniero

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Interrupciones
« Respuesta #2 en: Lunes 24 de Septiembre de 2007, 12:12 »
0
lo explico un poco más

lo que quiero hacer es lo siguiente:

yo tengo un sensor de temperatura digital,un teclado y un boton,

En modo normal de funcionamineto, sin que el boton este pulsado, quiero que el sensor, cada 2 segundos, me presente en pantalla la temperatura, para lo que utilizo el timer0, y no este activado el teclado (el teclado lo controlo con una interrupcion de cambio de los pines del puerto B),
 si esta pulsado el boton, quiero que se desactive el timer0 y pueda manejar el teclado con la interrucpion de cambio de pines.

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Interrupciones
« Respuesta #3 en: Lunes 24 de Septiembre de 2007, 14:35 »
0
Me parece que en la rutina de atencion del boton lo primero que tienes que hacer es deshabilitar la interrupcion por timer0. No se si en los pics se podra hacer asi, pero en mips deberias leer el registro INTCON, hacerle una operacion and con el bit a 0 del timer0 y todos los demas a 1 (esto hace que se ponga a 0 si esta a uno y no modifica los demas) y lo vuelves a guardar en el registro INTCON.
Espero que te sirva de ayuda.
Saludos.