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

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

?? main.c

?? 此源代碼為雙報表法USB鍵盤鼠標開發源代碼
?? C
字號:
/******************************************************************
   本程序只供學習使用,未經作者許可,不得用于其它任何用途
			
        歡迎訪問我的USB專區:http://group.ednchina.com/93/
        歡迎訪問我的blog:   http://www.ednchina.com/blog/computer00
                             http://computer00.21ic.org

        感謝PCB贊助商——電子園: http://bbs.cepark.com/

main.c file

作者:電腦圈圈
建立日期: 2008.06.27
修改日期: 2008.07.15
版本:V1.1
版權所有,盜版必究。
Copyright(C) 電腦圈圈 2008-2018
All rights reserved            
*******************************************************************/

#include <AT89X52.H>  //頭文件
#include "Key.h"
#include "Led.h"
#include "UART.h"
#include "pdiusbd12.h"
#include "UsbCore.h"
#include "config.h"

code uint8 HeadTable[][74]={
"********************************************************************\r\n",
"******           《圈圈教你玩USB》之 帶鼠標的USB鍵盤          ******\r\n",
"******                      AT89S52 CPU                       ******\r\n",
"******                  建立日期:",__DATE__,"                 ******\r\n",
"******                   建立時間:",__TIME__,"                   ******\r\n",
"******                    作者:電腦圈圈                      ******\r\n",
"******                    歡迎訪問作者的                      ******\r\n",
"******           USB專區:http://group.ednchina.com/93/       ******\r\n",
"******      BLOG1:http://www.ednchina.com/blog/computer00    ******\r\n",
"******                BLOG2:http://computer00.21ic.org       ******\r\n",
"******                  請按K1-K8分別進行測試                 ******\r\n",
"******   K1:功能選擇鍵:按下時K2~K8為鍵盤,松開時K2~K8為鼠標  ******\r\n",
"******                      鍵盤功能時                        ******\r\n",
"******             K2:左Shift鍵  K3:左Alt鍵  K4:1鍵           ******\r\n",
"******       K5:2鍵  K6:3鍵  K7:Caps Lock鍵 K8:Num Lock鍵     ******\r\n",
"******  注意:數字鍵是數字小鍵盤,必須打開Num Lock才是數字鍵  ******\r\n",
"******                      鼠標功能時                        ******\r\n",
"******     K2:光標左移  K3:光標右移  K4:光標上移 K5:光標下移  ******\r\n",
"******            K6:鼠標左鍵  K7:鼠標中鍵  K8:鼠標右鍵       ******\r\n",
"********************************************************************\r\n",
};

