Hola perdon por no responder antes, pense q nadie habia solucionado el problema. Despues de hacer muchos arreglos hice funcionar mi codigo el cual posteo acá. Esta configuracion me permite manejar el adc y tambien las interrupciones RB0 y RB1, ademas tambien me almacena las interrupciones en un espacio en memoria eeprom externa y funciona a la perfeccion la comunicacion USB, para quien tenga algun problema similar puede utilizar esta configuracion, ya he probado con el 18f4550 y actualmente esta en funcionamiento en un dispositivo q diseñe e instale, espero sirva de ayuda a alguien. Exitos!!
#include <18F4550.h>
#device adc=10
#include <24512.c> //libreria eeprom 24LC512
#include <external_eeprom.c>
#include <stdlib.h>
#fuses HSPLL,NOWDT,PROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOBROWNOUT,NOPBADEN
#use delay(clock=48000000)
#use fast_io(B)
#use fast_io(D)
#byte ADCON2=0xFC0
#byte PortB = 0xF81 // Dirección del puerto B para la familia 18Fxx5x
#byte PortD = 0xF83 // Dirección del puerto D para la familia 18Fxx5x
#define USB_HID_DEVICE FALSE // deshabilitamos el uso de las directivas HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK // turn on EP1(EndPoint1) for IN bulk/interrupt transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK // turn on EP1(EndPoint1) for OUT bulk/interrupt transfers
#define USB_EP1_TX_SIZE 32 // size to allocate for the tx endpoint 1 buffer
#define USB_EP1_RX_SIZE 32 // size to allocate for the rx endpoint 1 buffer
#include <pic18_usb.h> // Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver
#include "header.h" // Configuración del USB y los descriptores para este dispositivo
#include <usb.c> // handles usb setup tokens and get descriptor reports
int16 x = 0, y=0, limS=0, limI=0;
int16 adc0;
char voltage[10];
char Conexion[] = "o.k";
const int8 Lenbuf = 32;
int8 recbuf[Lenbuf];
#INT_EXT // Interrupción Externa por RB0: Decodificación de Encoder.
Void IntRB0()
{
// CCS se encarga de desactiva automáticamente cualquier interrupción.
// No hace falta guardar contextos de registros.
If (!Bit_Test(PortB, 0)) // Si RB0 se ha puesto a 1 (flanco de subida),
{
Ext_Int_Edge(L_TO_H); // entonces activar la siguiente interrupción por flanco de bajada.
If (!Bit_Test(PortB, 1)) // Si RB1 está a 1,
{
x--; // entonces incrementar una unidad el valor de X.
}
}
Else // Si RB0 se ha puesto a 0 (flanco de bajada),
{
Ext_Int_Edge(H_TO_L); // entonces activar la siguiente interrupción por flanco de subida.
If (!Bit_Test(PortB, 1)) // Si RB1 está 1,
{
x++; // entonces decrementar una unidad el valor de X.
}
}
// Al finalizar la interrupción CCS se encarga de volver a poner automáticamente
// la badera INTF = 0 ---> borra la interrupción para poder permitir la siguiente;
// no hemos de hacer nada por nuestra parte.
y=1;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//
// M A I N
//
///////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
Port_B_Pullups(FALSE); // Configuración para el PIC 18F4550.
set_tris_a(0x03); //Entrada an0 y an1
setup_adc_ports(AN0_TO_AN1|VSS_VDD);//para escoger el canal cero y el vss y vdd
setup_adc(ADC_CLOCK_INTERNAL);//la frecuencia de muestreo es 2-6us
ADCON2= ADCON2 | 0b00111000;
set_adc_channel(1);
Setup_vref(FALSE);
clear_interrupt(INT_EXT);
delay_ms(333);
//////////////////INICIO Y HABILITACION DE LO QUE NECESITO/////////////////////////////////////////
init_ext_eeprom();
Enable_Interrupts(int_ext); // Activar Interrupción Externa a través de RB0.
Ext_Int_Edge(H_TO_L); // Inicialmente detectar interrupción por flanco de bajada.
enable_interrupts(global); // Activo interruciones globales
bit_clear(PortB,0);
Set_Tris_B(0b11111111);
usb_init();
usb_task();
delay_ms(333);
while (TRUE)
{
}