Hi,
I have hastily modified your code. It does a red blink normally , but when you pull down the mode pin it goes to the interrupt routine and does a green blink there. Hope this helps.
BTW I commented out the device command as I use MPASM and it compiled okay. Hope this helps.Code:@ DEVICE pic16f630 @ DEVICE pic16f630, INTRC_OSC_NOCLKOUT @ DEVICE pic16f630, WDT_ON @ DEVICE pic16f630, MCLR_OFF @ DEVICE pic16f630, CPD_OFF 'MODE TEST @ DEVICE pic16f630, BOD_OFF 'BOARD TEST @ DEVICE pic16f630, PWRT_ON @ DEVICE pic16f630, PROTECT_OFF '////////////////////////////////////////////////////////////////// DEFINE OSC 4 ' Tell PBP that the PIC is running @ 4MHz '////////////////////////////////////////////////////////////////// ON INTERRUPT GOTO INT_GREEN ' DEFINE THE PBP INTERRUPT HANDLER HERE DISABLE ' DO NOT PROCESS THE INERRUPT CALLS NOW '////////////////////////////////////////////////////////////////// CMCON = 7 'COMPARATOR OFF VRCON = 0 'VOLTAGE REF. DISABLE TRISA = %00011100 'MAKE A.2, A.3, A.4 INPUTS TRISC = %00000000 'MAKE ALL PORTC OUTPUTS '////////////////////////////////////////////////////////////////// 'SETUP THE INTERRUPT PROPERTIES HERE******************************************** '/////////////////////////////////////////////////////////////////////////////// OPTION_REG = 0 'ENABLE WEAK PULLUPS (CLEAR RAPU), INTERRUPT ON FALLING EDGE IOCA = 0 'DISABLE INTERRUPT ON CHANGE WPUA = %00111111 'WEAK PULLUPS ON PORTA INTCON = 0 'LET INTERRUPTS BE-OFF AT THIS MOMENT '/////////////////////////////////////////////////////////////////////////////// ' ALIAS-SYMBOL DEFINITIONS GOES HERE ////////////////////////////////////////// SYMBOL SENSOR = PORTA.2 'TRIGGERING DEVICE PIN 3 SYMBOL MODE = PORTA.4 'MODE BUTTON (FLASH/LONG) PIN 12 INPUT SYMBOL LED = PORTA.5 'LED POWER UP PIN 2 OUTPUT SYMBOL RED = PORTC.3 'RED LED PIN 7 OUTPUT SYMBOL GREEN = PORTC.4 'GREEN LED PIN 6 OUTPUT ' END OF ALIAS-SYMBOL DEFINITIONS //////////////////////////////////////////// ' DEFINE VARIABLES HERE //////////////////////////////////////////////////////// I VAR BYTE ' TO BE USED IN FOR-NEXT LOOP ' DEFINE VARIABLES HERE //////////////////////////////////////////////////////// ' INITIALIZATION ROUTINE /////////////////////////////////////////////////////// LED = 0 ' TURN-OFF THE POWER LED RED = 0 ' TURN-OFF THE RED LED GREEN = 0 ' TURN-OFF THE GREEN LED LED = 1 ' TURN-ON THE POWER LED PAUSE 4000 ' POWER UP OK LED = 0 ' NOW TURN IT OFF ' END OF INITIALISATION ROUTINE //////////////////////////////////////////////// '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INTCON = $90 ' SET UP THE GIE BITS AND RA2 INT BIT ' TO ENABLE INTERRUPT PROCESSING '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ENABLE ' INSTRUCT THE COMPILER TO PUT THE INTERRUPT HANDLING CALLS FROM NOW ON '////////////// THE MAIN ROUTINE THAT DOES SHORT RED FLASH ///////////////////// MAIN: RED = 1 ' TURN-ON THE RED-LED I = 0 ' RESET THE VARIABLE (FOR-NEXT LOOP) FOR I = 1 TO 200 ' DO A PAUSE IN A LOOP 200 X 5 = 1000mS PAUSE 5 ' REDUCES INTERRUPT PROCESSING LATENCY BY PBP NEXT I RED = 0 FOR I = 1 TO 200 ' DO A PAUSE IN A LOOP 200 X 5 = 1000mS PAUSE 5 ' REDUCES INTERRUPT PROCESSING LATENCY BY PBP NEXT I GOTO MAIN ' DO-IT FOR-EVER '/////////////////////////////////////////////////////////////////////////////// DISABLE ' INSTRUCT THE COMPILER NOT TO PUT THE INTERRUPT HANDLING CALLS FROM NOW ON '/// THE ACTUAL INTERRUPT HANDLER IS RIGHT BELOW /////////////////////////////// INT_GREEN: INTCON = $80 ' CLEAR THE INTERRUPT FLAG BUT KEEP GLOBAL ENABLED ' OTHERWISE PBP WILL RE-ENTER THIS ROUTINE LED = 1 ' ON-TILL IN THIS ROUTINE RED = 0 ' TURN-OFF THE RED LED IF IT WAS ON BY A PREVIOUS INSTANCE GREEN = 1 ' TURN-ON THE GREEN TO SHOW THAT INSIDE THIS ROUTINE PAUSE 1000 ' WAIT A SECOND GREEN = 0 : PAUSE 1000 ' TURN-OFF AND WAIT GREEN = 1 : PAUSE 1000 ' TURN-ON AND WAIT GREEN = 0 : PAUSE 1000 ' TURN-OFF AND WAIT GREEN = 1 : PAUSE 1000 ' TURN-ON AND WAIT GREEN = 0 : PAUSE 1000 ' TURN-OFF AND WAIT LED = 0 ' GREEN-BLINK DONE NOW TIME TO QUIT INTCON = $90 ' TURN-ON THE RA2 INTERRUPT BIT FOR FURTHER PROCESSING RESUME ' GO BACK TO WHAT IT WAS DOING ENABLE
Copy the code and paste it in MICROCODE STUDIO for better readability.
Regards
Sougata




Bookmarks