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.
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
BTW I commented out the device command as I use MPASM and it compiled okay. Hope this helps.
Copy the code and paste it in MICROCODE STUDIO for better readability.
Regards
Sougata
Bookmarks