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

📄 keyscan.lst

📁 一个执行效率不错的键盘扫描程序。附有Proteus仿真
💻 LST
字号:
C51 COMPILER V8.06   KEYSCAN                                                               07/31/2008 16:08:35 PAGE 1   


C51 COMPILER V8.06, COMPILATION OF MODULE KEYSCAN
OBJECT MODULE PLACED IN keyscan.OBJ
COMPILER INVOKED BY: d:\Keil2\C51\BIN\C51.EXE keyscan.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<absacc.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          unsigned char  code table[]={0x3f,0x06,0x5b,0x4f,
   6          0x66,0x6d,0x7d,0x07,
   7          0x7f,0x6f,0x77,0x7c,
   8          0x39,0x5e,0x79,0x71};
   9          unsigned char  code dispbit1[]={0,1};
  10          unsigned char  code dispbit2[]={1,0};
  11          unsigned char dispbit[]={0xfe,0xfd};
  12          unsigned char dispbuf[]={0,0};
  13          unsigned char  cnt;
  14          sbit S1=P2^0;
  15          sbit S2=P2^1;
  16          void delays(void);
  17          unsigned char  kbscan(void);
  18          void main(void)
  19          {uchar key;
  20   1      
  21   1       TMOD=0x01;
  22   1       TH0=(65536-4000)/256;
  23   1       TL0=(65536-4000)%256;
  24   1       TR0=1;
  25   1       ET0=1;
  26   1       EA=1;
  27   1      
  28   1       while(1)
  29   1         {key=kbscan();
  30   2          delays();
  31   2              dispbuf[0]=key/16;
  32   2              dispbuf[1]=key%16;
  33   2      
  34   2         }
  35   1      }
  36          
  37          
  38          //
  39          void delays(void)
  40          {
  41   1       uchar i;
  42   1       for(i=300;i>0;i--);
  43   1      }
  44          
  45          //
  46          uchar kbscan(void)
  47          {
  48   1       uchar sccode,recode;
  49   1       P3=0xf0;
  50   1       if((P3&0xf0)!=0xf0)
  51   1       {
  52   2        delays();
  53   2        if((P3&0xf0)!=0xf0)
  54   2        {
  55   3           sccode=0xfe;
C51 COMPILER V8.06   KEYSCAN                                                               07/31/2008 16:08:35 PAGE 2   

  56   3               while((sccode&0x10)!=0)
  57   3               {
  58   4                  P3=sccode;
  59   4                      if((P3&0xf0)!=0xf0)
  60   4                      {
  61   5                         recode=(P3&0xf0)|0x0f;
  62   5                         return((~sccode)+(~recode));
  63   5                         
  64   5                       }
  65   4                       else sccode=(sccode<<1)|0x01;
  66   4                }
  67   3              }
  68   2       }
  69   1       return(0);
  70   1      }
  71          
  72          void Timer0() interrupt 1 using 1
  73          { 
  74   1        TH0=(65536-4000)/256;
  75   1        TL0=(65536-4000)%256;
  76   1      
  77   1       // S1=dispbit1[cnt];
  78   1       // S2=dispbit2[cnt];
  79   1        P2=dispbit[cnt];
  80   1        P0=table[dispbuf[cnt]];
  81   1        cnt++;
  82   1        if(cnt==2)cnt=0;
  83   1        }


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