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

📄 键盘实验.lst

📁 使用单片机keilc51编程,利用单片机定时功能读取键盘扫描码,从而利用数码管显示.
💻 LST
字号:
C51 COMPILER V8.05a   键盘实验                                                             05/05/2009 13:34:41 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 键盘实验
OBJECT MODULE PLACED IN 键盘实验.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 键盘实验.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3          sbit key_data=P3^1;             
   4          sbit key_clk=P3^2;      //定义键盘接口的时钟脚
   5          //sbit RELAY=P1^0;              //继电器
   6          sbit RELAY=P1^1;
   7          bit BF=0;
   8          unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8
             -E};
   9          unsigned char keyv=0;                   //变量为常量的索引
  10          unsigned int intNum=0;                  //计数接收个数
  11          unsigned char key_up=1;                 //检测按键按下否
  12          
  13          void ldedata(unsigned char scandata);//数据处理
  14          
  15          void main(void)     //入口函数
  16          {
  17   1      
  18   1      
  19   1              EA=1;                   //首先开启总中断
  20   1              EX0=1;                  //开启外部中断 0
  21   1              IT0=1;        // 设置成 下降沿触发方式
  22   1              P2=0;
  23   1              do{                                     //循环
  24   2                      if(BF)
  25   2                              ldedata(keyv);
  26   2                      else
  27   2                              EA=1;
  28   2              }
  29   1              while(1);       
  30   1      }
  31          
  32          void key_scan()   interrupt 0
  33          {    //外部中断 0                                       
  34   1              if((intNum>0)&&(intNum<9)){
  35   2                      keyv=keyv>>1;
  36   2                      if(key_data)
  37   2                              keyv=keyv|0x80;                         
  38   2              }
  39   1              intNum++;
  40   1              while(!key_clk);
  41   1              if(intNum>10){
  42   2                      intNum=0;
  43   2                      BF=1;
  44   2                      EA=0;                   //等待处理完键值再开启
  45   2              }
  46   1      
  47   1      
  48   1      }
  49          
  50          void ldedata(unsigned char scandata)
  51          {
  52   1      
  53   1              if(!key_up)     //键盘松开时
  54   1              {
C51 COMPILER V8.05a   键盘实验                                                             05/05/2009 13:34:41 PAGE 2   

  55   2              
  56   2                       switch(scandata){
  57   3                       case 0x66:
  58   3                              key_up=1;
  59   3                              break;
  60   3                         case 0x69:   
  61   3                      P0=table[1];
  62   3                                              break;
  63   3                              case 0x72:      
  64   3                      P0=table[2];
  65   3                                              break;
  66   3                      case 0x7a:      
  67   3                 P0=table[3];
  68   3                                
  69   3                              break;
  70   3                              case 0x7d:      
  71   3                      P0=table[9];
  72   3                              
  73   3                              break;
  74   3      
  75   3                              case 0x73:      
  76   3                      P0=table[5];
  77   3                                              break;
  78   3                      case 0x74:      
  79   3                 P0=table[6];
  80   3                                 
  81   3                              break;
  82   3                              case 0x7b:      
  83   3                 P0=table[10];
  84   3                                 
  85   3                              break;
  86   3                              case 0x79:      
  87   3                 P0=table[11];
  88   3                                 
  89   3                              break;
  90   3                         
  91   3                      default:
  92   3                                      
  93   3      
  94   3                              if(scandata==0x6c)              
  95   3                                      P0=table[7];
  96   3                              if(scandata==0x75){                     
  97   4                                              P0=table[8];
  98   4                              }
  99   3                                      if(scandata==0x6b)              
 100   3                                       RELAY=0;
 101   3                                if(scandata==0xe0, 0x5a, 0xe0)                
 102   3                                                                               
 103   3                       RELAY=1;
 104   3                      }
 105   2                }
 106   1               
 107   1              
 108   1              else{
 109   2                      key_up=0;
 110   2                      switch(scandata){
 111   3                      case 0x12:
 112   3                              
 113   3                              break;
 114   3                      case 0x59:
 115   3                              
 116   3                              break;
C51 COMPILER V8.05a   键盘实验                                                             05/05/2009 13:34:41 PAGE 3   

 117   3                      }
 118   2              }
 119   1              BF=0;   
 120   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    233    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -