Muchas gracias J1M. Hice lo que me dijiste y todo se solucionó.
Aclaro que el cambio que hice fue cambiar la línea:
#include "C:\Program Files\PICC\Projects\usb_BOOTLOADER.h"
y no cambié la línea
#include "C:\Program Files\PICC\Projects\usb_cdc.h"
pues me quedo sin usb

Ya tengo por fin mi dispositivo usb cdc.
Se que con las lineas que me dio J1M reservo el espacio del bootloader para que la aplicación
no interfiera con su espacio de memoria, además que ubica el vector de reset y de interrupciones
pero finalmente no se que parte del archivo usb_BOOTLOADER.h tenía el problema.
Lo muestro a continuación y si saben el problema y por qué, agradecería mucho.
//*****************************************************************
#define LOADER_SIZE (0x17FF)
//the loader and application need a common flag that determines if we are in
//the bootloader or application, that way the ISR knows where to go. this
//is the location in ram that is reserved for this flag.
#define LOC_IN_LOADER_FLAG 0x25
//// --- end configuration --- ////////////////////////////////////////////
#reserve LOC_IN_LOADER_FLAG
int8 g_InBootloader;
#locate g_InBootloader=LOC_IN_LOADER_FLAG
#define LOADER_START (0)
#define LOADER_END (LOADER_SIZE)
#define APPLICATION_START (LOADER_SIZE+1)
#if defined(__USB_87J50__)
#define APPLICATION_END (getenv("PROGRAM_MEMORY")-9) //configuration bits
#else
#define APPLICATION_END (getenv("PROGRAM_MEMORY")-1)
#endif
#define APPLICATION_ISR (APPLICATION_START+8)
#ifdef _bootloader
/*
Provide an empty application, so if you load this .HEX file into the pic
without an application this will prevent the pic from executing unknown code.
*/
#org APPLICATION_START,APPLICATION_START+0xF
void BlankApplication(void)
{
while(TRUE);
}
//we need to prevent the loader from using application space
#if (APPLICATION_END > 0x10000)
#org APPLICATION_START+0x10, 0xFFFF {}
#if (APPLICATION_END > 0x20000)
#org 0x10000, 0x1FFFF {}
#org 0x20000, APPLICATION_END {}
#else
#org 0x10000, APPLICATION_END {}
#endif
#else
#org APPLICATION_START+0x10, APPLICATION_END {}
#endif
#define USB_CONFIG_PID 0x0033
#define USB_STRINGS_OVERWRITTEN
char USB_STRING_DESC_OFFSET[]={0,4,12};
// Here is where the "CCS" Manufacturer string and "SERIAL DEMO" are stored.
// Strings are saved as unicode.
// These strings are mostly only displayed during the add hardware wizard.
// Once the operating system drivers have been installed it will usually display
// the name from the drivers .INF.
char const USB_STRING_DESC[]={
//string 0
4, //length of string index
0x03, //USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
0x09,0x04, //Microsoft Defined for US-English
//string 1 - manufacturer
8, //length of string index
0x03, //USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'C',0,
'C',0,
'S',0,
//string 2 - product
30, //length of string index
0x03, //USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'C',0,
'D',0,
'C',0,
' ',0,
'B',0,
'o',0,
'o',0,
't',0,
'l',0,
'o',0,
'a',0,
'd',0,
'e',0,
'r',0
};
#endif //_bootloader
#ifndef _bootloader
//in the application, this moves the reset and isr vector out of the bootload
//space. it then reserves the loader space from being used by the application.
#build(reset=APPLICATION_START, interrupt=APPLICATION_ISR)
#org 0, LOADER_END {}
#endif
//*****************************************************************
Muchas gracias.