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

📄 key.lst

📁 比较经典的自制键盘子程序
💻 LST
字号:
C51 COMPILER V8.02   KEY                                                                   03/10/2008 17:48:48 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          // File Name: key.c
   2          // Header: 得到键盘的键码并将键码显示
   3          // Author: Wang Xiaorong
   4          // Date: 20070409
   5          
   6          #define GO_OUT 10
   7          unsigned char xdata KEYOUT _at_ 0xdfff;
   8          unsigned char xdata KEYIN  _at_ 0xefff;
   9          unsigned char xdata LEDSEG  _at_ 0x7fff;
  10          unsigned char xdata LEDBIT  _at_ 0xbfff;
  11          unsigned char code KEYMAP[] =
  12          {0X00,0,6,0X00,12,0X00,0X00,0X00,18};    
  13          unsigned char code LEDMAP[] =
  14          {
  15                  0x3f, 0x06, 0x5b, 0x4f, 0x66, 
  16                  0x6d, 0x7d, 0x07, 0x7f, 0x6f,0x00
  17          };
  18          unsigned char LEDBuf[6];
  19          delay1ms()
  20          {
  21   1              unsigned char i;
  22   1              for(i = 250; i > 0; i--); 
  23   1              for(i = 247; i > 0; i--);
  24   1      }
  25          display()
  26          {
  27   1              unsigned char i;
  28   1              unsigned char outbit;
  29   1              outbit = 0x01;  // 从右边开始显示
  30   1              for (i = 0; i < 6; i++)
  31   1              {
  32   2                      LEDBIT = 0x00;     // 关所有LED
  33   2                      LEDSEG = LEDMAP[LEDBuf[i]];
  34   2                      LEDBIT = outbit;
  35   2                      delay1ms();
  36   2                      outbit <<= 1;     // 显示下一位
  37   2              }
  38   1      }
  39          unsigned char testKey()
  40          {
  41   1              KEYOUT = 0x00;
  42   1              return(~KEYIN & 0x0f);          
  43   1      }
  44          unsigned char getKey()
  45          {
  46   1              unsigned char outkey;
  47   1              unsigned char inkey;
  48   1              unsigned char i;
  49   1              unsigned char keyNO;
  50   1              while(1)
  51   1              {
  52   2                      if(testKey())
  53   2                      {
  54   3                              display();
  55   3                              display();
C51 COMPILER V8.02   KEY                                                                   03/10/2008 17:48:48 PAGE 2   

  56   3                              if(testKey())
  57   3                              {
  58   4                                      outkey = 0x01;
  59   4                                      for(i = 0;i < 6;i++)
  60   4                                      {
  61   5                                              KEYOUT = ~outkey;
  62   5                                              outkey <<=1;
  63   5                                              inkey = ~KEYIN & 0x0f;
  64   5                                              if(inkey)
  65   5                                              {
  66   6                                                      keyNO = i + KEYMAP[inkey];
  67   6                                                      break;  
  68   6                                              }       
  69   5                                      }
  70   4                                      while(testKey())
  71   4                                              display();
  72   4                                      return(keyNO);
  73   4                              }                       
  74   3                      }
  75   2                      else
  76   2                              display();
  77   2              }
  78   1      }
  79          main()
  80          {
  81   1              unsigned char k;
  82   1              while(1)
  83   1              {               
  84   2                      k = getKey();
  85   2                      LEDBuf[0] = k%10;
  86   2                      LEDBuf[1] = k/10;       
  87   2                      LEDBuf[2] = GO_OUT;
  88   2                      LEDBuf[3] = GO_OUT;
  89   2                      LEDBuf[4] = GO_OUT;
  90   2                      LEDBuf[5] = GO_OUT;
  91   2                      display();
  92   2              }
  93   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    171    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6    ----
   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 + -