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

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

?? ps2key.lst

?? 單片機應用PS/2鍵盤的實例 使用1602液晶顯示和PS/2鍵盤的示例
?? LST
字號:
C51 COMPILER V7.01  PS2KEY                                                                 03/05/2004 01:41:43 PAGE 1   


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

stmt level    source

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

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

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

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av一区二区三区四区| 亚洲国产日韩a在线播放性色| 欧美日韩国产小视频| 成人国产精品视频| 成人久久久精品乱码一区二区三区| 久久草av在线| 国产不卡高清在线观看视频| 国产高清一区日本| 丁香六月综合激情| 色综合色综合色综合色综合色综合| 成人开心网精品视频| 成人精品小蝌蚪| 色婷婷综合久久| 欧美欧美欧美欧美首页| 日韩欧美资源站| 国产亚洲一区二区在线观看| 国产精品久久久久四虎| 一区二区三区国产精华| 亚洲高清免费观看高清完整版在线观看| 一区二区三区精品| 日韩高清一区在线| 久久av老司机精品网站导航| 粉嫩绯色av一区二区在线观看| youjizz国产精品| 欧美视频在线播放| 日韩欧美国产小视频| 国产午夜久久久久| 亚洲欧洲中文日韩久久av乱码| 日韩国产在线观看一区| 国产麻豆成人传媒免费观看| 99精品偷自拍| 日韩免费视频一区二区| 欧美激情在线看| 亚洲激情在线激情| 六月婷婷色综合| 97久久精品人人做人人爽50路| 7777精品伊人久久久大香线蕉 | 欧美日韩色一区| 日韩欧美电影一区| 最新热久久免费视频| 日韩精品高清不卡| 99在线精品观看| 日韩精品一区二区三区蜜臀 | 91色乱码一区二区三区| 91精选在线观看| 亚洲人成精品久久久久久| 美国三级日本三级久久99| 91啪九色porn原创视频在线观看| 欧美一区二区三区免费大片| 国产精品天天看| 捆绑调教一区二区三区| 色婷婷综合久久久| 国产精品网站一区| 麻豆免费精品视频| 欧美日韩午夜在线| 中文字幕一区二区三区精华液 | 99久久精品免费看国产| 日韩欧美电影一区| 午夜婷婷国产麻豆精品| www.欧美.com| 国产视频911| 精品中文字幕一区二区| 欧美精品自拍偷拍| 亚洲一区在线观看免费| 99免费精品视频| 国产精品看片你懂得| 国内精品伊人久久久久av影院 | 97se亚洲国产综合自在线观| 精品少妇一区二区三区免费观看 | 欧美激情一区二区在线| 久久精品国产一区二区三| 国产女主播一区| 全国精品久久少妇| 欧美一级专区免费大片| 午夜电影网亚洲视频| 欧美少妇xxx| 亚洲国产综合色| 欧美视频自拍偷拍| 丝袜亚洲另类欧美| 欧美一区二区三区免费大片| 免费看日韩精品| 欧美成人精品二区三区99精品| 麻豆免费看一区二区三区| 日韩无一区二区| 精品一区二区三区香蕉蜜桃| 久久综合国产精品| 福利视频网站一区二区三区| 国产精品青草久久| 91福利国产成人精品照片| 亚洲最大成人网4388xx| 欧美性猛片aaaaaaa做受| 亚洲午夜久久久久久久久电影网| 欧美在线观看视频一区二区| 日韩成人午夜精品| 欧美精品一区二区三区蜜桃 | 国产69精品久久99不卡| 中文字幕第一区| 91久久免费观看| 日韩二区三区在线观看| 久久久久成人黄色影片| 99re这里只有精品6| 亚洲第一二三四区| 国产婷婷色一区二区三区四区 | 欧美一区二区在线观看| 黄色小说综合网站| 国产精品久久久久桃色tv| 欧洲激情一区二区| 久久精品久久综合| 国产精品国产三级国产普通话99| 欧洲国产伦久久久久久久| 日本aⅴ免费视频一区二区三区| 久久网站最新地址| 91成人在线精品| 国产一区二区三区综合| 一区二区在线观看av| 日韩欧美黄色影院| 色综合一个色综合| 九九**精品视频免费播放| 亚洲乱码国产乱码精品精98午夜 | 久久精品人人做人人综合 | 亚洲成人免费视频| 国产欧美综合在线观看第十页| 欧美在线免费视屏| 国产91精品一区二区麻豆网站 | 亚洲成在人线在线播放| 国产性色一区二区| 欧美肥大bbwbbw高潮| 成年人国产精品| 国产一区中文字幕| 五月综合激情日本mⅴ| 亚洲色图在线看| 久久久久久久久久美女| 91精品国产一区二区三区香蕉| 色综合久久久久久久久| 国产精品99久久不卡二区| 午夜久久久影院| 一区二区在线电影| 国产精品国模大尺度视频| 久久久久久久久久久久电影| 91精品久久久久久久99蜜桃| 色综合久久六月婷婷中文字幕| 大陆成人av片| 国产精品一区免费在线观看| 麻豆久久久久久| 免费在线看成人av| 亚洲h动漫在线| 午夜精品久久久久| 亚洲成人自拍网| 亚洲成人免费av| 午夜精品久久一牛影视| 亚洲一区二区三区美女| 一区二区三区日本| 亚洲色图欧洲色图婷婷| 136国产福利精品导航| 国产精品你懂的| 国产精品女同一区二区三区| 日本一区二区视频在线观看| 久久久久久久久蜜桃| 国产亚洲精品7777| 日本一区二区三区久久久久久久久不 | 中文字幕乱码久久午夜不卡| 日韩一区二区影院| 欧美成人精品1314www| xf在线a精品一区二区视频网站| 精品国产一二三区| 国产网站一区二区三区| 国产精品三级电影| 亚洲精品久久嫩草网站秘色| 亚洲国产一区二区三区| 日本午夜精品视频在线观看| 久久国产精品99久久人人澡| 国产一区在线精品| av成人免费在线观看| 91福利国产精品| 日韩欧美久久久| 国产精品久久毛片a| 亚洲国产日产av| 美国一区二区三区在线播放| 国产精品自拍毛片| 91蜜桃在线免费视频| 777a∨成人精品桃花网| 欧美精品一区二区三区蜜桃视频| 国产精品毛片a∨一区二区三区| 亚洲免费成人av| 精品一区二区三区在线观看 | 99久久精品免费看国产免费软件| 在线观看91精品国产入口| 日韩欧美你懂的| 国产精品精品国产色婷婷| 婷婷成人激情在线网| 国产成人啪免费观看软件| 日本电影欧美片| 欧美精品一区二区久久婷婷| 亚洲三级免费电影| 毛片av一区二区| 欧美大片在线观看| 国产精品国产三级国产aⅴ原创| 亚洲资源中文字幕| 国产 日韩 欧美大片| 在线成人免费观看|