SoloCodigo
Programación Específica => Microcontroladores => Mensaje iniciado por: Ingeniero en Domingo 16 de Septiembre de 2007, 19:42
-
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
-
"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.
-
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.
-
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.