;------------------------------------------------------------
; Código assembler generado por Niple V5.6.0
; Proyecto: Interrupcion_00
; Autor: NipleSoft
; Fecha: 07/01/2012
; PIC: 18F4550
; Velocidad de reloj: 20 Mhz
; Descripcion: 
;------------------------------------------------------------


 LIST    P=PIC18F4550


_PLLDIV_1             equ  0xF8
_CPUDIV_OSC1_PLL2     equ  0xE7
_USBDIV_1             equ  0xDF
_FOSC_HS              equ  0xFC
_FCMEN_OFF            equ  0xBF
_IESO_OFF             equ  0x7F
_PWRT_ON              equ  0xFE
_BOR_OFF              equ  0xF9
_BORV_0               equ  0xE7
_VREGEN_ON            equ  0xFF
_WDT_OFF              equ  0xFE
_WDTPS_1              equ  0xE1
_MCLRE_ON             equ  0xFF
_LPT1OSC_OFF          equ  0xFB
_PBADEN_OFF           equ  0xFD
_CCP2MX_OFF           equ  0xFE
_LPT1OSC_OFF          equ  0xFB
_STVREN_OFF           equ  0xFE
_LVP_OFF              equ  0xFB
_ICPRT_OFF            equ  0xDF
_XINST_OFF            equ  0xBF
_DEBUG_OFF            equ  0xFF
_CP0_OFF              equ  0xFF
_CP1_OFF              equ  0xFF
_CP2_OFF              equ  0xFF
_CP3_OFF              equ  0xFF
_CPB_OFF              equ  0xFF
_CPD_OFF              equ  0xFF
_WRT0_OFF             equ  0xFF
_WRT1_OFF             equ  0xFF
_WRT2_OFF             equ  0xFF
_WRT3_OFF             equ  0xFF
_WRTB_OFF             equ  0xFF
_WRTC_OFF             equ  0xFF
_WRTD_OFF             equ  0xFF
_EBTR0_OFF            equ  0xFF
_EBTR1_OFF            equ  0xFF
_EBTR2_OFF            equ  0xFF
_EBTR3_OFF            equ  0xFF
_EBTRB_OFF            equ  0xFF
_config1l             equ  0x300000
_config1h             equ  0x300001
_config2l             equ  0x300002
_config2h             equ  0x300003
_config3h             equ  0x300005
_config4l             equ  0x300006
_config5l             equ  0x300008
_config5h             equ  0x300009
_config6l             equ  0x30000a
_config6h             equ  0x30000b
_config7l             equ  0x30000c
_config7h             equ  0x30000d

 __config _config1l, _PLLDIV_1 & _CPUDIV_OSC1_PLL2 & _USBDIV_1
 __config _config1h, _FOSC_HS & _FCMEN_OFF & _IESO_OFF
 __config _config2l, _PWRT_ON & _BOR_OFF & _BORV_0 & _VREGEN_ON
 __config _config2h, _WDT_OFF & _WDTPS_1
 __config _config3h, _MCLRE_ON & _LPT1OSC_OFF & _PBADEN_OFF & _CCP2MX_OFF
 __config _config4l, _STVREN_OFF & _LVP_OFF & _ICPRT_OFF & _XINST_OFF & _DEBUG_OFF
 __config _config5l, _CP0_OFF & _CP1_OFF & _CP2_OFF & _CP3_OFF
 __config _config5h, _CPB_OFF & _CPD_OFF
 __config _config6l, _WRT0_OFF & _WRT1_OFF & _WRT2_OFF & _WRT3_OFF
 __config _config6h, _WRTB_OFF & _WRTC_OFF & _WRTD_OFF
 __config _config7l, _EBTR0_OFF & _EBTR1_OFF & _EBTR2_OFF & _EBTR3_OFF
 __config _config7h, _EBTRB_OFF


;------------------------------------------------------------
;                  Declaración de Registros
;------------------------------------------------------------
w                     equ  0x0000
_np_w                 equ  0x0000
_np_status            equ  0x0001
_np_tiempo            equ  0x0005
_np_tiempo1           equ  0x0006
_np_tiempo2           equ  0x0007
_np_tiempo3           equ  0x0008
_np_t_bak             equ  0x0009
_np_t1_bak            equ  0x000a
_np_t2_bak            equ  0x000b
_np_t3_bak            equ  0x000c
led_b7                equ  0x000d
led_b6                equ  0x000e
led_b5                equ  0x000f
_np_banderas2         equ  0x0012
porta                 equ  0x0f80
portb                 equ  0x0f81
portc                 equ  0x0f82
portd                 equ  0x0f83
porte                 equ  0x0f84
lata                  equ  0x0f89
latd                  equ  0x0f8c
late                  equ  0x0f8d
trisa                 equ  0x0f92
trisb                 equ  0x0f93
trisc                 equ  0x0f94
trisd                 equ  0x0f95
trise                 equ  0x0f96
adcon2                equ  0x0fc0
adcon1                equ  0x0fc1
adcon0                equ  0x0fc2
rcon                  equ  0x0fd0
status                equ  0x0fd8
bsr                   equ  0x0fe0
intcon3               equ  0x0ff0
intcon2               equ  0x0ff1
intcon                equ  0x0ff2
pclath                equ  0x0ffa


