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

📄 keypad.lst

📁 < 嵌入式C语言程序设计>>一书的源代码
💻 LST
字号:
C51 COMPILER V8.02   KEYPAD                                                                09/12/2007 22:06:42 PAGE 1   


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

line level    source

   1          /*
   2          标题:小键盘的输入函数
   3          版本:1.0
   4          Target:89S51
   5          函数描述:   char gotkey(void)
   6                       从4ⅹ4小键盘输入数据,返回0 15
   7          小键盘的连接方式:
   8          
   9             
  10            1 P20 -----0----1----2----3
  11                       |    |    |    |
  12            2 P21 -----4----5----6----7
  13                       |    |    |    | 
  14            3 P22 -----8----9----10---11
  15                       |    |    |    |  
  16            4 P23 -----12---13---14---15
  17                       |    |    |    |
  18            5 P24 ---- |    |    |    |
  19                       |    |    |    |
  20            6 P25 ----------     |    |
  21                                 |    |
  22            7 P26 ---------------     |   
  23                                      |
  24            8 P27 --------------------    
  25          */
  26          #include <REGX51.H>
  27          code char key_code[]={0x7E,0XBE,0XBD,0XBB,0XDE,0XDD,0XDB,0XEE,
  28                                0XED,0XEB,0X7D,0X7B,0XE7,0XD7,0XB7,0X77};
  29          code ksp[4]={0x7F,0xBF,0xDF,0xEF};
  30          void delay (void)  {                   /* 时间延迟函数 */
  31   1        unsigned char i,j;                  
  32   1           for (i=0;i<5;i++)
  33   1                for(j=0;j<255;j++)
  34   1                ;
  35   1      }
  36          char keyscan();
  37          /*char keypad_scan()
  38          {
  39              char key,i;
  40              P1=0xF0;
  41              while (P1!=0xF0);
  42                do{
  43                 for(i=0;i<=3;i++)
  44                 {         
  45                     P1=ksp[i];
  46                     if(P1!=ksp[i])
  47                     {
  48                        delay();
  49                        key=P1;
  50                        if(key!=ksp[i])
  51                        {
  52                            return(key);
  53                        }
  54                     }
  55                 }
C51 COMPILER V8.02   KEYPAD                                                                09/12/2007 22:06:42 PAGE 2   

  56              } while(1);
  57          }  
  58          // 检查是否有按键按下
  59          char gotkey()
  60          {
  61               char temp,i;
  62               temp=keyscan();
  63               for (i=0;i<=15;i++) {
  64                    if(temp==key_code[i]) return(i);
  65               }
  66               return(16);
  67          }
  68            */
  69          
  70          char keyscan()
  71          {
  72   1         char keytemp;
  73   1         P1=0xf0;
  74   1         keytemp=P1&0x0f;
  75   1         if(keytemp!=0)
  76   1         {
  77   2           delay();
  78   2               if(keytemp!=0)
  79   2               {
  80   3                 P1|=0x80;
  81   3                 keytemp=P1&0x0f;
  82   3                 switch(keytemp)
  83   3                 {
  84   4                   case 0x01: return(0); break;
  85   4                       case 0x02: return(1); break;
  86   4                       case 0x04: return(2); break;
  87   4                       case 0x08: return(3); break;
  88   4                       default :  break;
  89   4                 }
  90   3                 P1|=0x40;
  91   3                 keytemp=P1&0x0f;
  92   3                 switch(keytemp)
  93   3                 {
  94   4                   case 0x01: return(4); break;
  95   4                       case 0x02: return(5); break;
  96   4                       case 0x04: return(6); break;
  97   4                       case 0x08: return(7); break;
  98   4                       default :  break;
  99   4                 }
 100   3                 P1|=0x20;
 101   3                 keytemp=P1&0x0f;
 102   3                 switch(keytemp)
 103   3                 {
 104   4                   case 0x01: return(8); break;
 105   4                       case 0x02: return(9); break;
 106   4                       case 0x04: return(10); break;
 107   4                       case 0x08: return(11); break;
 108   4                       default :  break;
 109   4                 }
 110   3                 P1|=0x10;
 111   3                 keytemp=P1&0x0f;
 112   3                 switch(keytemp)
 113   3                 {
 114   4                   case 0x01: return(12); break;
 115   4                       case 0x02: return(13); break;
 116   4                       case 0x04: return(14); break;
 117   4                       case 0x08: return(15); break;
C51 COMPILER V8.02   KEYPAD                                                                09/12/2007 22:06:42 PAGE 3   

 118   4                       default :  break;
 119   4                 }
 120   3                 return (0xff);
 121   3               }
 122   2               else return (0xff);
 123   2         }  
 124   1         else return (0xff); 
 125   1      }
 126          
 127          
 128          
 129          
 130          
 131          
 132          
 133          
 134          
 135          
 136          
 137          


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