⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ps2key.lst

📁 基于MS51系列单片机的PS2接口程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.08   PS2KEY                                                                04/08/2006 16:38:20 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE PS2KEY
OBJECT MODULE PLACED IN PS2Key.OBJ
COMPILER INVOKED BY: E:\电子应用软件\keil7\C51\BIN\C51.EXE PS2Key.c BROWSE DEBUG OBJECTEXTEND LISTINCLUDE

line level    source

   1          /*============================================================
   2                  使用1602液晶显示和PS/2键盘的示例     明浩  2004/2
   3                  -------------------------------------------------
   4                     http://www.cdle.net  http://bbs.cdle.net
   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.0    |
  13                 |DB1-----P1.1 |  DB5-----P1.5 |  RS-------P2.1    |
  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          
  27          [注:AT89x51使用12M或11.0592M晶振,实测使用11.0592M]
  28          [Keil uV2 7.01编译运行通过 程序中没有做键盘数据的奇偶校验]
  29          
  30          =============================================================*/
  31          #include <at89x51.h>
   1      =1  /*--------------------------------------------------------------------------
   2      =1  AT89X51.H
   3      =1  
   4      =1  Header file for the low voltage Flash Atmel AT89C51 and AT89LV51.
   5      =1  Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
   6      =1  All rights reserved.
   7      =1  --------------------------------------------------------------------------*/
   8      =1  
   9      =1  #ifndef __AT89X51_H__
  10      =1  #define __AT89X51_H__
  11      =1  
  12      =1  /*------------------------------------------------
  13      =1  Byte Registers
  14      =1  ------------------------------------------------*/
  15      =1  sfr P0      = 0x80;
  16      =1  sfr SP      = 0x81;
  17      =1  sfr DPL     = 0x82;
  18      =1  sfr DPH     = 0x83;
  19      =1  sfr PCON    = 0x87;
  20      =1  sfr TCON    = 0x88;
  21      =1  sfr TMOD    = 0x89;
  22      =1  sfr TL0     = 0x8A;
  23      =1  sfr TL1     = 0x8B;
  24      =1  sfr TH0     = 0x8C;
C51 COMPILER V7.08   PS2KEY                                                                04/08/2006 16:38:20 PAGE 2   

  25      =1  sfr TH1     = 0x8D;
  26      =1  sfr P1      = 0x90;
  27      =1  sfr SCON    = 0x98;
  28      =1  sfr SBUF    = 0x99;
  29      =1  sfr P2      = 0xA0;
  30      =1  sfr IE      = 0xA8;
  31      =1  sfr P3      = 0xB0;
  32      =1  sfr IP      = 0xB8;
  33      =1  sfr PSW     = 0xD0;
  34      =1  sfr ACC     = 0xE0;
  35      =1  sfr B       = 0xF0;
  36      =1  
  37      =1  /*------------------------------------------------
  38      =1  P0 Bit Registers
  39      =1  ------------------------------------------------*/
  40      =1  sbit P0_0 = 0x80;
  41      =1  sbit P0_1 = 0x81;
  42      =1  sbit P0_2 = 0x82;
  43      =1  sbit P0_3 = 0x83;
  44      =1  sbit P0_4 = 0x84;
  45      =1  sbit P0_5 = 0x85;
  46      =1  sbit P0_6 = 0x86;
  47      =1  sbit P0_7 = 0x87;
  48      =1  
  49      =1  /*------------------------------------------------
  50      =1  PCON Bit Values
  51      =1  ------------------------------------------------*/
  52      =1  #define IDL_    0x01
  53      =1  
  54      =1  #define STOP_   0x02
  55      =1  #define PD_     0x02    /* Alternate definition */
  56      =1  
  57      =1  #define GF0_    0x04
  58      =1  #define GF1_    0x08
  59      =1  
  60      =1  #define SMOD_   0x80
  61      =1  
  62      =1  /*------------------------------------------------
  63      =1  TCON Bit Registers
  64      =1  ------------------------------------------------*/
  65      =1  sbit IT0  = 0x88;
  66      =1  sbit IE0  = 0x89;
  67      =1  sbit IT1  = 0x8A;
  68      =1  sbit IE1  = 0x8B;
  69      =1  sbit TR0  = 0x8C;
  70      =1  sbit TF0  = 0x8D;
  71      =1  sbit TR1  = 0x8E;
  72      =1  sbit TF1  = 0x8F;
  73      =1  
  74      =1  /*------------------------------------------------
  75      =1  TMOD Bit Values
  76      =1  ------------------------------------------------*/
  77      =1  #define T0_M0_   0x01
  78      =1  #define T0_M1_   0x02
  79      =1  #define T0_CT_   0x04
  80      =1  #define T0_GATE_ 0x08
  81      =1  #define T1_M0_   0x10
  82      =1  #define T1_M1_   0x20
  83      =1  #define T1_CT_   0x40
  84      =1  #define T1_GATE_ 0x80
  85      =1  
  86      =1  #define T1_MASK_ 0xF0
