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

📄 keyboard.lst

📁 KeilC开发,51通过8255对外部4*4键盘进行控制.按键分别为0-9以及上下左右,加上确认取消.
💻 LST
字号:
C51 COMPILER V7.06   KEYBOARD                                                              09/02/2005 20:33:33 PAGE 1   


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

stmt level    source

   1          #include <reg51.h>
   2          #include <8255A.h>
   3          #include <keyboard.h>
   4          
   5          
   6          void delay10ms(void)
   7          {
   8   1              unsigned char i,j,k;
   9   1          for(i=5;i>0;i--)
  10   1                  for(j=4;j>0;j--)
  11   1                      for(k=248;k>0;k--);
  12   1      }
  13          
  14          
  15          void delay500ms(void)
  16          {
  17   1              unsigned char i,j,k;
  18   1              for(i=15;i>0;i--)
  19   1                  for(j=202;j>0;j--)
  20   1                      for(k=81;k>0;k--);
  21   1      }
  22          
  23          void setcol(Uchar col)
  24          {
  25   1      //      SelectForm0(0,0,0,1);//PortA output ,PortB input
  26   1              delay8255();
  27   1              if (col==1) PortA=0xff-0x10;
  28   1              if (col==2) PortA=0xff-0x20;
  29   1              if (col==3) PortA=0xff-0x40;
  30   1              if (col==4) PortA=0xff-0x80;
  31   1      }
  32          
  33          Uchar getrow()
  34          {
  35   1              Uchar temprow=0,port=0;
  36   1              port=PortB&0x0f;
  37   1              switch(port)
  38   1              {
  39   2                      case 14:temprow=1;break;
  40   2                      case 13:temprow=2;break;
  41   2                      case 11:temprow=3;break;
  42   2                      case  7:temprow=4;break;
  43   2                      default:temprow=0;
  44   2              }
  45   1              return (temprow);
  46   1      }
  47          
  48          void delay8255(void)
  49          {
  50   1              Uchar i;
  51   1              for(i=0;i<100;i++);
  52   1      }
  53          
  54          unsigned char WaitKey()
  55          {
C51 COMPILER V7.06   KEYBOARD                                                              09/02/2005 20:33:33 PAGE 2   

  56   1              char col,row,temprow,tempcol;
  57   1              int flag=0;
  58   1      
  59   1              temprow=0;
  60   1              
  61   1              while(temprow==0)
  62   1              {
  63   2                      for(tempcol=1;tempcol<=4;tempcol++)
  64   2                      {
  65   3                              setcol(tempcol);
  66   3      //                      delay10ms();
  67   3                              temprow=getrow();
  68   3                              if(temprow!=0)
  69   3                              {
  70   4      //                              delay10ms();
  71   4      //                              if(temprow==getrow())
  72   4                                      {
  73   5                                              col=tempcol;
  74   5                                              row=temprow;
  75   5                                              break;
  76   5                                      }
  77   4      
  78   4                              }
  79   3                              
  80   3                      }
  81   2              }
  82   1              return(10*col+row);     
  83   1      }
  84          
  85          unsigned char GetKey()
  86          {
  87   1              int tmp,ret;
  88   1              Uchar i=0;
  89   1              SelectForm0(0,0,0,1);
  90   1              delay8255();
  91   1              tmp = WaitKey();
  92   1              switch(tmp)
  93   1              {
  94   2      
  95   2              
  96   2                      case 11: ret=NUM0;break;
  97   2                      case 21: ret=NUM8;break;
  98   2                  case 31: ret=NUM5;break;
  99   2                      case 41: ret=NUM2;break;
 100   2                      
 101   2                      case 12: ret=CANCEL;break;
 102   2                      case 22: ret=NUM9;break;
 103   2                      case 32: ret=NUM6;break;
 104   2                      case 42: ret=NUM3;break;
 105   2                      
 106   2                      case 13: ret=DOWN;break;
 107   2                      case 23: ret=RIGHT;break;
 108   2                      case 33: ret=LEFT;break;
 109   2                      case 43: ret=UP;break;
 110   2      
 111   2                      case 14: ret=CONFIRM;break;
 112   2                      case 24: ret=NUM7;break;
 113   2                      case 34: ret=NUM4;break;
 114   2                      case 44: ret=NUM1;break;
 115   2      
 116   2                      default: ret=0xff;
 117   2              }
C51 COMPILER V7.06   KEYBOARD                                                              09/02/2005 20:33:33 PAGE 3   

 118   1              return ret;
 119   1      }
 120          


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