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);}

  }
}

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




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





» 相关内容
  手机
  情深不寿,慧极必伤
  BGA封装及焊接方法
  划痕的几种修复方法
  忘却的纪念
  GPRS和NB-IOT的特点及选用原则
  金菊茶的功效
  数据传输中FIFO或缓冲存在的意..
  关于静电防护的一些解释
  串口通讯影响鼠标指针乱蹿的终..
  GC气相色谱原理简介-物理分离..
  使用STM32提供的DSP库函数进行..
  设置VB.NET 窗体的全局热键
  产生随机注册名称和信息的方法
  wintoUSB实现独立操作系统随你..