C51 COMPILER V7.08   PS2KEY                                                                04/08/2006 16:38:20 PAGE 3   

  87      =1  #define T0_MASK_ 0x0F
  88      =1  
  89      =1  /*------------------------------------------------
  90      =1  P1 Bit Registers
  91      =1  ------------------------------------------------*/
  92      =1  sbit P1_0 = 0x90;
  93      =1  sbit P1_1 = 0x91;
  94      =1  sbit P1_2 = 0x92;
  95      =1  sbit P1_3 = 0x93;
  96      =1  sbit P1_4 = 0x94;
  97      =1  sbit P1_5 = 0x95;
  98      =1  sbit P1_6 = 0x96;
  99      =1  sbit P1_7 = 0x97;
 100      =1  
 101      =1  /*------------------------------------------------
 102      =1  SCON Bit Registers
 103      =1  ------------------------------------------------*/
 104      =1  sbit RI   = 0x98;
 105      =1  sbit TI   = 0x99;
 106      =1  sbit RB8  = 0x9A;
 107      =1  sbit TB8  = 0x9B;
 108      =1  sbit REN  = 0x9C;
 109      =1  sbit SM2  = 0x9D;
 110      =1  sbit SM1  = 0x9E;
 111      =1  sbit SM0  = 0x9F;
 112      =1  
 113      =1  /*------------------------------------------------
 114      =1  P2 Bit Registers
 115      =1  ------------------------------------------------*/
 116      =1  sbit P2_0 = 0xA0;
 117      =1  sbit P2_1 = 0xA1;
 118      =1  sbit P2_2 = 0xA2;
 119      =1  sbit P2_3 = 0xA3;
 120      =1  sbit P2_4 = 0xA4;
 121      =1  sbit P2_5 = 0xA5;
 122      =1  sbit P2_6 = 0xA6;
 123      =1  sbit P2_7 = 0xA7;
 124      =1  
 125      =1  /*------------------------------------------------
 126      =1  IE Bit Registers
 127      =1  ------------------------------------------------*/
 128      =1  sbit EX0  = 0xA8;       /* 1=Enable External interrupt 0 */
 129      =1  sbit ET0  = 0xA9;       /* 1=Enable Timer 0 interrupt */
 130      =1  sbit EX1  = 0xAA;       /* 1=Enable External interrupt 1 */
 131      =1  sbit ET1  = 0xAB;       /* 1=Enable Timer 1 interrupt */
 132      =1  sbit ES   = 0xAC;       /* 1=Enable Serial port interrupt */
 133      =1  sbit ET2  = 0xAD;       /* 1=Enable Timer 2 interrupt */
 134      =1  
 135      =1  sbit EA   = 0xAF;       /* 0=Disable all interrupts */
 136      =1  
 137      =1  /*------------------------------------------------
 138      =1  P3 Bit Registers (Mnemonics & Ports)
 139      =1  ------------------------------------------------*/
 140      =1  sbit P3_0 = 0xB0;
 141      =1  sbit P3_1 = 0xB1;
 142      =1  sbit P3_2 = 0xB2;
 143      =1  sbit P3_3 = 0xB3;
 144      =1  sbit P3_4 = 0xB4;
 145      =1  sbit P3_5 = 0xB5;
 146      =1  sbit P3_6 = 0xB6;
 147      =1  sbit P3_7 = 0xB7;
 148      =1  