/********************************************************************
函數功能:根據按鍵情況返回報告的函數。
入口參數:無。
返    回:無。
備    注:無。
********************************************************************/
void SendReport(void)
{
 //需要返回的9字節報告的緩沖(一字節報告ID加鍵盤8字節報告)
 //而鼠標報告只有4字節,加上一字節報告ID總共5字節,9字節夠了。
 
 uint8 Buf[9]={0,0,0,0,0,0,0,0,0}; 
 
 //由于需要返回多個按鍵,所以需要增加一個變量來保存當前的位置。
 //由于報告ID占用第一字節,所以普通按鍵從第四字節開始存放。
 uint8 i=3; 
 
 //我們用KEY1鍵來選擇剩余的7個鍵是鍵盤功能還是鼠標功能。
 //當KEY1按住時,剩余7個鍵為鍵盤功能,這7個鍵的功能跟鍵盤
 //實例的一樣。當KEY1松開時,剩余7個鍵為鼠標功能,功能分別為:
 //KEY2:光標左移,KEY3:光標右移,KEY4:光標上移,KEY5:光標下移。
 //KEY6:鼠標左鍵,KEY7:鼠標中鍵,KEY8:鼠標右鍵。
 
 //根據不同的按鍵設置輸入報告
 
 if(KeyPress & KEY1) //如果KEY1按住,則為鍵盤功能
 {
  Buf[0]=0x01;  //第一字節為報告ID,鍵盤報告ID為1。
  if(KeyPress & KEY2) //如果KEY2按住
  {
   Buf[1]|=0x02;  //KEY2為左Shift鍵。
  }
  if(KeyPress & KEY3) //如果KEY3按住
  {
   Buf[1]|=0x04;  //KEY3為左Alt鍵
  }
  if(KeyPress & KEY4) //如果KEY4按住
  {
   Buf[i]=0x59;  //KEY4為數字小鍵盤1鍵。
   i++;  //切換到下個位置。
  }
  if(KeyPress & KEY5)  //如果KEY5按住
  {
   Buf[i]=0x5A;  //KEY5數字小鍵盤2鍵。
   i++;  //切換到下個位置。
  }
  if(KeyPress & KEY6)  //如果KEY6按住
  {
   Buf[i]=0x5B;  //KEY6為數字小鍵盤3鍵。
   i++;  //切換到下個位置。
  }
  if(KeyPress & KEY7)  //如果KEY7按住
  {
   Buf[i]=0x39;  //KEY7為大/小寫切換鍵。
   i++;  //切換到下個位置。
  }
  if(KeyPress & KEY8)  //如果KEY8按住
  {
   Buf[i]=0x53;  //KEY8為數字小鍵盤功能切換鍵。
  }
  //報告準備好了,通過端點1返回,長度為9字節。
  D12WriteEndpointBuffer(3,9,Buf);
 }
 else  //KEY1松開,為鼠標功能
 {
  Buf[0]=0x02;  //第一字節為報告ID,鼠標報告ID為2。
  if(KeyDown & KEY2) //如果KEY2按下
  {
   Buf[2]=-10;  //KEY2為鼠標左移,按一次移動10個單位。
  }
  if(KeyDown & KEY3) //如果KEY3按下
  {
   Buf[2]=10;  //KEY3為鼠標右移,按一次移動10個單位。
  }
  if(KeyDown & KEY4) //如果KEY4按下
  {
   Buf[3]=-10;  //KEY4為鼠標上移,按一次移動10個單位。
  }
  if(KeyDown & KEY5)  //如果KEY5按下
  {
   Buf[3]=10;  //KEY5為鼠標下移,按一次移動10個單位。
  }
  if(KeyPress & KEY6)  //如果KEY6按住
  {
   Buf[1]|=0x01;  //KEY6為鼠標左鍵。
  }
  if(KeyPress & KEY7)  //如果KEY7按住
  {
   Buf[1]|=0x04;  //KEY7為鼠標中鍵。
  }
  if(KeyPress & KEY8)  //如果KEY8按住
  {
   Buf[1]|=0x02;  //KEY8為鼠標右鍵。
  }
  //報告準備好了,通過端點1返回,長度為5字節。
  D12WriteEndpointBuffer(3,5,Buf);
 }
 Ep1InIsBusy=1;  //設置端點忙標志。
 //記得清除KeyUp和KeyDown
 KeyUp=0;
 KeyDown=0;
}
////////////////////////End of function//////////////////////////////