;------------------------------------------------------------
;                  Declaración de Bits
;------------------------------------------------------------
adon                  equ  0   ;
c                     equ  0   ;
gie                   equ  7   ;
int0ie                equ  4   ;
int0if                equ  1   ;
int1ie                equ  3   ;
int1if                equ  0   ;
int1ip                equ  6   ;
int2ie                equ  4   ;
int2if                equ  1   ;
int2ip                equ  7   ;
intedg0               equ  6   ;
intedg1               equ  5   ;
intedg2               equ  4   ;
ipen                  equ  7   ;
rb5                   equ  5   ;
rb6                   equ  6   ;
rb7                   equ  7   ;
vcfg0                 equ  4   ;
vcfg1                 equ  5   ;
z                     equ  2   ;
sub_inte              equ  0   ;bandera de subrrutina cancelada por interrupcion.


;------------------------------------------------------------
;               Declaración de Registros EEPROM
;------------------------------------------------------------


;------------------------------------------------------------
;                        Inicio
;------------------------------------------------------------

   org 0x00
   goto paso2
   org 0x08
   movwf _np_w,1
   swapf _np_w,1,1
   movf status,w,0
   movlb .0                         ;cambiar al banco 0
   movwf _np_status,1
   movlb .0                         ;cambiar al banco 0
   movf _np_tiempo,w,1
   movwf _np_t_bak,1
   movf _np_tiempo1,w,1
   movwf _np_t1_bak,1
   movf _np_tiempo2,w,1
   movwf _np_t2_bak,1
   movf _np_tiempo3,w,1
   movwf _np_t3_bak,1
   btfsc intcon,int0if,0
   goto inte_rb0
   btfsc intcon,int1if,0
   goto inte_rb1
   btfsc intcon,int2if,0
   goto inte_rb2
salir_interrupcion
   movlb .0                         ;cambiar al banco 0
   bsf _np_banderas2,sub_inte,1     ;activar la bandera de rutina cancelada por interrupcion
   movlb .0                         ;cambiar al banco 0
   movf _np_t_bak,w,1
   movwf _np_tiempo,1
   movf _np_t1_bak,w,1
   movwf _np_tiempo1,1
   movf _np_t2_bak,w,1
   movwf _np_tiempo2,1
   movf _np_t3_bak,w,1
   movwf _np_tiempo3,1
   movf _np_status,w ,1
   movwf status,0
   swapf _np_w,w ,1
   retfie


   ;------------------------------------------------------------
   ;                      inicio de la interrupción por rb0
   ;------------------------------------------------------------
inte_rb0_salir
   bcf intcon,int0if,0
   goto salir_interrupcion
inte_rb0

   movlb .0                         ;cambiar al banco 0
   incf led_b7,1,1                  ;led_b7 = led_b7 + 1
inte_rb03
   goto inte_rb0_salir

   ;------------------------------------------------------------
   ;                      inicio de la interrupción por rb1
   ;------------------------------------------------------------
inte_rb1_salir
   bcf intcon3,int1if,0
   goto salir_interrupcion
inte_rb1

   movlb .0                         ;cambiar al banco 0
   incf led_b6,1,1                  ;led_b6 = led_b6 + 1
inte_rb13
   goto inte_rb1_salir

   ;------------------------------------------------------------
   ;                      inicio de la interrupción por rb2
   ;------------------------------------------------------------
inte_rb2_salir
   bcf intcon3,int2if,0
   goto salir_interrupcion
inte_rb2

   movlb .0                         ;cambiar al banco 0
   incf led_b5,1,1                  ;led_b5 = led_b5 + 1
inte_rb23
   goto inte_rb2_salir

