key1.lst

来自「单片及c语言轻松入门的随书光盘」· LST 代码 · 共 106 行

LST
106
字号
C51 COMPILER V7.06   KEY1                                                                  11/01/2005 16:42:07 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\key1.c BROWSE DEBUG OBJECTEXTEND PRINT(.\key1.lst) OBJECT(key1.obj)

stmt level    source

   1          /**************************************************
   2          ;键控流水灯程序
   3          **************************************************/
   4          #include "reg51.h"
   5          #include "intrins.h"
   6          #define uchar unsigned char
   7          #define uint  unsigned int 
   8          
   9          uchar LampCode1=0x01;
  10          
  11          bit     UpDown=0;       //上下流动标志
  12          bit     StartEnd=0;     //起动及停止标志
  13          /*延时程序
  14            由Delay参数确定延迟时间
  15          */
  16          void mDelay(unsigned int Delay) 
  17          {       unsigned int i;
  18   1              for(;Delay>0;Delay--)
  19   1              {       for(i=0;i<124;i++)
  20   2                      {;}
  21   2              }
  22   1      }
  23          void KProce(uchar KValue)       //键值处理
  24          {       if((KValue&0x04)==0)
  25   1                      StartEnd=1;
  26   1              if((KValue&0x08)==0)
  27   1                      StartEnd=0;
  28   1              if((KValue&0x10)==0)
  29   1                      UpDown=1;
  30   1              if((KValue&0x20)==0)
  31   1                      UpDown=0;
  32   1      }
  33          uchar Key()
  34          {       uchar KValue;
  35   1              uchar tmp;
  36   1              P3|=0x3c;                       //将P3口的接键盘的中间四位置1
  37   1              KValue=P3;
  38   1              KValue|=0xc3;           //将未接键的4位置1
  39   1              if(KValue==0xff)        //中间4位均为1,无键按下        
  40   1                      return(0);              //返回
  41   1              mDelay(10);             //延时10ms,去键抖
  42   1              KValue=P3;
  43   1              KValue|=0xc3;           //将未接键的4位置1
  44   1              if(KValue==0xff)        //中间4位均为1,无键按下        
  45   1                      return(0);              //返回
  46   1      //如尚未返回,说明一定有1或更多位被按下
  47   1              for(;;)
  48   1              {       tmp=P3;         
  49   2                      if((tmp|0xc3)==0xff)
  50   2                              break;          //等待按键释放
  51   2              }
  52   1              return(KValue);
  53   1      }
  54          
  55          void main()
C51 COMPILER V7.06   KEY1                                                                  11/01/2005 16:42:07 PAGE 2   

  56          {       uchar KValue;                           //存放键值
  57   1              uchar LampCode;                         //存放流动的数据代码
  58   1              P1=0xff;                                        //关闭所有灯
  59   1              LampCode=0xfe;
  60   1              for(;;)
  61   1              {       KValue=Key();                   //调用键盘程序并获得键值
  62   2                      if(KValue)                              //如果该值不等于0
  63   2                      {       KProce(KValue); //调用键盘处理程序
  64   3                      }
  65   2                      if(StartEnd)                    //要求流动显示
  66   2                      {       
  67   3                              P1=LampCode;
  68   3                              if(UpDown)              //要求由上向下
  69   3                              {       LampCode=_cror_(LampCode,1);
  70   4                              }
  71   3                              else                                    //否则要求由下向上
  72   3                              {       LampCode=_crol_(LampCode,1);
  73   4                              }
  74   3                              mDelay(2500);
  75   3                      }
  76   2                      else                                            //关闭所有显示
  77   2                      {       P1=0xff;
  78   3                      }
  79   2              }
  80   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    160    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?