; ;------------------------------------------------------------------- ;- ISR - ;------------------------------------------------------------------- ; ORG H'000' goto Inicio ; ORG H'004' ; Interrupciones ;interrupciones ; bcf INTCON,GIE ;Asegura la btfsc INTCON,GIE ;deshabilitacion goto Interrupciones ;global de las interrupciones ; ;Salva registros ; movwf SALVAW ;Salva W swapf STATUS,W ;Invierte STATUS --> W movwf SALVASTATUS ;Salva STATU ; ;Selector ; btfsc INTCON,T0IF ;? Hubo sobrefujo en TMR0 ? goto T0 ;Si btfsc INTCON,INTF ;? Hubo interrupcion en RB0 ? goto In ;Si btfsc INTCON,RBIF ;? Hubo algun cambio de RB4-RB7 ? goto Rb ;Si Ee bsf STATUS,RP0 ;Banco 1 bcf EECON1,EEIF ;Pone a cero el indicador para poder salir de la ISR bcf STATUS,RP0 ;Banco 0 goto RestaurarRegistros ;Retorna habilitando todas las interrupciones T0 bcf INTCON,T0IF ;Pone a cero el indicador para poder salir de la ISR goto RestaurarRegistros ;Retorna habilitando todas las interrupciones In bcf INTCON,INTF ;Pone a cero el indicador para poder salir de la ISR goto RestaurarRegistros ;Retorna habilitando todas las interrupciones Rb bcf INTCON,RBIF ;Pone a cero el indicador para poder salir de la ISR RestaurarRegistros swapf SALVASTATUS,W ;Invierte STATUS --> W movwf STATUS ;Restaura STATUS swapf SALVAW,F ;Invierte --> F swapf SALVAW,W ;Restaura W retfie ;Retorna habilitando todas las interrupciones