Hola amigos abro este hilo con el objetivo de no congestionar y combinar el tema de PIc18x550 a modos CDC, el cual pueden verlo en este hilo del foro:
El cual por cierto tiene la base para la programacion de los PIC18Fx550....

Bueno ahora si nos metemos a el modo
HID(Dispositivo de Interfas Humana, mouses,keypad,etc):
Primero tenemos que..tener presente que no vamos necesitar instalar nigun driver( como se hacia en el modo CDC)...ya que este modo HID usa los driver que viene en el windows .
Segundo tenemos que modificar el
VID&PID correspondiente para que nuestro pic sea reconocido por el PC.
Asi que vamos primero a definir que es VID&PID:
VID: Identificador del vendedor osea Microchip
El VID es un número de 16 bits que significa Vendor Identification o código que identifica al fabricante del hardware a conectar. En nuestro caso utilizamos el número 04D8h que identifica a Microchip.( fuente picmania)
PID: Identificador del Producto
El PID es un número de 16 bits que significa Product Identification o código que identifica al dispositivo en concreto hardware a conectar. En nuestro caso utilizamos el número 000Ah que identifica a la familia de los PIC18 de este fabricante.(fuente picmania)
Bueno vamos a modificar esto y algo mas para esto vamos tener que ir a la libreria
usb_desc_hid.h del CCS compiler y en la primera parte cambios los VID & PID
#IFNDEF __USB_DESCRIPTORS__
#DEFINE __USB_DESCRIPTORS__
#ifndef USB_CONFIG_PID
#define USB_CONFIG_PID 0x0020
#endif
#ifndef USB_CONFIG_VID
#define USB_CONFIG_VID 0x0461
#endif
Lo cambiamos...
#IFNDEF __USB_DESCRIPTORS__
#DEFINE __USB_DESCRIPTORS__
#ifndef USB_CONFIG_PID
#define USB_CONFIG_PID 0x0000
#endif
#ifndef USB_CONFIG_VID
#define USB_CONFIG_VID 0x04D8
#endif
Nota: La version del CCScompiler que estoy utilizando es la 4.093 
Una vez esto...le damos compilar y reemplazarr el
usb_desc_hid.h en la carpeta driver del ccscompiler. luego probamos y verificamos que todo esta bien( pueden hacerlo en proteus o en real, yo lo probe en real ,aca una foto de ello.
Ahora otra cosa que puden configurar el
USB_STRING_DESC el cual posee 3 string y de los cuales nosotros cambiaremos el nombre del dispositivo como "
www.icabots.com"
char const USB_STRING_DESC[]={
//string 0
4, //length of string index
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
0x09,0x04, //Microsoft Defined for US-English
//string 1
8, //length of string index
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'I',0,
'C',0,
'A',0,
//string 2
32, //length of string index
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'w',0,
'w',0,
'w',0,
'.',0,
'i',0,
'c',0,
'a',0,
'b',0,
'o',0,
't',0,
's',0,
'.',0,
'c',0,
'o',0,
'm',0
};
#ENDIF
Bueno si todo esta bien creo que ya podemos ponernos manos al compilador y a programar jaaaaaaaaaa..ahi vamos con nuestro primer ejemplo:
Ejemplo Nº1:
Reconocimiento y enumeración del HOST con nuestro picPara esto se mostrar mediante leds que el pic ya fue enumerado y reconocido por el HOST
Primero ire a comer..jaaa

regreso con el ejemplo....y su videito correspodiente
listo ya vine..a seguir...

Bueno aca el primer ejemplo:
/*******************************************************************************************/
/******************** ENUMERACION DEL HOST _CLASE HID **************************************/
/*******************************************************************************************/
#include <18f4550.h>
#fuses hspll,nowdt,nomclr,noprotect,nolvp,nodebug,usbdiv,pll1,cpudiv1,vregen
#use delay(clock=48M) // clock a 48Mhz
#define USB_CON_SENSE_PIN PIN_B2 // pin para reconcer conexion por hardware
//*********************** configuracion y declaraciones ****************
#define ledv PIN_B6 // asignando etiquetas a el pinb6
#define ledr PIN_B7
#define ledon output_high // asignando etiquetas a la funcion output
#define ledoff output_low
/*******************************************************************************************/
#DEFINE USB_HID_DEVICE TRUE // Vamos a utilizar el protocolo HID.
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT // Definición del tamaño del buffer de salida.
#define USB_EP1_TX_SIZE 64
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT // Definición del tamaño del buffer de entrada.
#define USB_EP1_RX_SIZE 64
/*************************************************************************************************/
// Librerías utilizadas.
#include <pic18_usb.h> // Drivers's USB del PIC18F2550.
#include <usb_desc_hid.h> // Descriptores USB.
#include <usb.c> // Funciones del USB.
/*************************************************************************************************/
int8 data[64]; // denificnion de variables y funciones
int8 enumerado_host;
void usb_enum_on(void);
void usb_enum_off(void);
/*************************************************************************************************/
/********************************** PROGRAMA PRINCIPAL********************************************/
void main()
{
usb_enum_off(); // aun no se enumera el HOST
usb_init_cs(); // Iniciamos el puerto USB y salimos.
while(1)
{ usb_task(); // Configuramos el puerto USB.
if (usb_enumerated()) // Si el puerto es enumerado y configurado por el host..
{ usb_enum_on(); } // HOST enumerado
}
}
//*****************************************************************
/////********************rutinas*************************//////////
//******************************************************************
void usb_enum_on(void)
{
ledoff(ledr); // encendemos el led verde
ledon(ledv);
}
void usb_enum_off(void)
{
ledoff(ledv); // enciendo el led rojo yq aun no detecta el host
ledon(ledr);
}
El esquemático es el mismo que se uso en la clase CDC.
Bueno hasta aquí el primer ejemplo... próximamente veremos en reconocimiento del host en caliente y control de dispositivos por el usb( prender cosas por la pc con visual basic y el usb)
Nota: adjunto los archivos en proteus+ccscompiler para su correcta simulación o prueba en real.