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

📄 key1.lst

📁 电子开发网培训用的51单片机内部培训代码
💻 LST
字号:
C51 COMPILER V7.06   KEY1                                                                  05/14/2006 16:02:29 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE KEY1
OBJECT MODULE PLACED IN key1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE key1.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //****************************************************
   2          //实现功能:本程序实现把键盘的输入码型按二进制的方式在
   3          //          p0口显示,若果没有按键按下P0的灯全部亮
   4          //目标板:
   5          //****************************************************  
   6          #include <reg51.h>
   7          //********************宏定义**************************
   8          #define p_key P1//宏定义键盘接口是P1
   9          //****************************************************
  10          
  11          //******************时间延迟函数**********************
  12          //描  述:用指令实现延时一段时间
  13          //入口参数:int i,为时间延迟参数
  14          //出口参数:无
  15          //设计人:ycj
  16          //最后修改:时间(2006.4.24)  修改人(ycj)
  17          //****************************************************
  18          void delay_time(int i)
  19          {
  20   1       while(i)
  21   1        i--;
  22   1      }
  23          //******************按键扫描函数**********************
  24          //描    述:对4*4键盘进行扫描,程序只适合4*4键盘使用,
  25          //                      键盘占用一组完整的i/o口,在使用这个程序前
  26          //                      要宏定义p_key为用户实际连接键盘的i/o口 
  27          //                      #define p_key Pn;//(n=0、1、2、3)
  28          //入口参数:无
  29          //返回参数:若有检测到按键就返回按键的编号,否则返回0xff
  30          //设计人:ycj
  31          //最后修改:时间(2006.4.24)修改人(ycj)
  32          //****************************************************
  33          unsigned char read_key(void)
  34          {
  35   1       unsigned char j,key,key_buf=0;
  36   1       p_key=0xff;
  37   1       //检测是否有建按下//
  38   1       p_key=0xf0;
  39   1       key=p_key;
  40   1       if(key==0xf0)
  41   1          {
  42   2               return(0xff);//没按键按下,返回0xff
  43   2              }
  44   1       //有按下,延时去抖//
  45   1       delay_time(5000);
  46   1       //确认是否有建按下//
  47   1       p_key=0xf0;
  48   1       key=p_key;
  49   1       if(key==0xf0)
  50   1          {
  51   2               return(0xff);//没按键按下,返回0xff
  52   2              }
  53   1       //真的有按键按下,扫描是哪一行有按键按下//
  54   1       for(j=0;j<4;j++)
  55   1       {key=p_key&(0x10<<j);
C51 COMPILER V7.06   KEY1                                                                  05/14/2006 16:02:29 PAGE 2   

  56   2        if (key)
  57   2           {
  58   3                key=p_key;
  59   3               }
  60   2        else
  61   2           {
  62   3                key_buf=j*4;
  63   3                p_key=~(0x10<<j);//第j行的按键按下了,第j行输出0,其他的i/o口输出1
  64   3                //扫描是第j行的哪个按键按下//
  65   3                for(j=0;j<4;j++)
  66   3                      {
  67   4                       key=p_key&(1<<j);
  68   4               if (key)
  69   4                      {
  70   5                               key=p_key;
  71   5                              }
  72   4                       else
  73   4                      {
  74   5                               key_buf+=j;
  75   5                               return(key_buf);//扫描到按键的确定位置,返回按键的编号
  76   5                              }
  77   4                      }
  78   3               }
  79   2       }
  80   1      //没扫描到按键,//
  81   1      return(0xff);
  82   1      }
  83          //*****************主程序**********************
  84          //描    述:把键盘的输入码型按二进制的方式在p0
  85          //         口显示,若没有按键按下P0的灯全部亮
  86          //入口参数:无
  87          //返回参数:无
  88          //设计人:ycj
  89          //最后修改:时间(2006.4.24)  修改人(ycj)
  90          //*****************************************
  91          int main(void)
  92          {
  93   1       unsigned char i;
  94   1       while(1)
  95   1         {
  96   2              i=read_key(); //调用键盘子程序
  97   2             P0=~i;      //在P0口显示键盘的值
  98   2         } 
  99   1      }


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