Pues tambien es verdad, aqui va lo del pic:
Creo que el problema está en que el código donde estan los interruptores va dentro de usb_kbhit y debería ir fuera pero no se si es tan simple o es que el codigo esta mal.
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN
#use delay(clock=48000000)
#define USB_HID_DEVICE FALSE
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK
#define USB_EP1_TX_SIZE 2
#define USB_EP1_RX_SIZE 33
//#define USB_CON_SENSE_PIN PIN_B2
#include <pic18_usb.h>
#include <PruebaUSB.h>
#include <usb.c>
#define LEDR0 PIN_B4
#define LEDR1 PIN_B5
#define LEDR2 PIN_B6
#define LEDR3 PIN_B7
#define LED_ON output_high
#define LED_OFF output_low
#define SW1 PIN_B0 //Estos son los interruptores
#define SW2 PIN_B1
#define SW3 PIN_B2
#define SW4 PIN_B3
#define modo recibe[0]
#define param1 recibe[1]
#define param2 recibe[2]
#define resultado envia[0]
#define swst envia[1]
void main(void) {
int8 recibe[33];
int8 envia[2];
LED_OFF(LEDR1);
LED_ON(LEDR0);
LED_OFF(LEDR2);
LED_OFF(LEDR3);
usb_init();
usb_task();
usb_wait_for_enumeration();
LED_OFF(LEDR0);
LED_ON(LEDR1);
LED_OFF(LEDR2);
LED_OFF(LEDR3);
while (TRUE)
{
if(usb_enumerated())
{
if (usb_kbhit(1))
{
usb_get_packet(1, recibe, 3);
if (!input(SW1))
{
swst = 1;
usb_put_packet(1, envia, 2, USB_DTS_TOGGLE);
}
if (!input(SW2))
{
swst = 2;
usb_put_packet(1, envia, 2, USB_DTS_TOGGLE);
}
if (!input(SW3))
{
swst = 3;
usb_put_packet(1, envia, 2, USB_DTS_TOGGLE);
}
if (!input(SW4))
{
swst = 4;
usb_put_packet(1, envia, 2, USB_DTS_TOGGLE);
}
if (modo == 0) // Modo_Led
{
if (param1 == 0) {LED_OFF(LEDR0); LED_OFF(LEDR1); LED_OFF(LEDR2); LED_OFF(LEDR3);}
if (param1 == 1) {LED_ON(LEDR0); LED_OFF(LEDR1); LED_OFF(LEDR2); LED_OFF(LEDR3);}
if (param1 == 2) {LED_OFF(LEDR0); LED_ON(LEDR1); LED_OFF(LEDR2); LED_OFF(LEDR3);}
if (param1 == 3) {LED_ON(LEDR0); LED_ON(LEDR1); LED_OFF(LEDR2); LED_OFF(LEDR3);}
if (param1 == 4) {LED_OFF(LEDR0); LED_OFF(LEDR1); LED_ON(LEDR2); LED_OFF(LEDR3);}
if (param1 == 5) {LED_ON(LEDR0); LED_OFF(LEDR1); LED_ON(LEDR2); LED_OFF(LEDR3);}
if (param1 == 6) {LED_OFF(LEDR0); LED_ON(LEDR1); LED_ON(LEDR2); LED_OFF(LEDR3);}
if (param1 == 7) {LED_ON(LEDR0); LED_ON(LEDR1); LED_ON(LEDR2); LED_OFF(LEDR3);}
if (param1 == 8) {LED_OFF(LEDR0); LED_OFF(LEDR1); LED_OFF(LEDR2); LED_ON(LEDR3);}
if (param1 == 9) {LED_ON(LEDR0); LED_OFF(LEDR1); LED_OFF(LEDR2); LED_ON(LEDR3);}
}
}
}
}
}