
        ;DEFINE  SFRs RELATED TO TIMER2
	
        T2MOD EQU 0C9H	;
        T2CON EQU 0C8H	;
        RCAP2H EQU 0CBH	;
        RCAP2L EQU 0CAH	;
        TL2 EQU 0CCH	;
        TH2 EQU 0CDH	;
        CTR EQU 2AH	; USED AS COUNTER FOR T2 INTERRUPT
        TR2 BIT 0CAH	;
        EXF2 BIT 0CEH	;
        TF2 BIT 0CFH	;
;***********************************************************************
;***********************************************************************	
                ORG 0000H	;
                LJMP BOOT	; INITIALIZATION

                ORG 002BH	; 
                SJMP ISR_T2	; JUMP TO ISR_T2
		
                ORG 0030H       ; INTERRUPT SERVICE ROUTINE FOR T2
ISR_T2:         PUSH PSW        ;
                CLR TR2	        ; STOP TIMER2 
                CLR TF2	        ; CLEAR TIMER2 FLAG
                CLR EXF2        ; (CLR EXF2 => T2CON.6)
                DJNZ CTR, EXIT  ; DON'T CALL INPUTS SUBROUTINE UNLESS COUNTER=0
                                ; CTR IS USED AS COUNTER 
                ACALL INPUTS    ; ELSE GET INPUTS IN ACCUMULATOR
                ACALL DISPLAY   ; & DISPLAY LEDs ACCORDINGLY
                MOV CTR, #10H   ; RESET COUNTER TO 10h
                JNB 2DH, EXIT1  ; IS FAULTY CONDITION? IF NO, JMP (2Dh used to aknowledge Fault)
                MOV CTR, #20H   ; FAULT=YES, THEN INCREASE TIME TO CALL INPUTS & DISPLAY
EXIT1:          JNB 30H, EXIT   ; IS INSIDE MAIN LOOP, IF NO, JMP (30h used to aknowledge Main loop)
                MOV CTR, #40H   ; YES, THEN FURTHER INCREASE TIME TO CALL INPUTS & DISPLAY
EXIT:           MOV TL2, #32H   ;
                MOV TH2, #32H   ;
                SETB TR2        ; START TIMER2
                POP PSW         ;
                RETI            ; RETURN FROM INTERRUPT

