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

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

?? ps2key.lst

?? 用單片機控制鍵盤的程序,利用中斷獲得鍵盤掃描碼并轉換為ASCII碼
?? LST
字號:
C51 COMPILER V7.10   PS2KEY                                                                04/27/2008 13:04:49 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE PS2KEY
OBJECT MODULE PLACED IN PS2Key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PS2Key.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*============================================================
   2                  使用1602液晶顯示和PS/2鍵盤的示例  
   3                  -------------------------------------------------
   4                     
   5          ==============================================================
   6          
   7          SMC1602A(16*2)模擬口線接線方式
   8          連接線圖:       
   9                 ---------------------------------------------------
  10                 |LCM-----51   |  LCM-----51   |  LCM------51      |
  11                 --------------------------------------------------|
  12                 |DB0-----P1.0 |  DB4-----P1.4 |  RW-------P2.1    |
  13                 |DB1-----P1.1 |  DB5-----P1.5 |  RS-------P2.0    |
  14                 |DB2-----P1.2 |  DB6-----P1.6 |  E--------P2.2    |
  15                 |DB3-----P1.3 |  DB7-----P1.7 |  VLCD接1K電阻到GND|
  16                 ---------------------------------------------------
  17          
  18          Keyboard接線
  19                PS/2--------51
  20                1 DATA------P3.4
  21                3 GND
  22                4 VCC
  23                5 CLK-------P3.3 接在51的外部中斷,觸發方式為低電平
  24          
  25          
  26          [注:AT89x51使用12M或11.0592M晶振,實測使用11.059M
  27          [Keil uV2 7.01編譯運行通過 程序中沒有做鍵盤數據的奇偶校驗]
  28          
  29          =============================================================*/
  30          #include <at89x51.h>
  31          #include "scancodes.h"
  32          
  33          #define LCM_RW  P2_1 //定義LCD引腳
  34          #define LCM_RS  P2_0
  35          #define LCM_E   P2_2
  36          #define LCM_Data  P0
  37          
  38          #define Key_Data P3_4 //定義Keyboard引腳
  39          #define Key_CLK  P3_3
  40          
  41          #define Busy    0x80 //用于檢測LCM狀態字中的Busy標識
  42          
  43          void LCMInit(void);
  44          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
  45          void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
  46          void Delay5Ms(void);
  47          void Delay400Ms(void);
  48          void Decode(unsigned char ScanCode);
  49          void WriteDataLCM(unsigned char WDLCM);
  50          void WriteCommandLCM(unsigned char WCLCM,BuysC);
  51          
  52          unsigned char ReadDataLCM(void);
  53          unsigned char ReadStatusLCM(void);
  54          unsigned char code cdle_net[] = {"  www.pp51.com  "};
  55          unsigned char code email[] = {"pp51com@163.com"};
C51 COMPILER V7.10   PS2KEY                                                                04/27/2008 13:04:49 PAGE 2   

  56          unsigned char code Cls[] = {"                "};
  57          static unsigned char IntNum = 0; //中斷次數計數
  58          static unsigned char KeyV; //鍵值
  59          static unsigned char DisNum = 0; //顯示用指針
  60          static unsigned char Key_UP=0, Shift = 0;//Key_UP是鍵松開標識,Shift是Shift鍵按下標識
  61          static unsigned char BF = 0; //標識是否有字符被收到
  62          
  63          void main(void)
  64          {
  65   1              unsigned char TempCyc;
  66   1      
  67   1              Delay400Ms(); //啟動等待,等LCM講入工作狀態
  68   1              LCMInit(); //LCM初始化
  69   1              Delay5Ms(); //延時片刻(可不要)
  70   1      
  71   1              DisplayListChar(0, 0, cdle_net);
  72   1              DisplayListChar(0, 1, email);
  73   1              ReadDataLCM();//測試用句無意義
  74   1              for (TempCyc=0; TempCyc<10; TempCyc++)
  75   1                              Delay400Ms(); //延時
  76   1              DisplayListChar(0, 1, Cls);     
  77   1              
  78   1              IT1 = 0; //設外部中斷1為低電平觸發
  79   1              EA = 1;
  80   1              EX1 = 1; //開中斷
  81   1      
  82   1              do
  83   1                      {
  84   2                              if (BF)
  85   2                                      Decode(KeyV);
  86   2                              else
  87   2                                      EA = 1; //開中斷
  88   2                      }
  89   1              while(1);
  90   1      }
  91          
  92          //寫數據
  93          void WriteDataLCM(unsigned char WDLCM) 
  94          {
  95   1              ReadStatusLCM(); //檢測忙
  96   1              LCM_Data = WDLCM;
  97   1              LCM_RS = 1;
  98   1              LCM_RW = 0;
  99   1              LCM_E = 0; //若晶振速度太高可以在這后加小的延時
 100   1              LCM_E = 0; //延時
 101   1              LCM_E = 1;
 102   1      }
 103          
 104          //寫指令
 105          void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC為0時忽略忙檢測
 106          {
 107   1              if (BuysC) ReadStatusLCM(); //根據需要檢測忙
 108   1              LCM_Data = WCLCM;
 109   1              LCM_RS = 0;
 110   1              LCM_RW = 0;     
 111   1              LCM_E = 0;
 112   1              LCM_E = 0;
 113   1              LCM_E = 1;      
 114   1      }
 115          
 116          //讀數據
 117          unsigned char ReadDataLCM(void)
C51 COMPILER V7.10   PS2KEY                                                                04/27/2008 13:04:49 PAGE 3   

 118          {
 119   1              LCM_RS = 1; 
 120   1              LCM_RW = 1;
 121   1              LCM_E = 0;
 122   1              LCM_E = 0;
 123   1              LCM_E = 1;
 124   1              return(LCM_Data);
 125   1      }
 126          
 127          //讀狀態
 128          unsigned char ReadStatusLCM(void)
 129          {
 130   1              LCM_Data = 0xFF; 
 131   1              LCM_RS = 0;
 132   1              LCM_RW = 1;
 133   1              LCM_E = 0;
 134   1              LCM_E = 0;
 135   1              LCM_E = 1;
 136   1              while (LCM_Data & Busy); //檢測忙信號
 137   1              return(LCM_Data);
 138   1      }
 139          
 140          void LCMInit(void) //LCM初始化
 141          {
 142   1              LCM_Data = 0;
 143   1              WriteCommandLCM(0x38,0); //三次顯示模式設置,不檢測忙信號
 144   1              Delay5Ms(); 
 145   1              WriteCommandLCM(0x38,0);
 146   1              Delay5Ms(); 
 147   1              WriteCommandLCM(0x38,0);
 148   1              Delay5Ms(); 
 149   1      
 150   1              WriteCommandLCM(0x38,1); //顯示模式設置,開始要求每次檢測忙信號
 151   1              WriteCommandLCM(0x08,1); //關閉顯示
 152   1              WriteCommandLCM(0x01,1); //顯示清屏
 153   1              WriteCommandLCM(0x06,1); // 顯示光標移動設置
 154   1              WriteCommandLCM(0x0F,1); // 顯示開及光標設置
 155   1      }
 156          
 157          //按指定位置顯示一個字符
 158          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
 159          {
 160   1              Y &= 0x1;
 161   1              X &= 0xF; //限制X不能大于15,Y不能大于1
 162   1              if (Y) X |= 0x40; //當要顯示第二行時地址碼+0x40;
 163   1              X |= 0x80; //算出指令碼
 164   1              WriteCommandLCM(X, 1); //發命令字
 165   1              WriteDataLCM(DData); //發數據
 166   1      }
 167          
 168          //按指定位置顯示一串字符
 169          void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
 170          {
 171   1              unsigned char ListLength;
 172   1      
 173   1        ListLength = 0;
 174   1              Y &= 0x1;
 175   1              X &= 0xF; //限制X不能大于15,Y不能大于1
 176   1              while (DData[ListLength]>0x19) //若到達字串尾則退出
 177   1                      {
 178   2                              if (X <= 0xF) //X坐標應小于0xF
 179   2                                      {
C51 COMPILER V7.10   PS2KEY                                                                04/27/2008 13:04:49 PAGE 4   

 180   3                                              DisplayOneChar(X, Y, DData[ListLength]); //顯示單個字符
 181   3                                              ListLength++;
 182   3                                              X++;
 183   3                                      }
 184   2                      }
 185   1      }
 186          
 187          //5ms延時
 188          void Delay5Ms(void)
 189          {
 190   1              unsigned int TempCyc = 5552;
 191   1              while(TempCyc--);
 192   1      }
 193          
 194          //400ms延時
 195          void Delay400Ms(void)
 196          {
 197   1              unsigned char TempCycA = 5;
 198   1              unsigned int TempCycB;
 199   1              while(TempCycA--)
 200   1                      {
 201   2                              TempCycB=7269;
 202   2                              while(TempCycB--);
 203   2                      };
 204   1      }
 205          
 206          void Keyboard_out(void) interrupt 2
 207          {
 208   1              if ((IntNum > 0) && (IntNum < 9))
 209   1                      {                       
 210   2                              KeyV = KeyV >> 1; //因鍵盤數據是低>>高,結合上一句所以右移一位
 211   2                              if (Key_Data) KeyV = KeyV | 0x80; //當鍵盤數據線為1時為1到最高位
 212   2                      }
 213   1              IntNum++;
 214   1              while (!Key_CLK); //等待PS/2CLK拉高
 215   1      
 216   1              if (IntNum > 10)
 217   1                      {
 218   2                              IntNum = 0; //當中斷11次后表示一幀數據收完,清變量準備下一次接收
 219   2                              BF = 1; //標識有字符輸入完了
 220   2                              EA = 0; //關中斷等顯示完后再開中斷 (注:如這里不用BF和關中斷直接調Decode()則所Decode中所調用的所有函數

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久一区| 欧美精品久久久久久久久老牛影院 | 99vv1com这只有精品| 亚洲电影在线播放| 国产乱子伦视频一区二区三区 | 国产精品每日更新在线播放网址| 另类综合日韩欧美亚洲| 亚洲人成亚洲人成在线观看图片| 欧美性高清videossexo| 国产精品456露脸| 日本视频在线一区| 欧美一区二区精品| 色狠狠av一区二区三区| 国产一区二区三区四区五区入口| 麻豆精品久久精品色综合| 欧美tk—视频vk| 日韩你懂的电影在线观看| 欧美日韩一区久久| 99久久综合精品| 欧美老女人在线| 国产精品911| 激情六月婷婷综合| 国产成人精品免费网站| 国产毛片一区二区| 日韩欧美一级在线播放| 日本一二三不卡| 欧美国产禁国产网站cc| 欧美精品丝袜久久久中文字幕| 欧美日韩国产在线观看| 色哟哟亚洲精品| 日韩欧美国产精品| 国产欧美精品区一区二区三区 | 欧美精品aⅴ在线视频| 久久伊99综合婷婷久久伊| 久久精品视频在线看| 中文字幕日韩一区| 日韩高清欧美激情| 欧美亚男人的天堂| 国产不卡一区视频| 日韩一区二区免费电影| 日韩精品一区二区三区四区 | 国产精品久久久一区麻豆最新章节| 亚洲欧美日本在线| 亚洲午夜在线观看视频在线| 亚洲已满18点击进入久久| 精品一区二区三区蜜桃| 一本久道久久综合中文字幕| 日韩精品中午字幕| 亚洲一区二区偷拍精品| eeuss国产一区二区三区| 久久久久高清精品| 日韩精品电影在线观看| 精品一区二区三区免费观看| 欧美三级在线看| 亚洲一区视频在线观看视频| 精品99999| 日韩区在线观看| 99在线热播精品免费| 秋霞av亚洲一区二区三| 精品久久人人做人人爰| 国产不卡视频一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品亚洲人在线观看| 亚洲国产中文字幕| 国产精品成人一区二区三区夜夜夜| 欧美老肥妇做.爰bbww| www.在线成人| 懂色av一区二区三区蜜臀 | 欧美日韩一区 二区 三区 久久精品| 久国产精品韩国三级视频| 日日骚欧美日韩| 亚洲最新视频在线观看| 亚洲午夜羞羞片| 日韩电影在线观看一区| 五月天国产精品| 麻豆专区一区二区三区四区五区| 一区二区久久久| 日韩精品免费视频人成| 偷拍亚洲欧洲综合| 国内精品视频666| 国产麻豆日韩欧美久久| 成人a免费在线看| 欧美综合一区二区三区| 日韩精品一区二区三区三区免费 | 成人国产精品免费网站| 99久久久国产精品| 欧美精品 国产精品| 日韩女优av电影| 亚洲视频 欧洲视频| 毛片一区二区三区| 99在线精品视频| 日韩欧美另类在线| 中文字幕电影一区| 亚洲综合在线电影| 无码av免费一区二区三区试看| 日本亚洲电影天堂| 色国产综合视频| 国产日产欧美一区二区三区| 亚洲成a人在线观看| fc2成人免费人成在线观看播放| 欧美va亚洲va在线观看蝴蝶网| 久久欧美一区二区| 日日噜噜夜夜狠狠视频欧美人| 成人av动漫在线| 亚洲视频香蕉人妖| 成人精品在线视频观看| 久久人人超碰精品| 亚洲国产精品久久艾草纯爱| 91香蕉视频污在线| 国产精品污污网站在线观看| 蜜桃一区二区三区四区| 欧美一区二区三级| 美女国产一区二区| 欧美成人三级电影在线| 国产精品69久久久久水密桃 | 极品美女销魂一区二区三区| 91精品国产日韩91久久久久久| 午夜精品免费在线观看| 欧美美女激情18p| 九九精品一区二区| 中文字幕一区二区视频| 欧美日韩亚洲高清一区二区| 亚洲大片免费看| 中文字幕一区二区三区视频| 国产成人亚洲精品狼色在线| 51精品国自产在线| 日韩avvvv在线播放| 久久精子c满五个校花| 成人99免费视频| 亚洲成人动漫在线观看| 日韩一级在线观看| 久久er精品视频| 久久噜噜亚洲综合| 欧美一区二区三区啪啪| 成人午夜免费视频| 麻豆一区二区在线| 亚洲国产欧美日韩另类综合 | 26uuu欧美| 在线成人高清不卡| 欧美影院精品一区| thepron国产精品| 国产福利一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 亚洲精品乱码久久久久久久久| 国产喂奶挤奶一区二区三区| 欧美一级国产精品| 欧美一级日韩一级| 日韩一二三区不卡| 日韩久久久久久| 久久精品夜色噜噜亚洲a∨| 91精品国产乱码| 久久久久久久久久电影| 久久亚洲免费视频| 欧美极品aⅴ影院| 一区在线观看视频| 亚洲五月六月丁香激情| 日韩avvvv在线播放| 韩国精品在线观看| 成人黄动漫网站免费app| 成人白浆超碰人人人人| 91色porny在线视频| 欧美在线免费播放| 日韩欧美卡一卡二| 国产精品成人一区二区艾草| 欧美国产丝袜视频| 国产亚洲一二三区| 亚洲免费电影在线| 亚洲天堂福利av| 狠狠色伊人亚洲综合成人| 免费观看91视频大全| 97精品国产露脸对白| 555夜色666亚洲国产免| 国产精品欧美一区喷水| 国产人伦精品一区二区| 亚洲1区2区3区视频| 麻豆国产91在线播放| 色乱码一区二区三区88| 欧美酷刑日本凌虐凌虐| 亚洲国产欧美在线| 婷婷激情综合网| 国产成人午夜99999| 99r国产精品| 久久免费偷拍视频| 久久av中文字幕片| 欧美男人的天堂一二区| 日韩毛片视频在线看| 精品中文字幕一区二区小辣椒| 91久久线看在观草草青青| 中文文精品字幕一区二区| 国产一区欧美二区| 国产欧美一区二区三区在线看蜜臀 | 久久久久久久av麻豆果冻| 久久91精品久久久久久秒播| 在线不卡一区二区| 日韩成人一级片| 精品少妇一区二区三区在线播放| 日日夜夜精品视频免费| 666欧美在线视频| 国产一区免费电影| 国产精品蜜臀在线观看|