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

📄 main.lst

📁 AT89C51单个按键接收处理_状态机方式
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  04/29/2008 14:58:24 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          // KeyControl application
   2          // 2007.8.17 by Ericosn
   3          
   4          #include <REG51.h>
   5          #define uchar unsigned char
   6          #define uint  unsigned int
   7          
   8          sbit P20 = P2^0;
   9          sbit P21 = P2^1;
  10          sbit P22 = P2^2;
  11          sbit P23 = P2^3;
  12          sbit P24 = P2^4;
  13          sbit P25 = P2^5;
  14          sbit P26 = P2^6;
  15          sbit P27 = P2^7;
  16          sbit P00 = P0^0;
  17          sbit P06 = P0^6;
  18          sbit P07 = P0^7;
  19          
  20          uchar Flag1 = 0,Flag2 = 0,Flag3 = 0,Flag4 = 0,Flag5 = 0;
  21          uchar FlagTimer1 = 0,FlagTimer2 = 0,FlagTimer3 = 0,FlagTimer4 = 0,FlagTimer5 = 0;
  22          
  23          uchar idata Buffer1[10] = {0x80,0x00,0xFA,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xF1};
  24          uchar idata Buffer2[10] = {0x80,0x00,0xFA,0xF2,0xF2,0xF2,0xF2,0xF2,0xF2,0xF2};
  25          uchar idata Buffer3[10] = {0x80,0x00,0xFA,0xF3,0xF3,0xF3,0xF3,0xF3,0xF3,0xF3};
  26          
  27          void init(void);
  28          void SCI_Tx(char Buf[],uchar n);
  29          
  30          void main(void)
  31          {
  32   1              init();
  33   1              while(1){
  34   2                      //按键处理
  35   2                      if (Flag1==1)
  36   2                      {
  37   3                              Flag1=2;
  38   3                              SCI_Tx(Buffer1,10);
  39   3                      }
  40   2      
  41   2                      if (Flag2==1)
  42   2                      {
  43   3                              Flag2=2;
  44   3                              SCI_Tx(Buffer2,10);
  45   3                      }
  46   2      
  47   2                      if (Flag3==1)
  48   2                      {
  49   3                              Flag3=2;
  50   3                              SCI_Tx(Buffer2,10);
  51   3                      }
  52   2      
  53   2                      if (Flag4==1)
  54   2                      {
  55   3                              Flag4=2;
C51 COMPILER V8.02   MAIN                                                                  04/29/2008 14:58:24 PAGE 2   

  56   3                              SCI_Tx(Buffer3,10);
  57   3                      }
  58   2      
  59   2                      if (Flag5==1)
  60   2                      {
  61   3                              Flag5=2;
  62   3                              SCI_Tx(Buffer1,10);
  63   3                      }
  64   2                      
  65   2              }
  66   1      }
  67          
  68          ///////////////////////////////////////////////////////////////
  69          void init(void)
  70          {
  71   1              TMOD = 0x21;
  72   1              TH1 = 0xFD;
  73   1              TL1 = 0xFD;
  74   1              TH0 = 0x4C;
  75   1              TL0 = 0x00;
  76   1              SCON = 0x50;
  77   1              IE |= 0x82;
  78   1      //      IP |= 0x02;
  79   1              TR0 = 1;
  80   1              TR1 = 1;
  81   1      }
  82          
  83          ///////////////////////////////////////////////////////////////
  84          //
  85          void SCI_Tx(char Buf[],uchar n)
  86          {
  87   1              while(n){
  88   2                      SBUF = Buf[10-n];
  89   2                      while(TI==0);
  90   2                      TI = 0;
  91   2                      n--;
  92   2              }
  93   1      }
  94          
  95          ///////////////////////////////////////////////////////////////
  96          //
  97          
  98          ///////////////////////////////////////////////////////////////
  99          //Timer0 50ms interrupt 
 100          void timer0(void) interrupt 1 using 1
 101          {
 102   1              bit Sample;
 103   1      
 104   1              TH0 = 0x4C;
 105   1              TL0 = 0x00;
 106   1              if(Flag1==0)
 107   1              {
 108   2                      Sample = P20;
 109   2                      if(Sample==0)
 110   2                      {
 111   3                              FlagTimer1++;
 112   3                              if(FlagTimer1>2)
 113   3                              {
 114   4                                      Flag1=1;
 115   4                                      FlagTimer1=0;
 116   4                                      P00 = 0;
 117   4                              }               
C51 COMPILER V8.02   MAIN                                                                  04/29/2008 14:58:24 PAGE 3   

 118   3                      }
 119   2                      else    FlagTimer1=0;
 120   2              }
 121   1      
 122   1              if(Flag1==2)
 123   1              {
 124   2                      Sample = P20;
 125   2                      if(Sample==1)   
 126   2                      {
 127   3                              FlagTimer1++;
 128   3                              if(FlagTimer1>2)
 129   3                              {
 130   4                                      Flag1=0;
 131   4                                      FlagTimer1=0;
 132   4                                      P00 = 1;
 133   4                              }
 134   3                      }
 135   2                      else    FlagTimer1=0;
 136   2              }
 137   1      
 138   1              if(Flag2==0)
 139   1              {
 140   2                      Sample = P21;
 141   2                      if(Sample==0)
 142   2                      {
 143   3                              FlagTimer2++;
 144   3                              if(FlagTimer2>2)
 145   3                              {
 146   4                                      Flag2=1;
 147   4                                      FlagTimer2=0;
 148   4                                      P00 = 0;
 149   4                              }               
 150   3                      }
 151   2                      else    FlagTimer2=0;
 152   2              }
 153   1      
 154   1              if(Flag2==2)
 155   1              {
 156   2                      Sample=P21;
 157   2                      if(Sample==1)   
 158   2                      {
 159   3                              FlagTimer2++;
 160   3                              if(FlagTimer2>2)
 161   3                              {
 162   4                                      Flag2=0;
 163   4                                      FlagTimer2=0;
 164   4                                      P00 = 1;
 165   4                              }
 166   3                      }
 167   2                      else    FlagTimer2=0;
 168   2              }
 169   1      
 170   1              if(Flag3==0)
 171   1              {
 172   2                      Sample = P22;
 173   2                      if(Sample==0)
 174   2                      {
 175   3                              FlagTimer3++;
 176   3                              if(FlagTimer3>2)
 177   3                              {
 178   4                                      Flag3=1;
 179   4                                      FlagTimer3=0;
C51 COMPILER V8.02   MAIN                                                                  04/29/2008 14:58:24 PAGE 4   

 180   4                                      P00 = 0;
 181   4                              }               
 182   3                      }
 183   2                      else    FlagTimer3=0;
 184   2              }
 185   1      
 186   1              if(Flag3==2)
 187   1              {
 188   2                      Sample= P22;
 189   2                      if(Sample==1)   
 190   2                      {
 191   3                              FlagTimer3++;
 192   3                              if(FlagTimer3>2)
 193   3                              {
 194   4                                      Flag3=0;
 195   4                                      FlagTimer3=0;
 196   4                                      P00 = 1;
 197   4                              }
 198   3                      }
 199   2                      else    FlagTimer3=0;
 200   2              }
 201   1              
 202   1              if(Flag4==0)
 203   1              {
 204   2                      Sample = P23;
 205   2                      if(Sample==0)
 206   2                      {
 207   3                              FlagTimer4++;
 208   3                              if(FlagTimer4>2)
 209   3                              {
 210   4                                      Flag4=1;
 211   4                                      FlagTimer4=0;
 212   4                                      P00 = 0;
 213   4                              }               
 214   3                      }
 215   2                      else    FlagTimer4=0;
 216   2              }
 217   1      
 218   1              if(Flag4==2)
 219   1              {
 220   2                      Sample = P23;
 221   2                      if(Sample==1)   
 222   2                      {
 223   3                              FlagTimer4++;
 224   3                              if(FlagTimer4>2)
 225   3                              {
 226   4                                      Flag4=0;
 227   4                                      FlagTimer4=0;
 228   4                                      P00 = 1;
 229   4                              }
 230   3                      }
 231   2                      else    FlagTimer4=0;
 232   2              }
 233   1      
 234   1              if(Flag5==0)
 235   1              {
 236   2                      Sample = P24;
 237   2                      if(Sample==0)
 238   2                      {
 239   3                              FlagTimer5++;
 240   3                              if(FlagTimer5>2)
 241   3                              {
C51 COMPILER V8.02   MAIN                                                                  04/29/2008 14:58:24 PAGE 5   

 242   4                                      Flag5=1;
 243   4                                      FlagTimer5=0;
 244   4                                      P00 = 0;
 245   4                              }               
 246   3                      }
 247   2                      else    FlagTimer5=0;
 248   2              }
 249   1      
 250   1              if(Flag5==2)
 251   1              {
 252   2                      Sample = P24;
 253   2                      if(Sample==1)   
 254   2                      {
 255   3                              FlagTimer5++;
 256   3                              if(FlagTimer5>2)
 257   3                              {
 258   4                                      Flag5=0;
 259   4                                      FlagTimer5=0;
 260   4                                      P00 = 1;
 261   4                              }
 262   3                      }
 263   2                      else    FlagTimer5=0;
 264   2              }
 265   1      
 266   1      }
 267          
 268          /*
 269          ///////////////////////////////////////////////////////////////
 270          //Serial port transceive interrupt
 271          void serial(void) interrupt 4 using 2
 272          {
 273                  uchar temp;
 274                  if(RI&(!RcvFlag)){
 275                          RI = 0;
 276                  }
 277              if(TI){
 278                          TI=0;
 279                          //the Tx interrupt processing code
 280                  }
 281          }
 282          */
 283          
 284          //END
 285                  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    489    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10    ----
   IDATA SIZE       =     30    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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