亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? f326_usb0_mouse.c

?? usb鼠標源程序
?? C
字號:
//-----------------------------------------------------------------------------
// F326_USB0_Mouse.c
//-----------------------------------------------------------------------------
// Copyright 2005 Silicon Laboratories, Inc.
// http://www.silabs.com
//
// Program Description:
//
// Source file for routines that mouse data.
//
//
// How To Test:    See Readme.txt
//
//
// FID:            3XX000042
// Target:         C8051F326
// Tool chain:     Keil C51 7.50 / Keil EVAL C51
//                 Silicon Laboratories IDE version 2.6
// Command Line:   See Readme.txt
// Project Name:   F3xx_MouseExample
//
// Release 1.0
//    -Initial Revision (PD)
//    -07 DEC 2005
//

#include "F3xx_USB0_Mouse.h"
#include "c8051f3xx.h"
#include "F3xx_USB0_InterruptServiceRoutine.h"
#include "F3xx_USB0_Register.h"

//-----------------------------------------------------------------------------
// Definitions
//-----------------------------------------------------------------------------

#define SYSCLK             12000000    // SYSCLK frequency in Hz

// USB clock selections (SFR CLKSEL)
#define USB_4X_CLOCK       0x00        // Select 4x clock multiplier, for USB
#define USB_INT_OSC_DIV_2  0x10        // Full Speed
#define USB_EXT_OSC        0x20
#define USB_EXT_OSC_DIV_2  0x30
#define USB_EXT_OSC_DIV_3  0x40
#define USB_EXT_OSC_DIV_4  0x50

// System clock selections (SFR CLKSEL)
#define SYS_INT_OSC        0x00        // Select to use internal oscillator
#define SYS_EXT_OSC        0x01        // Select to use an external oscillator
#define SYS_4X_DIV_2       0x02

//-----------------------------------------------------------------------------
// 16-bit SFR Definitions for 'F326
//-----------------------------------------------------------------------------

sfr16 TMR2RL   = 0xca;                 // Timer2 reload value
sfr16 TMR2     = 0xcc;                 // Timer2 counter


//-----------------------------------------------------------------------------
// Local Definitions
//-----------------------------------------------------------------------------

#define Sw1 0x01                       // These are the port2 bits for Sw1
#define Sw2 0x02                       // and Sw2 on the development board

//-----------------------------------------------------------------------------
// Global Variable Declarations
//-----------------------------------------------------------------------------
signed char MOUSE_VECTOR;
unsigned char MOUSE_AXIS;
unsigned char MOUSE_BUTTON;
unsigned char IN_PACKET[4];

//-----------------------------------------------------------------------------
// Local Variable Declarations
//-----------------------------------------------------------------------------

unsigned char SWITCH_1_STATE = 0;      // Indicate status of switch
unsigned char SWITCH_2_STATE = 0;      // starting at 0 == off

unsigned char TOGGLE1 = 0;             // Variable to make sure each button
unsigned char TOGGLE2 = 0;             // press and release toggles switch


//-----------------------------------------------------------------------------
// Local Function Prototypes
//-----------------------------------------------------------------------------

void Sysclk_Init(void);
void Port_Init(void);
void USB0_Init(void);
void Timer_Init(void);
void Delay(void);

