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

📄 key.lst

📁 51单片机4*4键盘识别
💻 LST
字号:
C51 COMPILER V7.50   KEY                                                                   04/21/2007 21:54:09 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe key.c

line level    source

   1          //函数声明
   2          #include <reg52.h>
   3          #include <intrins.h>
   4          
   5          #define uchar unsigned char///////定义无符号变量简写式
   6          #define uint unsigned int////////
   7          sfr KEY = 0xA0;////////////////////定义P2口为键盘接口
   8          sfr LEDB = 0x80;
   9          //静态显示与单片机的接口
  10          sbit    SDA=P1^1;
  11          sbit    CLK=P1^2;
  12          sbit    SETB=P1^0;
  13          sbit    P04=P0^4;
  14          
  15          unsigned        char    code    led[20]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8
             -e,0xbf,0x89,0x8C}; 
  16          /*-------------------------------------------
  17          函数名:   毫秒级延时函数
  18          程序功能: 空转延时
  19          实现方法: 占用CPU的延时
  20          CPU说明:  MCS-51 外晶振12MHZ (非精确延时)
  21          植入说明: 调用函数必须给延时函数一个0~255的延时值对应0MS到255MS.
  22          -------------------------------------------*/
  23          void Delay(unsigned char a)
  24          {
  25   1      unsigned char i;
  26   1      while( --a != 0)
  27   1      {
  28   2      for(i = 0; i < 125; i++); //一个 ; 表示空语句,CPU空转。
  29   2      } //i 从0加到125,CPU大概就耗时1 毫秒
  30   1      }
  31          void    send(unsigned char a)
  32          {
  33   1              unsigned char i;
  34   1              for(i=0;i<8;i++)
  35   1                      {
  36   2                              if(_crol_(a,i)&0x80)
  37   2                                      SDA=1;
  38   2                              else
  39   2                                      SDA=0;
  40   2                              CLK=0;
  41   2                              CLK=1;
  42   2                              }
  43   1      }
  44          
  45          //按键判断
  46          Key ()////////////////////////////键盘处理函数
  47          {
  48   1      uchar a,b,c;//////////////////////定义3 个变量
  49   1      KEY = 0x0f;///////////////////////键盘口置00001111
  50   1      if (KEY != 0x0f)//////////////////查寻键盘口的值是否变化
  51   1      {
  52   2      Delay (20);////////////////////延时20毫秒
  53   2      if (KEY != 0x0f)//////////////有键按下处理
  54   2      {
C51 COMPILER V7.50   KEY                                                                   04/21/2007 21:54:09 PAGE 2   

  55   3      a = KEY;////////////////键值放入寄存器a
  56   3      }
  57   2      KEY = 0xf0;///////////////将键盘口置为11110000
  58   2      c = KEY;//////////////////将第二次取得值放入寄存器c
  59   2      a |= c;//////////////////将两个数据熔合
  60   2      switch(a)//////////////////对比数据值
  61   2      {
  62   3      case 0xee: b = 0x00; break;///对比得到的键值给b一个应用数据
  63   3      case 0xed: b = 0x01; break;
  64   3      case 0xeb: b = 0x02; break;
  65   3      case 0xe7: b = 0x03; break;
  66   3      case 0xde: b = 0x04; break;
  67   3      case 0xdd: b = 0x05; break;
  68   3      case 0xdb: b = 0x06; break;
  69   3      case 0xd7: b = 0x07; break;
  70   3      case 0xbe: b = 0x08; break;
  71   3      case 0xbd: b = 0x09; break;
  72   3      case 0xbb: b = 0x0a; break;
  73   3      case 0xb7: b = 0x0b; break;
  74   3      case 0x7e: b = 0x0c; break;
  75   3      case 0x7d: b = 0x0d; break;
  76   3      case 0x7b: b = 0x0e; break;
  77   3      case 0x77: b = 0x0f; break;
  78   3      default: break;//////////////////键值错误处理
  79   3      }
  80   2      }
  81   1      return (b);///////////////////////////////////将b作为返回值
  82   1      }
  83          
  84          void main()
  85          {
  86   1              unsigned char i;
  87   1              SETB=1;
  88   1          P04=0;//LEDB=0x00;
  89   1              while(1)
  90   1              {
  91   2                      i=Key();
  92   2                      send(led[i]);
  93   2              
  94   2              }
  95   1      }


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