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

📄 kb.lst

📁 基于C51的通用人机界面程序
💻 LST
字号:
C51 COMPILER V7.08   KB                                                                    11/19/2005 21:32:18 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE KB
OBJECT MODULE PLACED IN .\output\kb.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE kb.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND OBJECT(.\output\kb.obj)

line level    source

   1          #define _key_ 
   2          #include "general.h"
   3          
   4          uchar   key_bak;
   5          uchar   key_temp;
   6          uchar   key_cnt;                                                                //counter
   7          uchar   key_value;
   8          bit     key_ok;
   9          static uchar code code_key[16]={0x11,0x12,0x14,0x18,
  10                                                                          0x21,0x22,0x24,0x28,
  11                                                                          0x41,0x42,0x44,0x48,
  12                                                                          0x81,0x82,0x84,0x88};
  13             
  14          /*      -- 1 -- 2 -- 3 -- enter --
  15                  -- 4 -- 5 -- 6 --
  16              -- 7 -- 8 -- 9 --
  17                  -- 0 -- 
  18          /******************************************
  19          查键值表,特征键值转为顺序键值
  20          ******************************************/
  21          uchar get_key(uchar c)
  22          {
  23   1         uchar i=0;
  24   1         while(code_key[i]!= c) 
  25   1              i++;
  26   1         return i;//0x00~0x0f
  27   1       }
  28          
  29          /**************************************************************
  30          名称:kbscan                                     
  31          描述:键盘扫描
  32          输入:无
  33          输出:键值key
  34          其他:P0.4~7扫描0输出,P0.0~3输入0进来
  35          **************************************************************/
  36          void kbscan(void)
  37          {
  38   1              uchar sccode,recode;                            //扫描码,接收码
  39   1              P0=0x0f;                                                        //扫0000
  40   1              if((P0&0x0f)!=0x0f)                                     //有键按下
  41   1              {
  42   2                              sccode=0xef;                            
  43   2                              while((sccode&0x01)!=0)
  44   2                              {
  45   3                                      P0=sccode;                              //扫1110
  46   3                                      if((P0&0x0f)!=0x0f)             //扫描到
  47   3                                      {
  48   4                                              recode=(P0&0x0f)|0xf0;//输出键值,特征位为0
  49   4                                              //
  50   4                                              key_temp=((~sccode)+(~recode));//扫描+输出  行+列 返回特征字节->顺序键码
  51   4                                              //C1:10-01,02,04,08             11,12,14,18
  52   4                                              //C2:20-01,02,04,08             21,22,24,28
  53   4                                              //C3:40-01,02,04,08             41,42,44,48
  54   4                                              //C4:80-01,02,04,08             81,82,84,88
  55   4                                      }
C51 COMPILER V7.08   KB                                                                    11/19/2005 21:32:18 PAGE 2   

  56   3                                      else
  57   3                                      sccode=(sccode<<1)|0x10;        //0左移1位,末位补1
  58   3      
  59   3                              }
  60   2                              if (key_temp == key_bak){ key_cnt++;}
  61   2                  else{key_cnt=0;key_bak=key_temp;}
  62   2                      
  63   2              }
  64   1              else{
  65   2              
  66   2              if (key_cnt){
  67   3                  key_ok=1;
  68   3                  key_value=get_key(key_temp);                        //键解码
  69   3              }
  70   2              key_cnt=0;
  71   2          }
  72   1      }
  73          
  74          //对外接口函数
  75          unsigned char getkey(void)        //返回按键码
  76          {
  77   1          key_ok=0;                                                                                                   //结束
  78   1          return(key_value);
  79   1      }
  80          
  81          bit testkey(void)                                       //检查有无按键
  82          {
  83   1          kbscan();                                                           //键扫描
  84   1          return(key_ok);
  85   1      }
  86             


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