keyboard.lst

来自「自己的平时一些制作 现在整理一下 与大家一起分享」· LST 代码 · 共 95 行

LST
95
字号
C51 COMPILER V7.20   KEYBOARD                                                              05/29/2007 14:41:51 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          
   3          /******led 接口描述******/
   4          //P0--->(a-g,dot) 显示
   5          //选择使能控制段
   6          //P2^3--->使能左第一个数码管  P2^2--->左第二个数码管  
   7          //P2^1--->左第三个数码管  P2^0--->左第四个数码管
   8          
   9          /*********显示数据表************/ 
  10          //前16个对应0-9 ,a-f,后面三个0x73 0x40,0x00分别对应字符P,-,空
  11          
  12          unsigned char code table[19]={0x3f,6,0x5b,0x4f,
  13                            0x66,0x6d,0x7d,7,0x7f,0x6f,0x77,
  14                                            0x7c,0x58,0x5e,0x79,0x71,0x73,0x40,0x00};
  15          
  16          /******按键接口描述********/
  17          //左第一 二 三 四 个按键分别对应于 P2.7 P2.6 P2.5 P2.4 
  18          //左第一个按键键值为1 
  19          //左第二个按键键值为2 
  20          //左第三个按键键值为3 
  21          //左第四个按键键值为4
  22           
  23          
  24          /******延时程序********/
  25          void delay (dy)
  26          {
  27   1      while(--dy);
  28   1      }
  29          
  30          /******读取按键子程序 getkey()*************/
  31          unsigned char getkey (void)
  32          {    unsigned char k,tem,keytem;
  33   1           keytem=0;
  34   1           tem=P2 & 0xf0;                      //第一次读取按键值
  35   1           if(tem!=0xf0)                      //判断有无按键按下
  36   1           {   
  37   2               for(k=0;k<20;k++)
  38   2               delay(250);             //延时一段时间
  39   2               tem=P2 & 0xf0;         //再次读取按键值
  40   2               if(tem!=0xf0)
  41   2               {    if(tem==0x70) keytem=1;          //表示左第一个按键按下
  42   3                    else if(tem==0xb0) keytem=2;         //表示左第二个按键按下
  43   3                    else if(tem==0xd0) keytem=3;         //表示左第三个按键按下
  44   3                    else if(tem==0xe0) keytem=4;         //表示左第四个按键按下
  45   3               }
  46   2            }
  47   1            
  48   1            while(tem!=0xf0) tem=P2 & 0xf0;  //等待按键释放 
  49   1            return(keytem);                              //返回按键值
  50   1      }
  51          
  52          
  53          /********主函数************/
  54          //效果就是按左第一个按键,左数码管显示数值加1(0-9循环)
  55          void main (void)
C51 COMPILER V7.20   KEYBOARD                                                              05/29/2007 14:41:51 PAGE 2   

  56          {
  57   1      unsigned char keyboard;
  58   1      unsigned char number;    //
  59   1      P2=0xff;  //让左第一个数码管显示按键的键值
  60   1              while(1)
  61   1              {
  62   2                      keyboard=getkey();
  63   2                      if(keyboard==1)
  64   2                      {
  65   3                      number=(number+1)%10;
  66   3                      }
  67   2                      P0=table[number];
  68   2              }                 
  69   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    110    ----
   CONSTANT SIZE    =     19    ----
   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 + =
减小字号Ctrl + -
显示快捷键?