Programación Específica > Microcontroladores
Interrupciones 16f877
(1/1)
TeEstoyMirando:
Hola amigos. Les voy a comentar un problema el cual no se solucionar.
Estoy desarrollando un controlador en el cual utilizo la interrupcion comprendida entre el RB4 Y RB7.
Cuando entra en la interrupcion deseo que me ponga a cero el bit cero RBIF del registro INTCON pero no hay manera. No realiza la operacion.
No entiendo porque no soy capaz de ponerlo a cero si en el mismo manual del controlador dice que para cambiar su valor se realiza mediante software.
La simulacion la realiza con cualquier bit del RB4-RB7 utilizando un escenario y el pulsador TOOGLE
El codigo del programa resumido es este:
--- Código: Text --- LIST P=16f877; Tipo del PIC STATUS EQU 03 INTCON EQU 0B PORTB EQU 06 TRISB EQU 06 ORG 00 GOTO INICIO ORG 04 GOTO INTER ORG 05 INICIO BSF STATUS,5 MOVLW 0XFF MOVWF TRISB; Configurar Puerto B BSF INTCON,3; Interrupcion RB47 BSF INTCON,7; Interrupcion General. BCF STATUS,5 INICIO2 SLEEP NOP NOP NOP GOTO INICIO2 INTER BCF INTCON,0;NO ME LA REALIZA....!!!!!! BSF INTCON,7 RETURN; He probado con RETFIE END
No tengo ni idea de a que se debe pero tiene toda la pinta de ser una tonteria pero no doy con ello.
lalo_soft:
En vez de borrar directamente el INTCON,0 lee el puerto B (ej: MOVF portB,f) eso borrara el bit por hardware.
Saludos
TeEstoyMirando:
Muchisimas gracias !!!!
Pongo la instruccion "MOVF portB,f" delante del borrado del intcon y plas!! me la borra.
Vaya favor que me haces. Me estaba volviendo loco.
Un saludo.
lalo_soft:
Te aconsejo borrar el bit al final de la rutina de interrupcion para que no generar loop de intrrupcion indeseados
Alternative:
Saludos
Pues que bueno que lalo_soft te ayudara, nadamas te doy unos errores que tienes, que espero te sirvan, cuando realizas una interrupcion se regresa con retfie, no con return, y cuando el colocas el dato de PORTB,f, en realidad es PORTB,0 o PORTB,W
LIST P=16f877; Tipo del PIC
STATUS EQU 03
INTCON EQU 0B
PORTB EQU 06
TRISB EQU 06
ORG 00
GOTO INICIO
ORG 04
GOTO INTER
ORG 05
INICIO BSF STATUS,5
MOVLW 0XFF
MOVWF TRISB ; Configurar Puerto B
BSF INTCON,3 ; Interrupcion RB47
BSF INTCON,7 ; Interrupcion General.
BCF STATUS,5
INICIO2 SLEEP NOP
NOP
NOP
GOTO INICIO2
INTER MOVF PORTB,0
BCF INTCON,0 ;NO ME LA REALIZA....!!!!!!
BSF INTCON,7
RETfIE ; He probado con RETFIE
END
Navegación
Ir a la versión completa