//-----------------------------------------------------------------------------
// Interrupt Service Routines
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Timer1_ISR
//-----------------------------------------------------------------------------
// Called when timer 1 overflows, check to see if switch is pressed,
// then watch for release.
// This routine sets the Mouse_... variables for the report handler.
//
//-----------------------------------------------------------------------------
void Timer1_ISR(void) interrupt 3
{
   static unsigned char Mouse_Count = 0;
   static unsigned char Mouse_MovementMultiplier = 0;
   static signed char Mouse_Direction = 1;
   static unsigned char Mouse_StateMachine = 0;

   if (!(P2 & Sw1))                    // Check for switch #1 pressed
   {
      // if switch 1 is pressed, increase the magnitude of the mouse
      // movement vector
      if(Mouse_MovementMultiplier <= 255)
      {
         Mouse_MovementMultiplier += 1;
      }

      if (TOGGLE1 == 0)                // Toggle is used to debounce switch
      {                                // so that one press and release will
         SWITCH_1_STATE = ~SWITCH_1_STATE; // toggle the state of the switch sent
         TOGGLE1 = 1;                  // to the host
      }
   }
   else
   {
      TOGGLE1 = 0;                     // Reset toggle variable

      // if switch 1 is not pressed, reduce the magnitude of the mouse
      // movement vector
      if(Mouse_MovementMultiplier > 0)
      {
         Mouse_MovementMultiplier -= 1;
      }
   }


   SWITCH_2_STATE = (P2 & Sw2);

   // Mouse_Count sets the number of timer interrupts serviced before
   // the mouse changes direction
   if(Mouse_Count++ == 50)
   {
      // the mouse state machine cycles through states 0-3
      if(++Mouse_StateMachine == 4) Mouse_StateMachine = 0;

      // each state sets the mouse to turn 90 degrees clockwise
      switch (Mouse_StateMachine)
      {
      case(0):
         // positive X direction
         Mouse_Direction = 1;
         MOUSE_AXIS = X_Axis;
      break;
      case(1):
         // negative Y direction
         Mouse_Direction = -1;
         MOUSE_AXIS = Y_Axis;
      break;
      case(2):
         // negative X direction
         Mouse_Direction = -1;
         MOUSE_AXIS = X_Axis;
      break;
      case(3):
         // positive Y direction
         Mouse_Direction = 1;
         MOUSE_AXIS = Y_Axis;
      break;
      }

      Mouse_Count = 0;
   }

  // Sets Mouse Vector
   MOUSE_VECTOR = (1 * ((Mouse_MovementMultiplier >> 5)+1)) * Mouse_Direction;


   TF1 = 0;                              // Clear Timer2 interrupt flag
}



//-----------------------------------------------------------------------------
// Initialization Routines
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// USB0_Init
//-----------------------------------------------------------------------------
//
// Return Value - None
// Parameters - None
//
// - Initialize USB0
// - Enable USB0 interrupts
// - Enable USB0 transceiver
// - Enable USB0 with suspend detection
//
// ----------------------------------------------------------------------------
void USB0_Init(void)
{

   POLL_WRITE_BYTE(POWER,  0x08);      // Force Asynchronous USB Reset
   POLL_WRITE_BYTE(IN1IE,  0x03);      // Enable Endpoint 0-1 in interrupts
   POLL_WRITE_BYTE(OUT1IE, 0x02);      // Enable Endpoint 0-1 out interrupts
   POLL_WRITE_BYTE(CMIE,   0x07);      // Enable Reset, Resume, and Suspend
                                       // interrupts
   USB0XCN = 0xE0;                     // Enable transceiver; select full speed
   POLL_WRITE_BYTE(CLKREC, 0x80);      // Enable clock recovery, single-step
                                       // mode disabled

   EIE1 |= 0x02;                       // Enable USB0 Interrupts
   EA = 1;                             // Global Interrupt enable
                                       // Enable USB0 by clearing the USB
   POLL_WRITE_BYTE(POWER,  0x01);      // Inhibit Bit and enable suspend
                                       // detection

}

//-----------------------------------------------------------------------------
// System_Init(void)
//-----------------------------------------------------------------------------
//
// Return Value - None
// Parameters - None
//
// This top-level initialization routine calls all support routine.
//
// ----------------------------------------------------------------------------
void System_Init(void)
{
   Sysclk_Init();
   Port_Init();
   Timer_Init();
}

//-----------------------------------------------------------------------------
// Sysclk_Init
//-----------------------------------------------------------------------------
//
// Return Value - None
// Parameters - None
//
// Initialize system clock to maximum frequency.
//
// ----------------------------------------------------------------------------
void Sysclk_Init(void)
{

   OSCICN |= 0x82;
   CLKMUL  = 0x00;
   CLKMUL |= 0x80;                     // Enable clock multiplier

   Delay();

   CLKMUL |= 0xC0;                     // Initialize the clock multiplier

   while(!(CLKMUL & 0x20));            // Wait for multiplier to lock

   CLKSEL = 0x02;                      // Use Clock Multiplier/2 as system clock

}

