diff -Nur FreeRTOSV6.1.1-pristine/Demo/PIC18_MPLAB/FreeRTOSConfig.h FreeRTOSV6.1.1/Demo/PIC18_MPLAB/FreeRTOSConfig.h
--- FreeRTOSV6.1.1-pristine/Demo/PIC18_MPLAB/FreeRTOSConfig.h	2011-01-14 20:14:24.000000000 -0500
+++ FreeRTOSV6.1.1/Demo/PIC18_MPLAB/FreeRTOSConfig.h	2012-04-04 13:24:16.000000000 -0400
@@ -80,6 +80,7 @@
 #define configUSE_TRACE_FACILITY		0
 #define configUSE_16_BIT_TICKS			1
 #define configIDLE_SHOULD_YIELD			1
+#define configPORT_USER_ISR_VECTOR		vUserInterruptVector
 
 /* Co-routine definitions. */
 #define configUSE_CO_ROUTINES 		0
diff -Nur FreeRTOSV6.1.1-pristine/Demo/PIC18_MPLAB/interrupts.c FreeRTOSV6.1.1/Demo/PIC18_MPLAB/interrupts.c
--- FreeRTOSV6.1.1-pristine/Demo/PIC18_MPLAB/interrupts.c	1969-12-31 19:00:00.000000000 -0500
+++ FreeRTOSV6.1.1/Demo/PIC18_MPLAB/interrupts.c	2012-04-04 13:19:22.000000000 -0400
@@ -0,0 +1,35 @@
+#include "FreeRTOS.h"
+
+/*
+ * The serial port ISR's are defined in serial.c.
+ */
+void vSerialTxISR( void );
+void vSerialRxISR( void );
+
+/*
+ * User Vector for ISR.  Must alter any registers.
+ */
+void vUserInterruptVector( void )
+{
+	/* Was the interrupt a byte being received? */
+	if( PIR1bits.RCIF )
+	{
+		if( PIE1bits.RCIE )
+		{
+			_asm
+				goto vSerialRxISR
+			_endasm
+		}
+	}
+
+	/* Was the interrupt the Tx register becoming empty? */
+	if( PIR1bits.TXIF )
+	{
+		if( PIE1bits.TXIE )
+		{
+			_asm
+				goto vSerialTxISR
+			_endasm
+		}
+	}
+}
diff -Nur FreeRTOSV6.1.1-pristine/Demo/PIC18_MPLAB/rtosdemo1.mcp FreeRTOSV6.1.1/Demo/PIC18_MPLAB/rtosdemo1.mcp
--- FreeRTOSV6.1.1-pristine/Demo/PIC18_MPLAB/rtosdemo1.mcp	2009-08-18 11:38:20.000000000 -0400
+++ FreeRTOSV6.1.1/Demo/PIC18_MPLAB/rtosdemo1.mcp	2012-04-04 13:23:35.000000000 -0400
@@ -38,6 +91,7 @@
 file_018=no
 file_019=no
 file_020=no
+file_021=no
 [FILE_INFO]
 file_000=..\..\Source\tasks.c
 file_001=..\..\Source\queue.c
@@ -49,17 +103,18 @@
 file_007=serial\serial.c
 file_008=..\Common\Minimal\integer.c
 file_009=..\..\Source\portable\MemMang\heap_1.c
-file_010=..\..\Source\portable\MPLAB\PIC18F\portmacro.h
-file_011=..\..\Source\include\task.h
-file_012=..\..\Source\include\list.h
-file_013=..\..\Source\include\portable.h
-file_014=..\..\Source\include\projdefs.h
-file_015=..\..\Source\include\queue.h
-file_016=..\Common\include\integer.h
-file_017=..\Common\include\PollQ.h
-file_018=..\Common\include\serial.h
-file_019=FreeRTOSConfig.h
-file_020=18f452.lkr
+file_010=interrupts.c
+file_011=..\..\Source\portable\MPLAB\PIC18F\portmacro.h
+file_012=..\..\Source\include\task.h
+file_013=..\..\Source\include\list.h
+file_014=..\..\Source\include\portable.h
+file_015=..\..\Source\include\projdefs.h
+file_016=..\..\Source\include\queue.h
+file_017=..\Common\include\integer.h
+file_018=..\Common\include\PollQ.h
+file_019=..\Common\include\serial.h
+file_020=FreeRTOSConfig.h
+file_021=18f452.lkr
 [SUITE_INFO]
 suite_guid={5B7D72DD-9861-47BD-9F60-2BE967BF8416}
 suite_state=
diff -Nur FreeRTOSV6.1.1-pristine/Demo/PIC18_MPLAB/rtosdemo2.mcp FreeRTOSV6.1.1/Demo/PIC18_MPLAB/rtosdemo2.mcp
--- FreeRTOSV6.1.1-pristine/Demo/PIC18_MPLAB/rtosdemo2.mcp	2009-08-18 11:38:20.000000000 -0400
+++ FreeRTOSV6.1.1/Demo/PIC18_MPLAB/rtosdemo2.mcp	2012-04-04 13:35:07.000000000 -0400
@@ -35,6 +85,7 @@
 file_016=no
 file_017=no
 file_018=no
+file_019=no
 [FILE_INFO]
 file_000=main2.c
 file_001=serial\serial.c
@@ -45,16 +96,17 @@
 file_006=..\..\Source\portable\MemMang\heap_1.c
 file_007=..\Common\Minimal\flash.c
 file_008=..\..\Source\portable\MPLAB\PIC18F\port.c
