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

📄 io复用.lst

📁 单片机键盘控制程序
💻 LST
字号:
C51 COMPILER V7.06   IO__用                                                                04/11/2005 21:04:36 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE IO__用
OBJECT MODULE PLACED IN IO复用.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil20\C51\BIN\C51.EXE IO复用.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //-----------------------函数声明,变量定义--------------------------------------------------------
   2          #include <reg51.h>
   3          sbit KEY_1 =P1^0;             // 将p1.0定义为KEY_1
   4          sbit KEY_2 =P1^1;                 // 将p1.1定义为KEY_2
   5          sbit KEY_3 =P1^2;                 // 将p1.2定义为KEY_3
   6          #define KEY P1
   7          //-----------------------变量声明---------------------------------------------------------------------
   8          unsigned char manage_KEY();  //完成按键消抖得键盘处理程序,供主程序调用
   9          unsigned char SScan_key();     //扫描查询子程序
  10          void delay(unsigned  int N) ;//延时子程序,实现(16*N+24)us的延时 
  11          //-------------------------------- ------------------------------------------------------------------
  12          // 函数名称: SScan_key
  13          // 返回值:   有按键按下返回键值,无按键按下返回0xFF
  14          // 函数功能:延时子程序,实现(16*N+24)us的延时 
  15          // 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
  16          //--------------------------------------------------------------------------------------------------
  17          unsigned char SScan_key()
  18              {
  19   1               unsigned KEY_value;
  20   1               KEY_1=1;
  21   1           KEY_2=1;
  22   1               KEY_3=1;
  23   1               KEY_value=(KEY&0x07); //按键查询
  24   1               if(KEY_value==0x07)   //S0~S6无键按下
  25   1               {
  26   2                KEY_1=0;
  27   2                KEY_value=(KEY&0x06);
  28   2                switch(KEY_value)
  29   2                    {
  30   3                         case 0x00: KEY_value=7;break;        //KEY_2、KEY_3均为0
  31   3                         case 0x02: KEY_value=11;break;       //KEY_2为1、KEY_3为0
  32   3                         case 0x04: KEY_value=14;break;        //KEY_2为0、KEY_3为1
  33   3                         default:     KEY_value=0xFF;
  34   3                         }
  35   2           KEY_2=0;
  36   2               KEY_value=(KEY&0x05);
  37   2               switch(KEY_value)
  38   2                    {
  39   3                         case 0x00: KEY_value=10;break;       //KEY_1、KEY_3均为0
  40   3                         case 0x01: KEY_value=8;break;        //KEY_1为1、KEY_3为0
  41   3                         case 0x04: KEY_value=15;break;        //KEY_1为0、KEY_3为1
  42   3                         default:     KEY_value=0xFF;
  43   3                         }
  44   2           KEY_3=0;
  45   2               KEY_value=(KEY&0x03);
  46   2               switch(KEY_value)
  47   2                    {
  48   3                         case 0x00: KEY_value=13;break;       //KEY_1、KEY_2均为0
  49   3                         case 0x01: KEY_value=9;break;        //KEY_1为1、KEY_2为0
  50   3                         case 0x02: KEY_value=12;break;        //KEY_1为0、KEY_2为1
  51   3                         default:     KEY_value=0xFF;
  52   3                         }
  53   2               }
  54   1                return(KEY_value);
  55   1      }
C51 COMPILER V7.06   IO__用                                                                04/11/2005 21:04:36 PAGE 2   

  56          //-------------------------------- ------------------------------------------------------------------
  57          // 函数名称: manage_KEY()
  58          // 函数功能: 供主程序调用键盘处理程序
  59          //            如果有键按下,定时消抖,如果是有效按键返回键值,无效按键返回0xFF
  60          //--------------------------------------------------------------------------------------------------
  61          unsigned char manage_KEY()
  62          {
  63   1      unsigned char key_value;
  64   1        key_value=SScan_key();
  65   1        if(key_value<=0x0f)
  66   1        delay(1000);
  67   1        if(key_value!=SScan_key())
  68   1        key_value=0xFF;
  69   1        return(key_value);
  70   1      }
  71          //-------------------------------- ------------------------------------------------------------------
  72          // 函数名称: delay
  73          // 入口参数: N
  74          // 函数功能:延时子程序,实现(16*N+24)us的延时 
  75          // 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
  76          //--------------------------------------------------------------------------------------------------
  77            void delay(unsigned  int N)  
  78            {
  79   1        int i; 
  80   1        for(i=0;i<N;i++);
  81   1        }


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