//-----------------------------------------------------------------------------
// Port_Init
//-----------------------------------------------------------------------------
//
// Return Value - None
// Parameters - None
//
// - Configure the Crossbar and GPIO ports.
//
// ----------------------------------------------------------------------------
void Port_Init(void)
{

   P2MDOUT |= 0x0C;                    // enable LEDs as a push-pull outputs

}



//-----------------------------------------------------------------------------
// Timer_Init
//-----------------------------------------------------------------------------
//
// Return Value - None
// Parameters - None
//
// - Timer 2 reload, used to check if switch pressed on overflow and
// used for ADC continuous conversion
//
// ----------------------------------------------------------------------------
void Timer_Init(void)
{

   TCON      = 0x40;
   TMOD      = 0x20;
   CKCON     = 0x02;

   TH1       = 0x00;                   // set reload value
   IE        = 0x08;                   // enable timer interrupt

}



//-----------------------------------------------------------------------------
// Delay
//-----------------------------------------------------------------------------
//
// Return Value - None
// Parameters - None
//
// Used for a small pause, approximately 80 us in Full Speed,
// and 1 ms when clock is configured for Low Speed
//
// ----------------------------------------------------------------------------
void Delay(void)
{
   int x;
   for(x = 0;x < 500;x)
      x++;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利视频在线| 亚洲黄色免费网站| 久久久国产综合精品女国产盗摄| 欧美一级一区二区| 日韩亚洲欧美一区| 日韩一区二区三区在线| 日韩免费观看高清完整版| 日韩视频在线永久播放| 欧美va日韩va| 国产亚洲午夜高清国产拍精品| 337p粉嫩大胆色噜噜噜噜亚洲| 精品裸体舞一区二区三区| 精品国产a毛片| 久久久久久97三级| 国产精品欧美久久久久无广告| 国产精品视频你懂的| 国产精品的网站| 亚洲精品自拍动漫在线| 亚洲激情图片一区| 三级久久三级久久| 国产在线观看一区二区| 成人丝袜18视频在线观看| 91在线视频播放地址| 欧美性欧美巨大黑白大战| 欧美日韩国产123区| 久久综合色综合88| 国产精品久久久久久妇女6080| 一区二区三区成人| 免费不卡在线观看| 99久久精品费精品国产一区二区| 欧美亚洲动漫精品| 精品理论电影在线| 中文字幕一区二区在线播放| 亚洲成人一区二区在线观看| 久久av资源站| 91麻豆成人久久精品二区三区| 欧美色倩网站大全免费| 久久这里只精品最新地址| 亚洲欧美中日韩| 日本欧美久久久久免费播放网| 国产传媒日韩欧美成人| 在线视频国产一区| 欧美成人三级电影在线| 综合中文字幕亚洲| 蜜臀精品一区二区三区在线观看 | 成人在线综合网站| 欧美怡红院视频| 久久男人中文字幕资源站| 日韩美女视频一区二区| 久久精品国产秦先生| 91在线视频网址| 精品国产乱码久久久久久蜜臀 | 一区二区三区免费看视频| 奇米色一区二区三区四区| 丁香一区二区三区| 日韩午夜激情视频| 亚洲综合色噜噜狠狠| 狠狠狠色丁香婷婷综合激情| 欧美色综合影院| 国产精品日日摸夜夜摸av| 久久精品国内一区二区三区| 在线一区二区三区| 中文字幕第一区二区| 久久99精品国产.久久久久久| 在线视频亚洲一区| 国产精品久久久久影视| 美女视频黄免费的久久 | 91国产丝袜在线播放| 久久先锋影音av| 日本不卡在线视频| 色综合久久中文字幕| 国产欧美日韩精品a在线观看| 免费成人av在线播放| 欧美伊人久久久久久久久影院| 国产精品久久福利| 国产成人在线网站| 精品国产乱码久久久久久夜甘婷婷| 五月天一区二区三区| 在线亚洲一区二区| 亚洲三级电影全部在线观看高清| 国产精品一区二区黑丝| 日韩欧美一级在线播放| 亚洲电影一级片| 色综合天天综合狠狠| 国产精品热久久久久夜色精品三区| 精品一区二区久久久| 日韩一区二区电影在线| 三级久久三级久久| 欧美精品在线一区二区| 亚洲国产一二三| 在线免费不卡电影| 亚洲精选视频在线| 在线视频一区二区三区| 一级中文字幕一区二区| 在线观看精品一区| 亚洲一区在线电影| 欧美日韩亚州综合| 亚洲超碰精品一区二区| 欧美日韩亚洲综合一区二区三区| 亚洲成人福利片| 欧美精品 国产精品| 日韩黄色小视频| 日韩欧美电影一二三| 韩国av一区二区三区| 久久免费的精品国产v∧| 国产原创一区二区三区| 国产亚洲一区二区在线观看| 国产激情精品久久久第一区二区| 国产欧美日韩在线观看| 成人av资源在线观看| 最新中文字幕一区二区三区| 亚洲va欧美va人人爽午夜| 蜜桃av一区二区三区电影| 欧美大肚乱孕交hd孕妇| 国产精品一区免费在线观看| 自拍视频在线观看一区二区| 成人丝袜高跟foot| 一区二区在线免费观看| 欧美日韩精品是欧美日韩精品| 五月综合激情网| 欧美tk丨vk视频| www.成人网.com| 亚洲一二三区在线观看| 欧美一卡二卡三卡| 日韩一区二区麻豆国产| 国产精品色噜噜| 精品系列免费在线观看| 欧美三级中文字| 亚洲天堂久久久久久久| 国产资源在线一区| 欧美日韩一区在线| 国产精品色在线观看| 麻豆国产91在线播放| 欧美色图在线观看| 国产精品国产精品国产专区不蜜| 麻豆一区二区在线| 欧美网站一区二区| 亚洲视频一区二区免费在线观看| 国内久久婷婷综合| 91精品国产综合久久精品麻豆 | 99精品国产热久久91蜜凸| 欧美成人免费网站| 日本不卡的三区四区五区| 在线一区二区三区做爰视频网站| 国产三级一区二区三区| 毛片基地黄久久久久久天堂| 欧美日韩午夜影院| 一区二区视频在线| www.亚洲免费av| 国产拍揄自揄精品视频麻豆| 久久er精品视频| 欧美一级午夜免费电影| 午夜日韩在线观看| 欧美人妖巨大在线| 亚洲福利一区二区三区| 91黄色免费观看| 亚洲午夜av在线| 欧美视频中文字幕| 午夜精品一区二区三区电影天堂| 在线亚洲+欧美+日本专区| 一区二区三区免费看视频| 色婷婷综合中文久久一本| 日韩伦理av电影| 色八戒一区二区三区| 亚洲美女偷拍久久| 91久久国产最好的精华液| 一区二区在线看| 欧美三级三级三级| 亚洲成人久久影院| 欧美一区二区三区四区在线观看| 天堂蜜桃一区二区三区 | 91福利在线看| 亚洲国产美女搞黄色| 欧美日韩精品系列| 日韩高清国产一区在线| 欧美va天堂va视频va在线| 国产精品2024| 亚洲三级电影全部在线观看高清| 色综合一区二区| 视频一区国产视频| 欧美电影免费观看高清完整版在| 九一九一国产精品| 国产欧美精品在线观看| 91视频免费看| 亚洲一区国产视频| 欧美一区二区三区男人的天堂| 理论片日本一区| 国产精品乱码人人做人人爱| 91婷婷韩国欧美一区二区| 亚洲国产精品一区二区www| 日韩一区和二区| 福利电影一区二区| 一区二区三区四区五区视频在线观看| 精品视频在线免费看| 久久精品国产99国产精品| 国产精品乱码一区二区三区软件 | 色婷婷综合视频在线观看| 天天色天天操综合| 久久日韩粉嫩一区二区三区| 91小视频免费看|