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

📄 keyboard_serial.lst

📁 模拟的键盘输入程序
💻 LST
字号:
C51 COMPILER V8.05a   KEYBOARD_SERIAL                                                      03/13/2009 14:46:00 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE KEYBOARD_SERIAL
OBJECT MODULE PLACED IN keyboard_serial.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE keyboard_serial.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<stdio.h>
   3          
   4          //发光管显示码,共阳极
   5          unsigned char data displaycode[10]={0x00,0x9f,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08};
   6          //LED显示数据
   7          unsigned char leddisplay[4]={1,1,1,1};
   8          //键扫描值,低四位为行号,高四位为列号
   9          unsigned char key;
  10          
  11           // 键消抖的延时函数
  12          void delay_10ms(void)
  13          {
  14   1              unsigned char j,k;
  15   1              for(j=20;j>0;j--)
  16   1                      for(k=248;k>0;k--);
  17   1      }
  18          
  19          //  kbscan键扫描函数
  20          unsigned char kbscan(void)  
  21          {
  22   1              
  23   1          unsigned char sccode,recode;
  24   1      
  25   1              P1=0xf0;                                                                              
  26   1      
  27   1              if((P1&0xf0)!=0xf0)                                                           
  28   1              {
  29   2      
  30   2                      delay_10ms();                                                             
  31   2      
  32   2                      if((P1&0xf0)!=0xf0)
  33   2                      {
  34   3                              sccode=0xfe;                                                  
  35   3      
  36   3                              while((sccode&0x10)!=0)
  37   3                              {
  38   4                              P1=sccode;                                                        
  39   4      
  40   4                                      if((P1&0xf0)!=0xf0)                           
  41   4                                              {
  42   5                                                      recode=(P1&0xf0)|0x0f;
  43   5                                                      return((~sccode)+(~recode));       
  44   5                                              }
  45   4                                      else 
  46   4                                              {
  47   5                                                      sccode=(sccode<<1)|0x01;           
  48   5                                              }
  49   4                              }
  50   3                      }
  51   2              }
  52   1      
  53   1              return(0);                                                                             
  54   1      
  55   1      } 
C51 COMPILER V8.05a   KEYBOARD_SERIAL                                                      03/13/2009 14:46:00 PAGE 2   

  56          
  57          //LED显示函数
  58          void display(void)
  59          {
  60   1              unsigned char count;
  61   1              
  62   1              for(count=4;count>0;count--)
  63   1              {
  64   2                      SBUF=displaycode[leddisplay[count-1]];  
  65   2                      while(TI==0);
  66   2                      TI=0;
  67   2              }
  68   1      }
  69          //初始化LED显示数据
  70          void leddisplay_ini(unsigned i)
  71          {
  72   1              leddisplay[0]=i;leddisplay[1]=i;leddisplay[2]=i;leddisplay[3]=i;
  73   1      }
  74          
  75          void main(void)
  76          {
  77   1              SCON=0x00;                                                                       //移位寄存器工作方式
  78   1              display();
  79   1              while(1)
  80   1              { 
  81   2                      key=kbscan();                                        //键盘扫描函数
  82   2                      delay_10ms();                                                    //延时函数
  83   2                      if(key!=0)
  84   2                      {
  85   3                              switch(key)
  86   3                              {
  87   4                                      case 0x11:                       //显示1,第一行第一列
  88   4                                              leddisplay_ini(1);                       //显示数据初始化,显示1
  89   4                                              display();                                       //显示数据
  90   4                                              break;
  91   4                                      case 0x21:                                               
  92   4                                              leddisplay_ini(2);
  93   4                                              display();
  94   4                                              break;
  95   4                                      case 0x41:                                               
  96   4                                              leddisplay_ini(3);
  97   4                                              display();
  98   4                                              break;
  99   4                                      case 0x12:                                               //显示4,第二行第一列
 100   4                                              leddisplay_ini(4);
 101   4                                              display();
 102   4                                              break;                                           
 103   4                                      case 0x22:                                              
 104   4                                              leddisplay_ini(5);
 105   4                                              display();
 106   4                                              break;                                           
 107   4                                      case 0x42:                                               
 108   4                                              leddisplay_ini(6);
 109   4                                              display();
 110   4                                              break;
 111   4                                      case 0x14:
 112   4                                              leddisplay_ini(7);                        //显示7,第三行第一列
 113   4                                              display();
 114   4                                              break;
 115   4                                      case 0x24:
 116   4                                              leddisplay_ini(8);
 117   4                                              display();
C51 COMPILER V8.05a   KEYBOARD_SERIAL                                                      03/13/2009 14:46:00 PAGE 3   

 118   4                                              break;
 119   4                                      case 0x44:
 120   4                                              leddisplay_ini(9);
 121   4                                              display();
 122   4                                              break;
 123   4                                      default:
 124   4                                              leddisplay_ini(0);                        //显示其他
 125   4                                              display();
 126   4                                              break;
 127   4      
 128   4                              }
 129   3      
 130   3                      }
 131   2              }
 132   1      
 133   1      }
 134          
 135                  
 136          


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