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

📄 keyboard.lst

📁 。 。 。 。 。 。 。 。 。 。 。 。。 。 。
💻 LST
字号:
C51 COMPILER V8.08   KEYBOARD                                                              12/17/2008 18:44:32 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          #define uchar unsigned char
   3          //数码管显示段表
   4          uchar code codetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
   5          //键盘扫描段表
   6          uchar code duancode[]={0X7E,0XBE,0XdE,0xEE,0X7d,0XBd,0Xdd,0XEd,0X7B,0XBB,0XdB,0XEB,0X77,0XB7,0XD7,0XE7};
   7          //键盘扫描位码
   8          uchar code bitcode[4]={0xfe,0xfd,0xfb,0xf7};
   9          //延迟
  10          void delay(uchar n)
  11          {
  12   1      uchar i,j;
  13   1      for(j=n;j>0;--j)
  14   1         for(i=255;i>0;--i)
  15   1         ;
  16   1      }
  17          
  18          //键盘扫描
  19          uchar keyscan(void)
  20          {
  21   1         uchar key;
  22   1         P1=0xf0;
  23   1         if(P1!=0xF0)
  24   1          {
  25   2         delay(50);
  26   2         if(P1!=0xF0)                                         //按下第一列键                                  
  27   2         {        
  28   3           P1=0x7f;
  29   3           if(P1!=0x7f)
  30   3           {
  31   4              switch(P1)
  32   4                      {
  33   5                              case 0x7e:key=0;break;
  34   5                              case 0x7d:key=4;break;
  35   5                              case 0x7b:key=8;break;
  36   5                              case 0x77:key=12;break; 
  37   5                      }
  38   4               }
  39   3      
  40   3               P1=0xbf;                                               //按下第二列键
  41   3           if(P1!=0xbf)
  42   3           {
  43   4              switch(P1)
  44   4                      {
  45   5                              case 0x7e:key=1;break;
  46   5                              case 0x7d:key=5;break;
  47   5                              case 0x7b:key=9;break;
  48   5                              case 0x77:key=13;break;
  49   5                      }
  50   4               }
  51   3      
  52   3           P1=0xdf;                                           //按下第三列键
  53   3           if(P1!=0xdf)
  54   3           {
  55   4              switch(P1)
C51 COMPILER V8.08   KEYBOARD                                                              12/17/2008 18:44:32 PAGE 2   

  56   4                      {
  57   5                              case 0x7e:key=2;break;
  58   5                              case 0x7d:key=6;break;
  59   5                              case 0x7b:key=10;break;
  60   5                              case 0x77:key=14;break; 
  61   5                      }
  62   4               }
  63   3      
  64   3           P1=0xef;                                           //按下第四列键
  65   3           if(P1!=0xef)
  66   3           {
  67   4              switch(P1)
  68   4                      {
  69   5                              case 0x7e:key=3;break;
  70   5                              case 0x7d:key=7;break;
  71   5                              case 0x7b:key=11;break;
  72   5                              case 0x77:key=15;break; 
  73   5                      }
  74   4               }
  75   3         }
  76   2      
  77   2        }
  78   1      return 0;
  79   1      }
  80          //得到键盘号
  81          uchar getkey(uchar key)
  82          {
  83   1           uchar i,temp;
  84   1           temp=key;
  85   1           for(i=0;i<=15;i++)
  86   1      {
  87   2            if(temp==duancode[i])
  88   2          return(i);
  89   2           }          
  90   1          
  91   1      }
  92          
  93          //主函数
  94          main()
  95          {
  96   1         uchar i,key=0;
  97   1         SCON=0x50;
  98   1         TMOD=0x20;
  99   1         TH1=0xfd;
 100   1         TL1=0xfd;
 101   1         TR1=1;
 102   1         IE=1;
 103   1         ES=1;
 104   1         while(1)                                             //窜口通信
 105   1         {
 106   2          key=keyscan();
 107   2          if(key)
 108   2          { 
 109   3           i=getkey(key);
 110   3           SBUF=i;
 111   3           while(TI!=1);
 112   3           P2=codetab[i];
 113   3           TI=0;
 114   3              
 115   3              
 116   3          }
 117   2         
C51 COMPILER V8.08   KEYBOARD                                                              12/17/2008 18:44:32 PAGE 3   

 118   2          if(RI==1)
 119   2          {
 120   3           while(RI!=1);
 121   3           P0=codetab[SBUF];
 122   3           RI=0;
 123   3          
 124   3          } 
 125   2         }
 126   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    306    ----
   CONSTANT SIZE    =     36    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       1
   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 + -