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

📄 scankeybord.lst

📁 属于键盘扫描
💻 LST
字号:
C51 COMPILER V8.02   SCANKEYBORD                                                           02/08/2009 17:49:42 PAGE 1   


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

line level    source

   1          #include<reg52.h>
   2          #define uint unsigned int
   3          #define uchar unsigned char
   4          void scankey();
   5          void display(uchar key);
   6          void delay();
   7          void delay1();
   8          void keyvl_deal();
   9          sbit FENG=P3^4;
  10          uchar keyold=0,keyp,VKEY=0xff;
  11          uchar key_table[]={0xed,0x7e,0x7d,0x7b,
  12                                             0xbe,0xbd,0xbb,0xde,
  13                                             0xdd,0xdb,0x77,0xb7,
  14                                             0xee,0xd7,0xeb,0xe7};
  15          uchar value_table[]={0x3f,0x06,0x5b,0x4f,
  16                               0x66,0x6d,0x7d,0x07,
  17                                                   0x7f,0x6f,0x77,0x7c,
  18                                                   0x39,0x5e,0x79,0x71};
  19          void main()
  20             {
  21   1                while(1)                      
  22   1                { 
  23   2                           scankey();
  24   2                       if(VKEY!=0xff)
  25   2                       {
  26   3                               keyold=VKEY;
  27   3                               keyvl_deal();
  28   3                               display(keyp);
  29   3                       }
  30   2                }
  31   1      
  32   1         }
  33          void scankey()
  34             {
  35   1                P0=0xfe;                                                                 //扫描第一列                                                    
  36   1                VKEY=P0;                                                                 //P0口的值赋给键值寄存器
  37   1                if(VKEY!=0xfe)                                                   //如果第一列有键按下
  38   1                  return;                                                                //返回键值寄存器的值
  39   1                P0=0xfd;                                                                 //扫描第二列
  40   1                VKEY=P0;
  41   1                if(VKEY!=0xfd)
  42   1                  return;
  43   1                P0=0xfb;                                                                      //扫描第三列
  44   1                VKEY=P0;
  45   1                if(VKEY!=0xfb)
  46   1                  return;
  47   1                P0=0xf7;                                                                      //扫描第四列
  48   1                VKEY=P0;
  49   1                if(VKEY!=0xf7)
  50   1                  return;
  51   1                VKEY=0xff;
  52   1         }
  53          void keyvl_deal()
  54             {
  55   1                if(keyold!=VKEY)
C51 COMPILER V8.02   SCANKEYBORD                                                           02/08/2009 17:49:42 PAGE 2   

  56   1                  {FENG=1;
  57   2                   return;}
  58   1                else
  59   1                  {
  60   2                        FENG=0;
  61   2                        for(keyp=0;keyp<16;keyp++)
  62   2                          {
  63   3                                  if(VKEY==key_table[keyp])
  64   3                                      break;
  65   3                              }
  66   2                  } 
  67   1                 
  68   1         }
  69          void display(uchar key)
  70          {
  71   1         int wei=0;
  72   1         while(wei<1)
  73   1         {
  74   2                 P1=wei;                                                      //位数字送P1口
  75   2                 P2=value_table[key];                         //字码送P2口
  76   2                 delay();                                                     //延时
  77   2                 P2=0x00;
  78   2                 wei++;                                                       //对P2口清零,防止影响下一位
  79   2         } 
  80   1      }
  81          void delay()
  82          {
  83   1         uint i=100;
  84   1         while(i--);
  85   1      }
  86          /*void delay1()
  87          { 
  88            int i=10;
  89            while(i--);
  90          }  */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    160    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     35       3
   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 + -