Explicacion de Codigo! Mouse con Pic!

#1
PHP:
#include <18F4550.h>

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#define LED1 PIN_A5
#define LED2 PIN_B4
#define LED3 PIN_B5
#define BUTTON PIN_A4
#define LED_ON output_low
#define LED_OFF output_high
#define USB_CON_SENSE_PIN PIN_B2
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP1_TX_SIZE 8
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP1_RX_SIZE 8
#define MOUSE_SEQUENCE_STEPS 16
#include <pic18_usb.h>
#include <usb_desc_mouse.h>
#include <usb.c>


const char mouse_seq[MOUSE_SEQUENCE_STEPS]={0, 1, 3, 4, 4, 4, 3, 1, 0, -1, -3, -4, -4, -4, -3, -1};

int8 out_data[4]={0,0,0,0};

int8 x_seq=0;

int8 y_seq=MOUSE_SEQUENCE_STEPS/4;

int8 count=0;

void main(){

   LED_ON(LED1);

   LED_OFF(LED2);

   LED_OFF(LED3);

   usb_init_cs();

   usb_init();

   while(TRUE){

         if(usb_attached())

            LED_ON(LED2);

         else

            LED_OFF(LED2);

         if(usb_enumerated()){

            LED_ON(LED3);

            out_data[1]=mouse_seq[x_seq];

            out_data[2]=mouse_seq[y_seq];

            if(usb_put_packet(1,out_data,4,USB_DTS_TOGGLE))

               count++;

            if(count>10){

               if(++x_seq>=MOUSE_SEQUENCE_STEPS)

                  x_seq=0;

               if(++y_seq>=MOUSE_SEQUENCE_STEPS)

                  y_seq=0;

            }

            delay_ms(10);

      }

      else

         LED_OFF(LED3);

   }

}

Lo que hace el codigo es que se detecta al pic como un mouse y el puntero empieza a girar el circulos pequenos cada determinado tiempo , lo que queremos es agregar push button que den la funcion de movimiento y click
 
Arriba