PIC18F4550实现鼠标操作代码


在PIC18F MCU下 实现 USB鼠标的代码极其简单方便。见下面用4个按键控制鼠标上下和左右键盘功能,PIN_B1/2/3/4 四个端口读取按键状态,根据按键状态决定鼠标行为!

#include <18F4550.h>
  #fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN
  #use delay(clock=20000000)

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#include    //Microchip PIC18Fxx5x hardware layer for usb.c
#include     //USB Configuration and Device descriptors for this UBS device
#include         //handles usb setup tokens and get descriptor reports

void main()
{
usb_init();

output_low(PIN_A2);
output_high(PIN_A3);
output_low(PIN_A4);
output_high(PIN_A5);

int8 count=0;
int8 out_data[4];
int8 x_pos=0; 
int8 y_pos=0;

while(1)
  {
      usb_task();

      if (usb_enumerated()) {

        // 根据外部按键,设置鼠标x,y位置!

        if(!input(PIN_B1))
        y_pos--;

        if(!input(PIN_B2))
        y_pos++;

            out_data[0]=0; //button state goes here  hover mouse!

        if(!input(PIN_B3))
        out_data[0]=1;    // left mouse key pressed !

        if(!input(PIN_B4))
        out_data[0]=2;     // right mouse key  pressed !  
         out_data[1]=x_pos;
         out_data[2]=y_pos;
         out_data[3]=0;         // wheel state goes here

         if (usb_put_packet(1,out_data,4,USB_DTS_TOGGLE))
            count++;
         if (count > 10) {
            x_pos = 0;
            y_pos = 0;
            count=0;
         }
         delay_ms(10);
  }

 if(!input(PIN_B1))
{output_high(PIN_A2);}
else
{output_low(PIN_A2);}

if(!input(PIN_B2))
{output_high(PIN_A3);}
else
{output_low(PIN_A3);}

if(!input(PIN_B3))
{output_high(PIN_A4);}
else
{output_low(PIN_A4);}

if(!input(PIN_B4))
{output_high(PIN_A5);}
else
{output_low(PIN_A5);}

  }
}

点击数: 1508    打印  添加到收藏   发布时间: 2015-12-13




上一篇:.Net下PostMessage发送字符串成功方法!
下一篇:FPGA中nCEO引脚的重新分配





» 相关内容
  字符型数组与字符串互相转换.n..
  Sendkeys你用对了吗,不再那么..
  VS2008集成Python新建工程模板..
  .Net调试线程方法-包括调用第..
  程序调用其他dll或com组件的参..
  mornsun隔离型DCDC输入输出共..
  .Net强制退出当前程序并彻底清..
  Matlab绘制表面平滑的3D图形-..
  激光致眩武器介绍
  CD4046锁相环的说明
  USB供电对音频设备可能的电流..
  碳化硅光源的电阻随温度变化研..
  引力波探测技术要点
  秋风起时
  谐波失真及评价方法