/********************************************************************
函數功能:主函數。
入口參數:無。
返    回:無。
備    注:無。
********************************************************************/
void main(void)  //主函數
{
 uint8 i;
 uint16 id;
 uint8 InterruptSource;
 
 EA=1; //打開中斷
 InitKeyboard(); //初始化按鍵
 InitUART();  //初始化串口
 
 for(i=0;i<24;i++)	  //顯示信息
 {
  Prints(HeadTable[i]);
 }
 
 id=D12ReadID();

 Prints("Your D12 chip\'s ID is: ");
 PrintShortIntHex(id);

 if(id==0x1012)
 {
  Prints(". ID is correct! Congratulations!\r\n\r\n");
 }
 else
 {
  Prints(". ID is incorrect! What a pity!\r\n\r\n");
 }
 
 UsbDisconnect();  //先斷開USB連接
 UsbConnect();  //將USB連接上
 ConfigValue=0; //配置值初始化為0
 
 while(1)  //死循環
 {
  if(D12GetIntPin()==0) //如果有中斷發生
  {
   D12WriteCommand(READ_INTERRUPT_REGISTER);  //寫讀中斷寄存器的命令
   InterruptSource=D12ReadByte(); //讀回第一字節的中斷寄存器
   if(InterruptSource&0x80)UsbBusSuspend(); //總線掛起中斷處理
   if(InterruptSource&0x40)UsbBusReset();   //總線復位中斷處理
   if(InterruptSource&0x01)UsbEp0Out();     //端點0輸出中斷處理
   if(InterruptSource&0x02)UsbEp0In();      //端點0輸入中斷處理
   if(InterruptSource&0x04)UsbEp1Out();     //端點1輸出中斷處理
   if(InterruptSource&0x08)UsbEp1In();      //端點1輸入中斷處理
   if(InterruptSource&0x10)UsbEp2Out();     //端點2輸出中斷處理
   if(InterruptSource&0x20)UsbEp2In();      //端點2輸入中斷處理
  }
  if(ConfigValue!=0) //如果已經設置為非0的配置,則可以返回報告數據
  {
   //為顯示KEY1選擇功能,當KEY1按住時,將LED8點亮,表示鍵盤功能狀態
   if(KeyPress & KEY1)
   {
    OnLed8();
   }
   else
   {
    OffLed8();
   }
   if(!Ep1InIsBusy)  //如果端點1輸入沒有處于忙狀態,則可以發送數據
   {
    KeyCanChange=0;  //禁止按鍵掃描
    if(KeyUp||KeyDown) //如果有按鍵事件發生
    {
     SendReport();  //則返回報告
    }
    KeyCanChange=1;  //允許按鍵掃描
   }
  }
 }
}
////////////////////////End of function//////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91在线|亚洲| 天天av天天翘天天综合网色鬼国产| 国产69精品久久99不卡| 国产精品麻豆一区二区| 91麻豆国产自产在线观看| 国产一区视频网站| 久久人人97超碰com| 99视频在线观看一区三区| 亚洲综合色丁香婷婷六月图片| 欧美一区二区视频在线观看2020| 中文字幕精品三区| 欧美私模裸体表演在线观看| 麻豆一区二区在线| 中文无字幕一区二区三区| 在线亚洲精品福利网址导航| 日韩精品五月天| 国产精品免费看片| 欧美一级二级三级蜜桃| 成人国产精品免费网站| 日韩专区中文字幕一区二区| 久久免费美女视频| 日本韩国欧美在线| 国产一区二区三区久久悠悠色av | 精品一区二区三区在线观看国产| 国产精品你懂的在线| 日韩精品一区二区三区四区| a亚洲天堂av| 国产综合色在线| 亚洲一区二区在线观看视频| 精品久久国产老人久久综合| 色香蕉成人二区免费| 国产福利一区二区三区视频| 亚洲成av人片一区二区| √…a在线天堂一区| 国产亚洲成av人在线观看导航 | 色婷婷久久久亚洲一区二区三区| 五月天婷婷综合| 一区二区三区四区国产精品| 亚洲激情六月丁香| 欧美三日本三级三级在线播放| 高清视频一区二区| 精品夜夜嗨av一区二区三区| 日本欧美一区二区三区| 日韩—二三区免费观看av| 国产精品家庭影院| 欧美激情综合在线| 久久影院视频免费| 久久夜色精品国产噜噜av| 精品久久国产字幕高潮| 精品久久久久久最新网址| 欧美一区二区三区四区视频| 这里只有精品免费| 日韩午夜在线观看视频| 日韩午夜激情免费电影| 精品入口麻豆88视频| 精品日韩欧美一区二区| 欧美刺激午夜性久久久久久久| 91精品在线观看入口| 日韩欧美在线1卡| 久久久噜噜噜久久人人看| 日本最新不卡在线| 国产精品美女久久久久久| 26uuu国产日韩综合| 久久久久一区二区三区四区| 中文字幕不卡的av| 亚洲精品乱码久久久久久| 亚洲国产一区二区三区青草影视| 无码av免费一区二区三区试看| 日韩精品乱码av一区二区| 国内精品伊人久久久久影院对白| 国产精品小仙女| 91精品办公室少妇高潮对白| 精品视频在线看| 中文字幕在线不卡| 久久亚洲捆绑美女| 亚洲精品成人天堂一二三| 亚洲午夜精品网| 国产成人av电影免费在线观看| 一本到三区不卡视频| 精品国产电影一区二区| 国产精品九色蝌蚪自拍| 日本vs亚洲vs韩国一区三区二区 | 成人免费在线播放视频| 午夜精品久久久久久久99樱桃| 国产伦精品一区二区三区免费迷| 91福利在线看| 欧美国产亚洲另类动漫| 日本视频在线一区| 色哟哟精品一区| 久久久久久久综合日本| 亚洲成人中文在线| 97se亚洲国产综合自在线| 欧美va亚洲va国产综合| 亚洲成人在线免费| 一本在线高清不卡dvd| 国产人成一区二区三区影院| 日本伊人色综合网| 欧美日韩精品一区二区三区| 中文字幕一区视频| 全国精品久久少妇| 欧美视频一区二区在线观看| 中文字幕一区二区三区在线观看| 国产精品夜夜爽| 欧美一区日本一区韩国一区| 亚洲午夜免费福利视频| 中文字幕av一区 二区| 国产精品美女视频| 国产黄色精品视频| 久久综合狠狠综合久久综合88 | 中文字幕高清一区| 成人少妇影院yyyy| 中文字幕欧美一| 播五月开心婷婷综合| 中文字幕乱码日本亚洲一区二区| 国产·精品毛片| 亚洲欧洲制服丝袜| 欧美三级乱人伦电影| 亚洲国产一区在线观看| 欧美乱妇15p| 蜜桃一区二区三区在线观看| 日韩一区二区三区四区| 韩国一区二区三区| 久久精品亚洲精品国产欧美kt∨| 韩国欧美国产1区| 国产精品国产自产拍在线| 色综合一区二区三区| 日韩综合小视频| 国产婷婷色一区二区三区| 91视频一区二区三区| 石原莉奈在线亚洲二区| 国产精品乱人伦| 日韩一区二区三区高清免费看看 | 精品无人区卡一卡二卡三乱码免费卡 | 欧美日韩国产123区| av在线一区二区| 国产不卡免费视频| 91亚洲精品久久久蜜桃| 亚洲一区二区在线免费看| 亚洲成年人影院| 中文字幕亚洲成人| 久久婷婷一区二区三区| 欧美一区二区三区视频| 欧美日韩高清影院| 一本到不卡免费一区二区| jizz一区二区| av网站一区二区三区| 福利一区二区在线观看| 国产自产2019最新不卡| 久久99国产精品免费网站| 日本人妖一区二区| 日本最新不卡在线| 日韩经典一区二区| 蜜臀av性久久久久蜜臀aⅴ | 日本韩国欧美国产| 色综合色综合色综合色综合色综合| 福利91精品一区二区三区| 成人av资源网站| 91蝌蚪porny成人天涯| 91国产视频在线观看| 欧美日韩国产中文| 日韩一区二区三区在线| 久久蜜桃av一区二区天堂| 国产婷婷色一区二区三区在线| 久久久亚洲午夜电影| 国产午夜亚洲精品不卡| 中文字幕欧美日韩一区| 中文字幕在线视频一区| 亚洲美女屁股眼交3| 亚洲一二三区在线观看| 香蕉成人伊视频在线观看| 蜜桃视频在线观看一区| 国产精品一区二区男女羞羞无遮挡| 高清视频一区二区| 日本二三区不卡| 91精品国产91久久久久久最新毛片| 精品国产免费久久| 中文字幕免费不卡| 一区二区三区 在线观看视频| 亚洲成av人片在线观看无码| 国产毛片一区二区| 日韩**一区毛片| aaa亚洲精品| 欧美一级欧美三级在线观看 | 亚洲一级电影视频| 久88久久88久久久| 色噜噜狠狠成人中文综合| 91.成人天堂一区| 国产精品久久久久久久蜜臀| 天天色综合天天| 91视频观看免费| 精品久久久久香蕉网| 亚洲一区二区中文在线| 国产69精品一区二区亚洲孕妇| 欧美精品tushy高清| 亚洲欧美一区二区视频| 韩日欧美一区二区三区| 欧美日韩国产bt| 亚洲国产成人自拍| 精东粉嫩av免费一区二区三区| 欧美视频精品在线观看|