;------------------------------------------------------------
;                      programa principal
;------------------------------------------------------------
paso2
   clrf _np_w,1
   movlb .0                         ;cambiar al banco 0
   clrf _np_status,1
   clrf _np_tiempo,1
   clrf _np_tiempo1,1
   clrf _np_tiempo2,1
   clrf _np_tiempo3,1
   clrf _np_t_bak,1
   clrf _np_t1_bak,1
   clrf _np_t2_bak,1
   clrf _np_t3_bak,1
   clrf led_b7,1
   clrf led_b6,1
   clrf led_b5,1
   clrf _np_banderas2,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf porta,0
   clrf porte,0
   movlw b'00000000'                ;configurar el puerto e como xxxxxsss
   movwf trise,0
   movlw b'00000000'                ;configurar el puerto a como xxssssss
   movwf trisa,0
   movlw b'00001111'                ;puerto a/e = e/s digital
   movwf adcon1,0
   clrf portb,0
   movlw b'00000111'                ;configurar el puerto b como ssssseee
   movwf trisb,0
   movlw b'00110000'                ;configurar el puerto c como sseexsss
   movwf trisc,0
   movlw b'00000000'                ;configurar el puerto d como ssssssss
   movwf trisd,0
   bcf portb,rb7,0
   bcf portb,rb6,0
   bcf portb,rb6,0
   clrf led_b7,1
   clrf led_b6,1
   clrf led_b5,1
   bsf intcon2,intedg0,0            ;interrupción rb0. flanco_asc.
   bsf intcon2,intedg1,0            ;interrupción rb1. flanco_asc.
   bsf intcon3,int1ip,0             ;interrupción rb1. alta prioridad.
   bsf intcon2,intedg2,0            ;interrupción rb2. flanco_asc.
   bsf intcon3,int2ip,0             ;interrupción rb2. alta prioridad.
   bsf rcon,ipen,0                  ;desactivar bit de habilitacion de prioridades de interrupciones.
   bsf intcon,gie,0                 ;activar habilitador general de interrupciones.
   bsf intcon,int0ie,0              ;activar interrupción por int. 0
   bsf intcon3,int1ie,0             ;activar interrupción por int. 1
   bsf intcon3,int2ie,0             ;activar interrupción por int. 2
control
   movf led_b7,w,1                  ;si el reg led_b7 = d'5'
   xorlw d'5'
   btfss status,z,0
   goto paso20
   bsf portb,rb7,0
   clrf led_b7,1
   movlw .5                         ;temporizador 1 seg
   call tmp_1_mgc                   ;llamada a rutina tmp_1_mgc
   goto control
   goto control
paso20
   movf led_b6,w,1                  ;si el reg led_b6 = d'10'
   xorlw d'10'
   btfss status,z,0
   goto paso25
   bsf portb,rb6,0
   clrf led_b6,1
   movlw .5                         ;temporizador 1 seg
   call tmp_1_mgc                   ;llamada a rutina tmp_1_mgc
   goto control
   goto control
paso25
   movf led_b5,w,1                  ;si el reg led_b5 = d'15'
   xorlw d'15'
   btfss status,z,0
   goto paso30
   bsf portb,rb5,0
   clrf led_b5,1
   movlw .5                         ;temporizador 1 seg
   call tmp_1_mgc                   ;llamada a rutina tmp_1_mgc
   goto control
   goto control
paso30
   bcf portb,rb7,0
   bcf portb,rb6,0
   bcf portb,rb5,0
   goto control
   goto control


;------------------------------------------------------------
;                  Declaración de Subrutinas
;------------------------------------------------------------

tmp_1_mgc
   movwf _np_tiempo,1
   goto tmp_1_mgc_1
tmp_1_mgc_bucle2
   nop
   nop
   nop
   nop
   nop
   nop
   nop
tmp_1_mgc_1
   movlw .10
   movwf _np_tiempo1,1
tmp_1_mgc_bucle1
   nop
   nop
   movlw .99
   movwf _np_tiempo2,1
tmp_1_mgc_bucle0
   nop
   nop
   nop
   movlw .200
   movwf _np_tiempo3,1
tmp_1_mgc_bucle
   nop
   nop
   decfsz _np_tiempo3,1,1
   goto tmp_1_mgc_bucle
   nop
   nop
   nop
   decfsz _np_tiempo2,1,1
   goto tmp_1_mgc_bucle0
   nop
   nop
   nop
   decfsz _np_tiempo1,1,1
   goto tmp_1_mgc_bucle1
   decfsz _np_tiempo,1,1
   goto tmp_1_mgc_bucle2
   return



;------------------------------------------------------------
;                  DATOS EN MEMORIA EEPROM
;------------------------------------------------------------
   org  0xf00000
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff

 End