
wsave   var     byte $20 system
'wsave1  var     byte $a0 system ' Necessary for devices with RAM in bank1
'wsave2  var     byte $120 system ' Necessary for devices with RAM in bank2
'wsave3  var     byte $1a0 system ' Necessary for devices with RAM in bank3
ssave   var     byte bank0 system
psave   var     byte bank0 system

' INYECTO UNA SEŅAL CUADRADA EN EL PIN RC0     
    
DEFINE OSC 20

DEFINE LCD_DREG PORTB 
DEFINE LCD_DBIT 0 
DEFINE LCD_RSREG PORTB 
DEFINE LCD_RSBIT 5 
DEFINE LCD_EREG PORTB 
DEFINE LCD_EBIT 4
DEFINE LCD_LINES 2

Sobreflujo var word 'Registro de sobreflujo
Contador var word   'variable a incrementar

TMR1L = 0 
TMR1H = 0

INTCON = %11000000  'prende las interrupciones globales y perifericas
T1CON = %00000001   'prende el TMR1 y habilita el pin RC0 como fuente ext. de reloj 

PIE1.0 = 1          'habilita interrupcion periferica de superflujo de TMR1
PIR1.0 = 0          'limpia bandera de superflujo de TMR1

        Goto start              ' Skip around interrupt handler

' Define interrupt handler
define  INTHAND myint

' Assembly language interrupt handler
asm

; Save W, STATUS and PCLATH registers, if not done previously
myint   movwf   wsave
        swapf   STATUS, W
        clrf    STATUS
        movwf   ssave
        movf    PCLATH, W
        movwf   psave

; Insert interrupt code here
; Save and restore FSR and any other registers used

        incf    _Sobreflujo     ; If interrupt, incrementa el registro
        bcf     PIR1,1          ; Clear interrupt flag

; Restore saved registers
        movf    psave, W
        movwf   PCLATH
        swapf   ssave, W
        movwf   STATUS
        swapf   wsave, F
        swapf   wsave, W

        retfie                  ; Return from interrupt

endasm

  pause 400

start:
  Contador.lowbyte = TMR1L 
  contador.Highbyte = TMR1H
  
  Lcdout $FE,1,"Contador: ",dec contador
  lcdout $FE,$C0,"Sobreflujo: ",dec sobreflujo
        Goto    start           ' Start over (turn LED back on)
        
end
