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

📄 pmkguan.lst

📁 我的一个工程
💻 LST
字号:
C51 COMPILER V7.06   PMKGUAN                                                               07/18/2008 19:41:19 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE PMKGUAN
OBJECT MODULE PLACED IN E:\温度表\PMKGUAN.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE E:\温度表\PMKGUAN.C DB SB OE

stmt level    source

   1          #include <reg52.h>
   2          #define a     0x01
   3          #define b     0x02
   4          #define c     0x04
   5          #define d     0x08
   6          #define e     0x10
   7          #define f     0x20
   8          #define g     0x40
   9          #define dot   0x80
  10          #define H   10
  11          #define L   11
  12          #define P   12
  13          sbit sd=P2^     7;
  14          sbit sp=P3^     5;
  15          unsigned char set;
  16          unsigned char   KEY_Variable[3];
  17          unsigned int tmep;
  18          unsigned char code disp_code[] = {
  19                   a+b+c+d+e+f,     // 0
  20                   b+c,             // 1
  21                   a+b+d+e+g,       // 2
  22                   a+b+c+d+g,       // 3
  23                   b+c+f+g,         // 4
  24                   a+c+d+f+g,       // 5
  25                   a+c+d+e+f+g,     // 6
  26                   a+b+c,           // 7
  27                   a+b+c+d+e+f+g,   // 8
  28                   a+b+c+d+f+g,     // 9
  29                   b+c+e+f+g,       //H
  30                   d+e+f,           //L
  31                   a+b+e+f+g,       //P
  32                   b+c+g,            //+
  33                    g,               //-
  34                   };
  35          
  36           void sendbyte(unsigned char yte)
  37          {  P2=0;    
  38   1              sd=1;           
  39   1              P0=disp_code[yte];
  40   1              //sd=0;
  41   1               
  42   1      }
  43          
  44          
  45          
  46          void display(unsigned int i)
  47          { unsigned int k;
  48   1         unsigned char j,m,q;
  49   1              unsigned int s[6];      
  50   1              s[0] = i/10000;
  51   1          k = i%10000;
  52   1              s[1] = k/1000;
  53   1              k = k%1000;
  54   1              s[2] = k/100;
  55   1              k = k%100;
C51 COMPILER V7.06   PMKGUAN                                                               07/18/2008 19:41:19 PAGE 2   

  56   1              s[3] = k/10;
  57   1              k = k%10;
  58   1              s[4] = k;
  59   1              j=0x40;
  60   1              q=2;
  61   1      
  62   1              for(k = 0; s[k] == 0 && k<3; k++);
  63   1              if (k==3) k--; // if all bytes are '0', get back one position
  64   1              if(s[4]==0)
  65   1                      {
  66   2                              q--;
  67   2              if(s[3]==0)q--;
  68   2                      }
  69   1              do
  70   1              {
  71   2                      if(k==2)
  72   2                      {
  73   3                               m=j>>4;                        
  74   3                      }
  75   2              P2=(m|j);
  76   2              
  77   2              P0=(disp_code[s[k++]]); 
  78   2              j>>=1; 
  79   2         }
  80   1              while (k<3);
  81   1              while(q&&(j>0x0f))
  82   1              {
  83   2                      P2=(m|j);
  84   2              P0=(disp_code[s[k++]]);
  85   2              j>>=1;
  86   2              q--;
  87   2              }               
  88   1      } 
  89          #define KEY_SET   0x07//设置键
  90          #define KEY_UP    0x0b//向上键
  91          #define KEY_DOEN  0x0d//向下键
  92          #define KEY_RUN  0x0e//运行键
  93          #define KEY_P1  P1
  94          
  95          /***************************************************************************************************
  96          函数名称:KEY_JIEXI(unsigned int Variable)
  97          函数入口:
  98                            unsigned int Variable :采集到的键盘值,就是P2、P3口的数值。
  99          函数出口:
 100          功能描述:键盘解析,通过采样的数值分析出当前按下的是那个键。(包括复合键)并针对键进行相应的操作
 101          关键点描述:无
 102          ****************************************************************************************************/
 103          KEY_JIEXI(unsigned int Variable)
 104          {
 105   1              sp=0;
 106   1              switch(Variable)
 107   1              {
 108   2                      //单键。。。。          
 109   2                      case KEY_RUN:   //0x01运行键
 110   2                   set=0;
 111   2                   tmep=0;
 112   2                      break;
 113   2                      case KEY_DOEN:  //0x02向下键
 114   2                              if(set)
 115   2                                      set--;
 116   2                        else
 117   2                                       set=14;
C51 COMPILER V7.06   PMKGUAN                                                               07/18/2008 19:41:19 PAGE 3   

 118   2                break;
 119   2                      case KEY_UP:    //0x04向上键
 120   2                           if(set<14)
 121   2                                    { set++;
 122   3                                     
 123   3                                    }
 124   2                          else
 125   2                                           set=0;
 126   2                break;
 127   2                case KEY_SET:   //0x07设置键
 128   2                      tmep=tmep+8;    
 129   2                break;                        
 130   2                      default:
 131   2                      break;
 132   2              }
 133   1              sp=1;
 134   1      }
 135          /***************************************************************************************************/
 136          /***************************************************************************************************
 137          函数名称:KEY()
 138          函数入口:空
 139          函数出口:空
 140          功能描述:键盘消抖
 141          设计思想:          
 142                                  建立一个键盘值保存缓冲区KEY_Variable[3],能够连续保存最近的三次采样到的键盘值。当最后两次采
 143                          样到的值相等并且和倒数第三次的值不相等时,说明有按键按下。进行确认。当三次的采样值都相等时,说
 144                          明此按键已经确认过了,不进行确认。
 145          ****************************************************************************************************/
 146          KEY()
 147          {
 148   1      unsigned char key_buf;
 149   1              KEY_Variable[2]=KEY_Variable[1];
 150   1              KEY_Variable[1]=KEY_Variable[0];
 151   1              EA = 0; 
 152   1              key_buf=KEY_P1;
 153   1       KEY_Variable[0] =key_buf&0xc0;  
 154   1              KEY_Variable[0] >>=4;   
 155   1       KEY_Variable[0]|=(key_buf&0x03);       
 156   1      
 157   1              if(KEY_Variable[0] == KEY_Variable[1])
 158   1              {
 159   2                      if(KEY_Variable[1] == KEY_Variable[2])
 160   2                      {
 161   3                              return;
 162   3                      }
 163   2                      else
 164   2                      {
 165   3                              
 166   3                              KEY_JIEXI(KEY_Variable[0]);   //分析按下的是什么键,并做相应的处理。
 167   3                      }
 168   2              }
 169   1              return;
 170   1      }
 171           
 172           void main(void)
 173          { 
 174   1       /* SCON = 0x52; // 8-bit UART mode
 175   1        TMOD = 0x20; // timer 1 mode 2 auto reload
 176   1        TH1= 0xfd; // 9600 8n1
 177   1        //TR1 = 1; // run timer1*/
 178   1        P1=0xff;
 179   1        P0=0x00;
C51 COMPILER V7.06   PMKGUAN                                                               07/18/2008 19:41:19 PAGE 4   

 180   1        P2=0xff;  
 181   1        while(1)
 182   1        {
 183   2              KEY();
 184   2              sendbyte(set);
 185   2               display(tmep);  
 186   2      }
 187   1        }
 188          
C51 COMPILER V7.06   PMKGUAN                                                               07/18/2008 19:41:19 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
_KEY_JIEXI . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  Variable . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
disp_code. . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0000H  15
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
tmep . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0000H  2
_sendbyte. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  yte. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
set. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0002H  1
sd . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A7H  1
_display . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  m. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  q. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  s. . . . . . . . . . . . . . . . . .  AUTO     DATA   ARRAY    0001H  12
sp . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
KEY. . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  key_buf. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
KEY_Variable . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0003H  3
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1


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