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

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

?? main.lst

?? 此源代碼為雙接口法USB鍵盤鼠標開發源代碼
?? LST
字號:
C51 COMPILER V7.06   MAIN                                                                  11/16/2008 15:59:35 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Main.c BROWSE DEBUG OBJECTEXTEND TABS(1)

stmt level    source

   1          /******************************************************************
   2             本程序只供學習使用,未經作者許可,不得用于其它任何用途
   3             
   4                  歡迎訪問我的USB專區:http://group.ednchina.com/93/
   5                  歡迎訪問我的blog:   http://www.ednchina.com/blog/computer00
   6                                       http://computer00.21ic.org
   7          
   8                  感謝PCB贊助商——電子園: http://bbs.cepark.com/
   9          
  10          main.c file
  11          
  12          作者:電腦圈圈
  13          建立日期: 2008.06.27
  14          修改日期: 2008.07.16
  15          版本:V1.1
  16          版權所有,盜版必究。
  17          Copyright(C) 電腦圈圈 2008-2018
  18          All rights reserved            
  19          *******************************************************************/
  20          
  21          #include <AT89X52.H>  //頭文件
  22          #include "Key.h"
  23          #include "Led.h"
  24          #include "UART.h"
  25          #include "pdiusbd12.h"
  26          #include "UsbCore.h"
  27          #include "config.h"
  28          
  29          code uint8 HeadTable[][74]={
  30          "********************************************************************\r\n",
  31          "******    《圈圈教你玩USB》之 帶鼠標的USB鍵盤(雙接口實現)   ******\r\n",
  32          "******                      AT89S52 CPU                       ******\r\n",
  33          "******                  建立日期:",__DATE__,"                 ******\r\n",
  34          "******                   建立時間:",__TIME__,"                   ******\r\n",
  35          "******                    作者:電腦圈圈                      ******\r\n",
  36          "******                    歡迎訪問作者的                      ******\r\n",
  37          "******           USB專區:http://group.ednchina.com/93/       ******\r\n",
  38          "******      BLOG1:http://www.ednchina.com/blog/computer00    ******\r\n",
  39          "******                BLOG2:http://computer00.21ic.org       ******\r\n",
  40          "******                  請按K1-K8分別進行測試                 ******\r\n",
  41          "******   K1:功能選擇鍵:按下時K2~K8為鍵盤,松開時K2~K8為鼠標  ******\r\n",
  42          "******                      鍵盤功能時                        ******\r\n",
  43          "******             K2:左Shift鍵  K3:左Alt鍵  K4:1鍵           ******\r\n",
  44          "******       K5:2鍵  K6:3鍵  K7:Caps Lock鍵 K8:Num Lock鍵     ******\r\n",
  45          "******  注意:數字鍵是數字小鍵盤,必須打開Num Lock才是數字鍵  ******\r\n",
  46          "******                      鼠標功能時                        ******\r\n",
  47          "******     K2:光標左移  K3:光標右移  K4:光標上移 K5:光標下移  ******\r\n",
  48          "******            K6:鼠標左鍵  K7:鼠標中鍵  K8:鼠標右鍵       ******\r\n",
  49          "********************************************************************\r\n",
  50          };
  51          
  52          /********************************************************************
  53          函數功能:根據按鍵情況返回鍵盤報告的函數。
  54          入口參數:無。
  55          返    回:無。
C51 COMPILER V7.06   MAIN                                                                  11/16/2008 15:59:35 PAGE 2   

  56          備    注:無。
  57          ********************************************************************/
  58          void SendKeyboardReport(void)
  59          {
  60   1       //需要返回的9字節報告的緩沖(一字節報告ID加鍵盤8字節報告)
  61   1       
  62   1       uint8 Buf[9]={0,0,0,0,0,0,0,0,0}; 
  63   1       
  64   1       //由于需要返回多個按鍵,所以需要增加一個變量來保存當前的位置。
  65   1       //由于報告ID占用第一字節,所以普通按鍵從第四字節開始存放。
  66   1       uint8 i=3; 
  67   1       
  68   1       //我們用KEY1鍵來選擇剩余的7個鍵是鍵盤功能還是鼠標功能。
  69   1       //當KEY1按住時,剩余7個鍵為鍵盤功能,這7個鍵的功能跟鍵盤
  70   1       //實例的一樣。
  71   1       
  72   1       //根據不同的按鍵設置輸入報告
  73   1       Buf[0]=0x01;  //第一字節為報告ID,報告ID為1。
  74   1       if(KeyPress & KEY2) //如果KEY2按住
  75   1       {
  76   2        Buf[1]|=0x02;  //KEY2為左Shift鍵。
  77   2       }
  78   1       if(KeyPress & KEY3) //如果KEY3按住
  79   1       {
  80   2        Buf[1]|=0x04;  //KEY3為左Alt鍵
  81   2       }
  82   1       if(KeyPress & KEY4) //如果KEY4按住
  83   1       {
  84   2        Buf[i]=0x59;  //KEY4為數字小鍵盤1鍵。
  85   2        i++;  //切換到下個位置。
  86   2       }
  87   1       if(KeyPress & KEY5)  //如果KEY5按住
  88   1       {
  89   2        Buf[i]=0x5A;  //KEY5數字小鍵盤2鍵。
  90   2        i++;  //切換到下個位置。
  91   2       }
  92   1       if(KeyPress & KEY6)  //如果KEY6按住
  93   1       {
  94   2        Buf[i]=0x5B;  //KEY6為數字小鍵盤3鍵。
  95   2        i++;  //切換到下個位置。
  96   2       }
  97   1       if(KeyPress & KEY7)  //如果KEY7按住
  98   1       {
  99   2        Buf[i]=0x39;  //KEY7為大/小寫切換鍵。
 100   2        i++;  //切換到下個位置。
 101   2       }
 102   1       if(KeyPress & KEY8)  //如果KEY8按住
 103   1       {
 104   2        Buf[i]=0x53;  //KEY8為數字小鍵盤功能切換鍵。
 105   2       }
 106   1       //報告準備好了,通過端點1返回,長度為9字節。
 107   1       D12WriteEndpointBuffer(3,9,Buf);
 108   1       Ep1InIsBusy=1;  //設置端點1輸入忙標志。
 109   1       //記得清除KeyUp和KeyDown
 110   1       KeyUp=0;
 111   1       KeyDown=0;
 112   1      }
 113          ////////////////////////End of function//////////////////////////////
 114          
 115          /********************************************************************
 116          函數功能:根據按鍵情況返回鼠標報告的函數。
 117          入口參數:無。
C51 COMPILER V7.06   MAIN                                                                  11/16/2008 15:59:35 PAGE 3   

 118          返    回:無。
 119          備    注:無。
 120          ********************************************************************/
 121          void SendMouseReport(void)
 122          {
 123   1       //需要返回的5字節報告的緩沖(一字節報告ID加鍵盤4字節報告)
 124   1       
 125   1       uint8 Buf[5]={0,0,0,0,0}; 
 126   1       
 127   1       //當KEY1松開時,剩余7個鍵為鼠標功能,功能分別為:
 128   1       //KEY2:光標左移,KEY3:光標右移,KEY4:光標上移,KEY5:光標下移。
 129   1       //KEY6:鼠標左鍵,KEY7:鼠標中鍵,KEY8:鼠標右鍵。
 130   1       
 131   1       //根據不同的按鍵設置輸入報告。注意此處,報告ID要跟報告描述符中的一致。
 132   1       Buf[0]=0x01;  //第一字節為報告ID,報告ID為1。
 133   1       if(KeyDown & KEY2) //如果KEY2按下
 134   1       {
 135   2        Buf[2]=-10;  //KEY2為鼠標左移,按一次移動10個單位。
 136   2       }
 137   1       if(KeyDown & KEY3) //如果KEY3按下
 138   1       {
 139   2        Buf[2]=10;  //KEY3為鼠標右移,按一次移動10個單位。
 140   2       }
 141   1       if(KeyDown & KEY4) //如果KEY4按下
 142   1       {
 143   2        Buf[3]=-10;  //KEY4為鼠標上移,按一次移動10個單位。
 144   2       }
 145   1       if(KeyDown & KEY5)  //如果KEY5按下
 146   1       {
 147   2        Buf[3]=10;  //KEY5為鼠標下移,按一次移動10個單位。
 148   2       }
 149   1       if(KeyPress & KEY6)  //如果KEY6按住
 150   1       {
 151   2        Buf[1]|=0x01;  //KEY6為鼠標左鍵。
 152   2       }
 153   1       if(KeyPress & KEY7)  //如果KEY7按住
 154   1       {
 155   2        Buf[1]|=0x04;  //KEY7為鼠標中鍵。
 156   2       }
 157   1       if(KeyPress & KEY8)  //如果KEY8按住
 158   1       {
 159   2        Buf[1]|=0x02;  //KEY8為鼠標右鍵。
 160   2       }
 161   1       //注意此處,要通過端點2返回。
 162   1       //報告準備好了,通過端點2返回,長度為5字節。
 163   1       D12WriteEndpointBuffer(5,5,Buf);
 164   1       Ep2InIsBusy=1;  //設置端點2輸入忙標志。
 165   1       //記得清除KeyUp和KeyDown
 166   1       KeyUp=0;
 167   1       KeyDown=0;
 168   1      }
 169          ////////////////////////End of function//////////////////////////////
 170          
 171          /********************************************************************
 172          函數功能:主函數。
 173          入口參數:無。
 174          返    回:無。
 175          備    注:無。
 176          ********************************************************************/
 177          void main(void)  //主函數
 178          {
 179   1       uint8 i;
C51 COMPILER V7.06   MAIN                                                                  11/16/2008 15:59:35 PAGE 4   

 180   1       uint16 id;
 181   1       uint8 InterruptSource;
 182   1       
 183   1       EA=1; //打開中斷
 184   1       InitKeyboard(); //初始化按鍵
 185   1       InitUART();  //初始化串口
 186   1       
 187   1       for(i=0;i<24;i++)   //顯示信息
 188   1       {
 189   2        Prints(HeadTable[i]);
 190   2       }
 191   1       
 192   1       id=D12ReadID();
 193   1      
 194   1       Prints("Your D12 chip\'s ID is: ");
 195   1       PrintShortIntHex(id);
 196   1      
 197   1       if(id==0x1012)
 198   1       {
 199   2        Prints(". ID is correct! Congratulations!\r\n\r\n");
 200   2       }
 201   1       else
 202   1       {
 203   2        Prints(". ID is incorrect! What a pity!\r\n\r\n");
 204   2       }
 205   1       
 206   1       UsbDisconnect();  //先斷開USB連接
 207   1       UsbConnect();  //將USB連接上
 208   1       ConfigValue=0; //配置值初始化為0
 209   1       
 210   1       while(1)  //死循環
 211   1       {
 212   2        if(D12GetIntPin()==0) //如果有中斷發生
 213   2        {
 214   3         D12WriteCommand(READ_INTERRUPT_REGISTER);  //寫讀中斷寄存器的命令
 215   3         InterruptSource=D12ReadByte(); //讀回第一字節的中斷寄存器
 216   3         if(InterruptSource&0x80)UsbBusSuspend(); //總線掛起中斷處理
 217   3         if(InterruptSource&0x40)UsbBusReset();   //總線復位中斷處理
 218   3         if(InterruptSource&0x01)UsbEp0Out();     //端點0輸出中斷處理
 219   3         if(InterruptSource&0x02)UsbEp0In();      //端點0輸入中斷處理
 220   3         if(InterruptSource&0x04)UsbEp1Out();     //端點1輸出中斷處理
 221   3         if(InterruptSource&0x08)UsbEp1In();      //端點1輸入中斷處理
 222   3         if(InterruptSource&0x10)UsbEp2Out();     //端點2輸出中斷處理
 223   3         if(InterruptSource&0x20)UsbEp2In();      //端點2輸入中斷處理
 224   3        }
 225   2        if(ConfigValue!=0) //如果已經設置為非0的配置,則可以返回報告數據
 226   2        {
 227   3         //為顯示KEY1選擇功能,當KEY1按住時,將LED8點亮,表示鍵盤功能狀態
 228   3         if(KeyPress & KEY1)
 229   3         {
 230   4          OnLed8();
 231   4          //如果端點1輸入沒有處于忙狀態,則可以發送數據
 232   4          if(!Ep1InIsBusy)
 233   4          {
 234   5           KeyCanChange=0;  //禁止按鍵掃描
 235   5           if(KeyUp||KeyDown) //如果有按鍵事件發生
 236   5           {
 237   6            SendKeyboardReport();  //則返回報告
 238   6           }
 239   5           KeyCanChange=1;  //允許按鍵掃描
 240   5          }
 241   4         }
C51 COMPILER V7.06   MAIN                                                                  11/16/2008 15:59:35 PAGE 5   

 242   3         else
 243   3         {
 244   4          OffLed8();
 245   4          //如果端點2輸入沒有處于忙狀態,則可以發送數據
 246   4          if(!Ep2InIsBusy)
 247   4          {
 248   5           KeyCanChange=0;  //禁止按鍵掃描
 249   5           if(KeyUp||KeyDown) //如果有按鍵事件發生
 250   5           {
 251   6            SendMouseReport();  //則返回報告
 252   6           }
 253   5           KeyCanChange=1;  //允許按鍵掃描
 254   5          }    
 255   4         }
 256   3        }
 257   2       }
 258   1      }
 259          ////////////////////////End of function//////////////////////////////


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    477    ----
   CONSTANT SIZE    =   1888    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      18
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产一区二区在线观看| 日韩精品自拍偷拍| 青青草原综合久久大伊人精品 | 在线成人免费视频| 91免费看片在线观看| 成人午夜视频免费看| 成人精品免费看| 91猫先生在线| 欧美va亚洲va在线观看蝴蝶网| 91精品午夜视频| 久久久精品一品道一区| 一区在线观看视频| 亚洲精品你懂的| 性欧美疯狂xxxxbbbb| 久久99久久99| 99久久精品免费看| 精品日本一线二线三线不卡| 国产午夜精品久久久久久久| 亚洲无人区一区| 韩国v欧美v日本v亚洲v| 91美女视频网站| 精品三级在线观看| 亚洲国产乱码最新视频| 国产一区美女在线| 欧美一二三四区在线| 亚洲激情综合网| 91丝袜高跟美女视频| 欧美va日韩va| 亚洲va国产va欧美va观看| 51精品国自产在线| 精品一区二区久久| 国产精品久久久久精k8| 色香蕉成人二区免费| 爽好多水快深点欧美视频| 精品乱人伦小说| 欧美写真视频网站| 国产精品18久久久久久vr| 中文字幕一区二区在线观看| 91女厕偷拍女厕偷拍高清| 午夜精品123| 国产亚洲精品aa| 欧美日韩综合在线| 国产69精品久久777的优势| 亚洲欧美日本韩国| 欧美成人乱码一区二区三区| 国产精品亚洲午夜一区二区三区 | 久久精品亚洲乱码伦伦中文| 精品一区二区三区欧美| 久久网站热最新地址| 中文一区二区完整视频在线观看| 日本不卡免费在线视频| 色猫猫国产区一区二在线视频| 国产精品国产自产拍高清av王其| 91免费看视频| 精品在线你懂的| 亚洲国产人成综合网站| 中文欧美字幕免费| 日韩一区二区三区免费看 | 97久久精品人人做人人爽50路| 久久精品亚洲麻豆av一区二区 | 亚洲国产精品久久久久秋霞影院| 欧美日韩精品欧美日韩精品一综合| 亚洲va韩国va欧美va| 亚洲精品一区二区三区福利| 99免费精品视频| 久久99久久99精品免视看婷婷| 综合久久久久久| 亚洲成av人片| 国产调教视频一区| 国产喷白浆一区二区三区| 精品国产一区二区三区久久影院| 在线不卡中文字幕播放| 91麻豆精品国产91久久久久| 欧美一区二区三区免费视频 | 风间由美一区二区三区在线观看| 麻豆精品精品国产自在97香蕉| 亚洲亚洲人成综合网络| 亚洲欧美激情一区二区| 五月婷婷欧美视频| 精品亚洲免费视频| 色诱视频网站一区| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲一区二区在线观看视频| 亚洲国产裸拍裸体视频在线观看乱了 | 制服.丝袜.亚洲.另类.中文| 精品av久久707| 亚洲国产美女搞黄色| 三级成人在线视频| 韩国一区二区三区| 欧美在线一二三| 91一区二区三区在线观看| 91精品国产一区二区| 中文字幕不卡一区| 久久不见久久见免费视频1| 色综合久久久久久久| 日本一区二区三区四区| 91精品国产综合久久精品图片| 亚洲精品一区二区三区香蕉| 国产精品久久久久久久久免费丝袜| 美女一区二区三区| 水蜜桃久久夜色精品一区的特点| 91视频91自| 日韩一级二级三级| 国产综合久久久久久久久久久久| 日韩亚洲欧美在线观看| 色www精品视频在线观看| 欧洲av一区二区嗯嗯嗯啊| 国产精品66部| 日本高清不卡视频| 337p日本欧洲亚洲大胆精品| 国产一区二区三区四区五区美女| 国产婷婷精品av在线| 5月丁香婷婷综合| 国产精品一区免费视频| 亚洲电影你懂得| 亚洲成va人在线观看| 国产精品三级av在线播放| 欧美激情中文不卡| 欧美日韩在线播| 青青草一区二区三区| 国产婷婷色一区二区三区在线| 岛国av在线一区| 亚洲一区二区三区免费视频| 日本一区二区三区在线不卡| 粉嫩一区二区三区性色av| 亚洲成人免费看| 久久婷婷色综合| 国产乱人伦偷精品视频免下载| 7777精品伊人久久久大香线蕉超级流畅 | 国产99久久久国产精品潘金网站| 日韩无一区二区| 国产999精品久久| 午夜成人免费电影| 亚洲国产高清aⅴ视频| 欧美午夜一区二区三区免费大片| 亚洲成人动漫一区| 久久久久国产精品人| 欧美性猛交xxxx乱大交退制版| 成人黄色在线网站| 中文字幕乱码亚洲精品一区| 91精品免费在线观看| 日本道精品一区二区三区| 国产乱码字幕精品高清av| 奇米色一区二区| 奇米色777欧美一区二区| 亚洲精品成人悠悠色影视| 亚洲情趣在线观看| 中文字幕精品三区| 国产精品美女久久久久久久久| 精品国产乱码久久| 2021久久国产精品不只是精品| 在线不卡一区二区| 欧美三级资源在线| 制服.丝袜.亚洲.另类.中文| 日韩一区二区电影| 777久久久精品| 日韩欧美成人午夜| 中文字幕乱码久久午夜不卡| 久久久久久一二三区| 亚洲色图19p| 亚洲午夜精品在线| 国产一区福利在线| 国产成人午夜精品5599| 色94色欧美sute亚洲13| 日本高清不卡一区| 精品久久久久一区二区国产| 日本一区二区久久| 亚洲综合在线电影| 黄一区二区三区| 欧美军同video69gay| 精品国产免费人成电影在线观看四季| 欧美大片在线观看一区二区| **欧美大码日韩| 精品一区二区精品| 欧美一区二区在线免费播放| 中文字幕一区二区三| 久久成人综合网| 91精品国产综合久久精品app | 成人激情av网| 欧美大片在线观看一区二区| 一区二区三区欧美| 国产成人综合在线| 国产欧美日韩亚州综合| 久久国产日韩欧美精品| 91福利在线免费观看| 亚洲欧洲另类国产综合| 成人小视频免费在线观看| 欧美一区二区三区喷汁尤物| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲黄色av一区| 成人久久18免费网站麻豆| 精品福利一二区| 国产999精品久久久久久| 日本一区二区综合亚洲| 国产精品亚洲成人| 国产亚洲人成网站| 国产v综合v亚洲欧| 自拍偷在线精品自拍偷无码专区| 国产大陆亚洲精品国产| 中文字幕一区在线|