-file_009=..\..\Source\portable\MPLAB\PIC18F\portmacro.h
-file_010=..\..\Source\include\task.h
-file_011=..\..\Source\include\list.h
-file_012=..\..\Source\include\portable.h
-file_013=..\..\Source\include\projdefs.h
-file_014=..\..\Source\include\queue.h
-file_015=..\Common\include\serial.h
-file_016=..\Common\include\flash.h
-file_017=FreeRTOSConfig.h
-file_018=18f452.lkr
+file_009=interrupts.c
+file_010=..\..\Source\portable\MPLAB\PIC18F\portmacro.h
+file_011=..\..\Source\include\task.h
+file_012=..\..\Source\include\list.h
+file_013=..\..\Source\include\portable.h
+file_014=..\..\Source\include\projdefs.h
+file_015=..\..\Source\include\queue.h
+file_016=..\Common\include\serial.h
+file_017=..\Common\include\flash.h
+file_018=FreeRTOSConfig.h
+file_019=18f452.lkr
 [SUITE_INFO]
 suite_guid={5B7D72DD-9861-47BD-9F60-2BE967BF8416}
 suite_state=
diff -Nur FreeRTOSV6.1.1-pristine/Demo/PIC18_MPLAB/rtosdemo3.mcp FreeRTOSV6.1.1/Demo/PIC18_MPLAB/rtosdemo3.mcp
--- FreeRTOSV6.1.1-pristine/Demo/PIC18_MPLAB/rtosdemo3.mcp	2009-08-18 11:38:20.000000000 -0400
+++ FreeRTOSV6.1.1/Demo/PIC18_MPLAB/rtosdemo3.mcp	2012-04-04 13:35:44.000000000 -0400
@@ -36,6 +88,7 @@
 file_017=no
 file_018=no
 file_019=no
+file_020=no
 [FILE_INFO]
 file_000=..\..\Source\tasks.c
 file_001=..\..\Source\queue.c
@@ -47,16 +100,17 @@
 file_007=..\Common\Minimal\integer.c
 file_008=..\..\Source\portable\MemMang\heap_1.c
 file_009=ParTest\ParTest.c
-file_010=..\..\Source\portable\MPLAB\PIC18F\portmacro.h
-file_011=..\..\Source\include\task.h
-file_012=..\..\Source\include\list.h
-file_013=..\..\Source\include\portable.h
-file_014=..\..\Source\include\projdefs.h
-file_015=..\..\Source\include\queue.h
-file_016=..\Common\include\serial.h
-file_017=..\Common\include\comtest.h
-file_018=FreeRTOSConfig.h
-file_019=18f452.lkr
+file_010=interrupts.c
+file_011=..\..\Source\portable\MPLAB\PIC18F\portmacro.h
+file_012=..\..\Source\include\task.h
+file_013=..\..\Source\include\list.h
+file_014=..\..\Source\include\portable.h
+file_015=..\..\Source\include\projdefs.h
+file_016=..\..\Source\include\queue.h
+file_017=..\Common\include\serial.h
+file_018=..\Common\include\comtest.h
+file_019=FreeRTOSConfig.h
+file_020=18f452.lkr
 [SUITE_INFO]
 suite_guid={5B7D72DD-9861-47BD-9F60-2BE967BF8416}
 suite_state=
diff -Nur FreeRTOSV6.1.1-pristine/Source/portable/MPLAB/PIC18F/port.c FreeRTOSV6.1.1/Source/portable/MPLAB/PIC18F/port.c
--- FreeRTOSV6.1.1-pristine/Source/portable/MPLAB/PIC18F/port.c	2011-01-14 20:14:24.000000000 -0500
+++ FreeRTOSV6.1.1/Source/portable/MPLAB/PIC18F/port.c	2012-04-04 13:21:06.000000000 -0400
@@ -120,12 +120,10 @@
 #define portBIT_SET		( ( unsigned char ) 1 )
 #define portBIT_CLEAR	( ( unsigned char ) 0 )
 
-/*
- * The serial port ISR's are defined in serial.c, but are called from portable
- * as they use the same vector as the tick ISR.
- */
-void vSerialTxISR( void );
-void vSerialRxISR( void );
+/* Prototype for User ISR Vector */
+#ifdef configPORT_USER_ISR_VECTOR
+void configPORT_USER_ISR_VECTOR(void);
+#endif
 
 /*
  * Perform hardware setup to enable ticks.
@@ -548,29 +546,19 @@
 	/* Was the interrupt the tick? */
 	if( PIR1bits.CCP1IF )
 	{		
-		_asm
-			goto prvTickISR
-		_endasm
-	}
-
-	/* Was the interrupt a byte being received? */
-	if( PIR1bits.RCIF )
-	{
-		_asm
-			goto vSerialRxISR
-		_endasm
-	}
-
-	/* Was the interrupt the Tx register becoming empty? */
-	if( PIR1bits.TXIF )
-	{
-		if( PIE1bits.TXIE )
+		if( PIE1bits.CCP1IE )
 		{
 			_asm
-				goto vSerialTxISR
+				goto prvTickISR
 			_endasm
 		}
 	}
+
+#ifdef configPORT_USER_ISR_VECTOR
+	_asm
+		goto configPORT_USER_ISR_VECTOR
+	_endasm
+#endif
 }
 #pragma code
 
