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

📄 main.lst

📁 用51单片机仿真PC机键盘
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  03/11/2009 16:59:41 PAGE 1   


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

stmt level    source

   1          #include <reg51.h>
   2          #define  BYTE  unsigned char 
   3          #define  uint  unsigned int
   4          
   5          extern void ProcessPS2(void); 
   6          extern void PS2Init(void);
   7          extern void OnPS2SendChar(BYTE dat);
   8          
   9          sbit  c1=P1^7;//列1
  10          sbit  c2=P1^6;//列2
  11          sbit  c3=P1^5;//列3
  12          sbit  c4=P1^4;//列4
  13          sbit  r1=P1^3;//行1
  14          sbit  r2=P1^2;//行2
  15          sbit  r3=P1^1;//行3
  16          sbit  r4=P1^0;//行4
  17          sbit  r5=P3^7;//行5
  18          sbit  BELL=P3^5;//喇叭 
  19          sbit  CT_KB=P3^1;//pc大键盘通过一个模拟开关再连接到ps2接口,当小键盘往pc上发东西,则把pc大键盘断开模拟开关
             -,发完后再闭合模拟开关
  20          
  21          code BYTE tab[]=
  22          {
  23              //键码表
  24                  0x45,0xf0,0x45,//0
  25                  0x16,0xf0,0x16,//1
  26                  0x1e,0xf0,0x1e,//2
  27                  0x26,0xf0,0x26,//3
  28                  0x25,0xf0,0x25,//4
  29                  0x2e,0xf0,0x2e,//5
  30                  0x36,0xf0,0x36,//6
  31                  0x3d,0xf0,0x3d,//7
  32                  0x3e,0xf0,0x3e,//8
  33                  0x46,0xf0,0x46,//9
  34                  0x76,0xf0,0x76,//ESC
  35                  0x05,0xf0,0x05,//F1
  36                  0x06,0xf0,0x06,//F2
  37                  0x04,0xf0,0x04,//F3
  38                  0x0c,0xf0,0x0c,//F4
  39                  0x03,0xf0,0x03,//F5
  40                  0x66,0xf0,0x66,//BS
  41                  0x5a,0xf0,0x5a,//ENTER
  42                  0x49,0xf0,0x49//.
  43          };
  44          
  45          void delay(BYTE k)
  46          {
  47   1        BYTE j,i;
  48   1         for(i=0;i<k;i++)
  49   1          for(j=0;j<125;j++);
  50   1      }
  51          
  52          uint key_scan(void)//键盘扫描程序
  53          {
  54   1        P1=0x0f;
C51 COMPILER V7.06   MAIN                                                                  03/11/2009 16:59:41 PAGE 2   

  55   1        r5=1;
  56   1        delay(1);
  57   1        while(1)
  58   1        {
  59   2          c1=0;
  60   2              c2=c3=c4=1;
  61   2              delay(1);
  62   2              if(r1==0){delay(80);if(r1==0)return 10;}
  63   2              if(r2==0){delay(80);if(r2==0)return 1;}
  64   2              if(r3==0){delay(80);if(r3==0)return 4;}
  65   2              if(r4==0){delay(80);if(r4==0)return 7;}
  66   2              if(r5==0){delay(80);if(r5==0)return 16;}
  67   2              c2=0;
  68   2              c1=c3=c4=1;
  69   2              delay(1);
  70   2              if(r1==0){delay(80);if(r1==0)return 11;}
  71   2              if(r2==0){delay(80);if(r2==0)return 2;}
  72   2              if(r3==0){delay(80);if(r3==0)return 5;}
  73   2              if(r4==0){delay(80);if(r4==0)return 8;}
  74   2              if(r5==0){delay(80);if(r5==0)return 0;}
  75   2              c3=0;
  76   2              c1=c2=c4=1;
  77   2              delay(1);
  78   2              if(r1==0){delay(80);if(r1==0)return 12;}
  79   2              if(r2==0){delay(80);if(r2==0)return 3;}
  80   2              if(r3==0){delay(80);if(r3==0)return 6;}
  81   2              if(r4==0){delay(80);if(r4==0)return 9;}
  82   2              if(r5==0){delay(80);if(r5==0)return 17;}
  83   2              c4=0;
  84   2              c1=c2=c3=1;
  85   2              delay(1);
  86   2              if(r1==0){delay(80);if(r1==0)return 13;}
  87   2              if(r2==0){delay(80);if(r2==0)return 14;}
  88   2              if(r3==0){delay(80);if(r3==0)return 15;}
  89   2              if(r5==0){delay(80);if(r5==0)return 18;}
  90   2        }
  91   1      }
  92          
  93          void speaker(void)
  94          {
  95   1        BYTE i;
  96   1        for(i=0;i<100;i++)
  97   1        {
  98   2          BELL=0;
  99   2              delay(1);
 100   2              BELL=1;
 101   2              delay(1);
 102   2        }
 103   1      }
 104          
 105          void main(void) 
 106          { 
 107   1                      uint j;
 108   1                      CT_KB=0;
 109   1              PS2Init();
 110   1                      BELL=1;
 111   1              while(1) 
 112   1              { 
 113   2                        ProcessPS2();//开机应答,使电脑能识别到键盘
 114   2                j=key_scan();
 115   2                        CT_KB=1;
 116   2                        j*=3;
C51 COMPILER V7.06   MAIN                                                                  03/11/2009 16:59:41 PAGE 3   

 117   2                speaker();
 118   2                        OnPS2SendChar(tab[j]);
 119   2                        OnPS2SendChar(tab[j+1]);
 120   2                        OnPS2SendChar(tab[j+2]);
 121   2                        CT_KB=0;
 122   2                        delay(200);
 123   2              } 
 124   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    469    ----
   CONSTANT SIZE    =     57    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       2
   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 + -