C51 COMPILER V7.08   PS2KEY                                                                04/08/2006 16:38:20 PAGE 4   

 149      =1  sbit RXD  = 0xB0;       /* Serial data input */
 150      =1  sbit TXD  = 0xB1;       /* Serial data output */
 151      =1  sbit INT0 = 0xB2;       /* External interrupt 0 */
 152      =1  sbit INT1 = 0xB3;       /* External interrupt 1 */
 153      =1  sbit T0   = 0xB4;       /* Timer 0 external input */
 154      =1  sbit T1   = 0xB5;       /* Timer 1 external input */
 155      =1  sbit WR   = 0xB6;       /* External data memory write strobe */
 156      =1  sbit RD   = 0xB7;       /* External data memory read strobe */
 157      =1  
 158      =1  /*------------------------------------------------
 159      =1  IP Bit Registers
 160      =1  ------------------------------------------------*/
 161      =1  sbit PX0  = 0xB8;
 162      =1  sbit PT0  = 0xB9;
 163      =1  sbit PX1  = 0xBA;
 164      =1  sbit PT1  = 0xBB;
 165      =1  sbit PS   = 0xBC;
 166      =1  sbit PT2  = 0xBD;
 167      =1  
 168      =1  /*------------------------------------------------
 169      =1  PSW Bit Registers
 170      =1  ------------------------------------------------*/
 171      =1  sbit P    = 0xD0;
 172      =1  sbit FL   = 0xD1;
 173      =1  sbit OV   = 0xD2;
 174      =1  sbit RS0  = 0xD3;
 175      =1  sbit RS1  = 0xD4;
 176      =1  sbit F0   = 0xD5;
 177      =1  sbit AC   = 0xD6;
 178      =1  sbit CY   = 0xD7;
 179      =1  
 180      =1  /*------------------------------------------------
 181      =1  Interrupt Vectors:
 182      =1  Interrupt Address = (Number * 8) + 3
 183      =1  ------------------------------------------------*/
 184      =1  #define IE0_VECTOR      0  /* 0x03 External Interrupt 0 */
 185      =1  #define TF0_VECTOR      1  /* 0x0B Timer 0 */
 186      =1  #define IE1_VECTOR      2  /* 0x13 External Interrupt 1 */
 187      =1  #define TF1_VECTOR      3  /* 0x1B Timer 1 */
 188      =1  #define SIO_VECTOR      4  /* 0x23 Serial port */
 189      =1  
 190      =1  #endif
 191      =1  
 192      =1  
  32          #include "scancodes.h"
   1      =1  unsigned char code UnShifted[59][2] = {
   2      =1  0x1C, 'a',
   3      =1  0x32, 'b',
   4      =1  0x21, 'c',
   5      =1  0x23, 'd',
   6      =1  0x24, 'e',
   7      =1  0x2B, 'f',
   8      =1  0x34, 'g',
   9      =1  0x33, 'h',
  10      =1  0x43, 'i',
  11      =1  0x3B, 'j',
  12      =1  0x42, 'k',
  13      =1  0x4B, 'l',
  14      =1  0x3A, 'm',
  15      =1  0x31, 'n',
  16      =1  0x44, 'o',
  17      =1  0x4D, 'p',
C51 COMPILER V7.08   PS2KEY                                                                04/08/2006 16:38:20 PAGE 5   

  18      =1  0x15, 'q',
  19      =1  0x2D, 'r',
  20      =1  0x1B, 's',
  21      =1  0x2C, 't',
  22      =1  0x3C, 'u',
  23      =1  0x2A, 'v',
  24      =1  0x1D, 'w',
  25      =1  0x22, 'x',
  26      =1  0x35, 'y',
  27      =1  0x1A, 'z',
  28      =1  0x45, '0',
  29      =1  0x16, '1',
  30      =1  0x1E, '2',
  31      =1  0x26, '3',
  32      =1  0x25, '4',
  33      =1  0x2E, '5',
  34      =1  0x36, '6',
  35      =1  0x3D, '7',
  36      =1  0x3E, '8',
  37      =1  0x46, '9',
  38      =1  0x0E, '`',
  39      =1  0x4E, '-',
  40      =1  0x55, '=',
  41      =1  0x5D, '\\',
  42      =1  0x29, ' ',
  43      =1  0x54, '[',
  44      =1  0x5B, ']',
  45      =1  0x4C, ';',
  46      =1  0x52, '\'',
  47      =1  0x41, ',',
  48      =1  0x49, '.',
  49      =1  0x4A, '/',
  50      =1  0x71, '.',
  51      =1  0x70, '0',
  52      =1  0x69, '1',
  53      =1  0x72, '2',
  54      =1  0x7A, '3',
  55      =1  0x6B, '4',
  56      =1  0x73, '5',
  57      =1  0x74, '6',
  58      =1  0x6C, '7',
  59      =1  0x75, '8',
  60      =1  0x7D, '9',
  61      =1  };
  62      =1  
  63      =1  unsigned char code Shifted[59][2] = {
  64      =1  0x1C, 'A',
  65      =1  0x32, 'B',
  66      =1  0x21, 'C',
  67      =1  0x23, 'D',
  68      =1  0x24, 'E',
  69      =1  0x2B, 'F',
  70      =1  0x34, 'G',
  71      =1  0x33, 'H',
  72      =1  0x43, 'I',
  73      =1  0x3B, 'J',
  74      =1  0x42, 'K',
  75      =1  0x4B, 'L',
  76      =1  0x3A, 'M',
  77      =1  0x31, 'N',
  78      =1  0x44, 'O',
  79      =1  0x4D, 'P',
C51 COMPILER V7.08   PS2KEY                                                                04/08/2006 16:38:20 PAGE 6   

  80      =1  0x15, 'Q',
  81      =1  0x2D, 'R',
  82      =1  0x1B, 'S',
  83      =1  0x2C, 'T',
  84      =1  0x3C, 'U',
  85      =1  0x2A, 'V',
  86      =1  0x1D, 'W',
  87      =1  0x22, 'X',
  88      =1  0x35, 'Y',
  89      =1  0x1A, 'Z',
  90      =1  0x45, '0',
  91      =1  0x16, '1',
  92      =1  0x1E, '2',
  93      =1  0x26, '3',
  94      =1  0x25, '4',
  95      =1  0x2E, '5',
  96      =1  0x36, '6',
  97      =1  0x3D, '7',
  98      =1  0x3E, '8',
  99      =1  0x46, '9',
 100      =1  0x0E, '~',
 101      =1  0x4E, '_',
 102      =1  0x55, '+',
 103      =1  0x5D, '|',
 104      =1  0x29, ' ',
 105      =1  0x54, '{',
 106      =1  0x5B, '}',
 107      =1  0x4C, ':',
 108      =1  0x52, '"',
 109      =1  0x41, '<',
 110      =1  0x49, '>',
 111      =1  0x4A, '?',
 112      =1  0x71, '.',
 113      =1  0x70, '0',
 114      =1  0x69, '1',
 115      =1  0x72, '2',
 116      =1  0x7A, '3',
 117      =1  0x6B, '4',
 118      =1  0x73, '5',
 119      =1  0x74, '6',
 120      =1  0x6C, '7',
 121      =1  0x75, '8',

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -