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

📄 key.lst

📁 基本原则qrwrfewtrrgvcdgf
💻 LST
字号:
ARM COMPILER V2.42,  key                                                                   05/01/06  13:35:23  PAGE 1   


ARM COMPILER V2.42, COMPILATION OF MODULE key
OBJECT MODULE PLACED IN .\Obj\key.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe key.c THUMB BROWSE DEBUG PRINT(.\LST\KEY.LST) TABS(4) OBJECT(.\Obj\key.obj) 

stmt  level    source

    1          #include <LPC214X.H>
    2          
    3          /*============================================================
    4              LPC214X 按键功能演示
    5          功能:按下键,对应的LED灯点亮。
    6          作者: Mingtree  ycxms88@163.com   http://www.mcu123.com
    7          ==============================================================
    8          /*
    9          引脚分布
   10          P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
   11          TX0  RX0            CS1       K4   K3
   12          
   13          P0.8 P0.9 P0.10 P0.11 P0.12 P0.13 P0.14 P0.15
   14          TX1  RX1  RW    SCL   SDA    K1   VRST  K2
   15          
   16          P0.16 P0.17 P0.18 P0.19 P0.20 P0.21 P0.22 P0.23
   17          BEEP  SCK1  MISO  MOSI  SSEL  RS_COM RW    VB
   18          P0.24 P0.25 P0.26 P0.27 P0.28 P0.29 P0.30 P0.31
   19                AOUT  D+     D-   A_IN1 A_IN2  CS2   ULED
   20          
   21          LED引脚
   22          L1---------L8
   23          P1.16----P1.23
   24          */
   25          
   26          #define KEY1 13
   27          #define KEY2 15
   28          #define KEY3 7
   29          #define KEY4 6
   30          
   31          #define KEY_MASK=(1<<KEY1)|(1<<KEY2)|(1<<KEY3)|(1<<KEY4)
   32          
   33           void init_port(void)
   34           {
   35   1      
   36   1       //port initialized
   37   1       IODIR1=0x00FF0000;
   38   1       IODIR0=0x40600010;
   39   1      
   40   1       }
   41          /*
   42          unsigned char Scan_Key(void)
   43          {
   44              unsigned int k;
   45              k=IOPIN0;
   46              if((k&1<<KEY1)==0)return 1;
   47              if((k&1<<KEY2)==0)return 2;
   48              if((k&1<<KEY3)==0)return 3;
   49              if((k&1<<KEY4)==0)return 4;
   50              return 0;
   51          }
   52          */
   53          unsigned char Scan_Key(void)
   54          {
   55   1          unsigned int k;
   56   1          unsigned char key,i;
   57   1      
   58   1          i=0;
   59   1          key=0;
ARM COMPILER V2.42,  key                                                                   05/01/06  13:35:23  PAGE 2   

   60   1      
   61   1          k=IOPIN0;
   62   1          if((k&1<<KEY4)==0)key+=1;
   63   1          key=key<<1;
   64   1          if((k&1<<KEY3)==0)key+=1;
   65   1          key=key<<1;
   66   1          if((k&1<<KEY2)==0)key+=1;
   67   1          key=key<<1;
   68   1          if((k&1<<KEY1)==0)key+=1;
   69   1          switch(key)
   70   1          {
   71   2          case 0x00:
   72   2              i=0; 
   73   2              break;
   74   2          case 0x08:
   75   2              i=4; 
   76   2              break;
   77   2          
   78   2          case 0x04:
   79   2              i=3; 
   80   2              break;
   81   2          
   82   2          case 0x02:
   83   2              i=2; 
   84   2              break;
   85   2          
   86   2          case 0x01:
   87   2              i=1; 
   88   2              break;
   89   2      
   90   2          case 0x0F:    //复合键
   91   2              i=0XF; 
   92   2              break;
   93   2          
   94   2          case 0x0E:
   95   2              i=0X0E; 
   96   2              break;
   97   2          default:
   98   2              i=0;
   99   2              break;
  100   2          }
  101   1          return i;
  102   1      }
  103          
  104          /*
  105          
  106          */
  107          void delay (unsigned int i) {                        /* Delay function */
  108   1      unsigned int n;
  109   1      while(i>1)
  110   1      {
  111   2          for(n=65535;n>1;n--);
  112   2          i--;
  113   2      }
  114   1      }
  115          
  116          
  117          
  118          void main(void)
  119          {
  120   1          unsigned char i;
  121   1          init_port();
  122   1          while(1)
  123   1          {
  124   2           i=Scan_Key();
  125   2           if(i!=0)IOCLR1 = (0x00008000<<i);   
ARM COMPILER V2.42,  key                                                                   05/01/06  13:35:23  PAGE 3   

  126   2           
  127   2           delay(30);
  128   2           IOSET1 = 0x00ff0000; //ALL LED OFF
  129   2           //delay(100);
  130   2          }
  131   1      }
ARM COMPILER V2.42,  key                                                                   05/01/06  13:35:23  PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         init_port?T
 PUBLIC         Scan_Key?T
 PUBLIC         delay?T
 PUBLIC         main



*** CODE SEGMENT '?PR?init_port?T?key':
   37:  IODIR1=0x00FF0000;
 00000000  4800      LDR         R1,=0xFF0000
 00000002  4800      LDR         R0,=0xE0028018
 00000004  6001      STR         R1,[R0,#0x0]
   38:  IODIR0=0x40600010;
 00000006  4800      LDR         R1,=0x40600010
 00000008  4800      LDR         R0,=0xE0028008
 0000000A  6001      STR         R1,[R0,#0x0]
   40:  }
 0000000C  4770      BX          R14
 0000000E          ENDP ; 'init_port?T'


*** CODE SEGMENT '?PR?Scan_Key?T?key':
   53: unsigned char Scan_Key(void)
 00000000  B430      PUSH        {R4-R5}
   54: {
 00000002            ; SCOPE-START
   58:     i=0;
 00000002  2000      MOV         R0,#0x0
 00000004  1C01      MOV         R1,R0 ; i
 00000006  ---- Variable 'i' assigned to Register 'R1' ----
   59:     key=0;
 00000006  1C03      MOV         R3,R0 ; key
 00000008  ---- Variable 'key' assigned to Register 'R3' ----
   61:     k=IOPIN0;
 00000008  4800      LDR         R2,=0xE0028000
 0000000A  6815      LDR         R5,[R2,#0x0]
 0000000C  ---- Variable 'k' assigned to Register 'R5' ----
   62:     if((k&1<<KEY4)==0)key+=1;
 0000000C  1C2A      MOV         R2,R5 ; k
 0000000E  2440      MOV         R4,#0x40
 00000010  4222      TST         R2,R4 ; k
 00000012  D102      BNE         L_1  ; T=0x0000001A
 00000014  3301      ADD         R3,#0x1
 00000016  061B      LSL         R3,R3,#0x18
 00000018  0E1B      LSR         R3,R3,#0x18
 0000001A          L_1:
   63:     key=key<<1;
 0000001A  1C1A      MOV         R2,R3 ; key
 0000001C  0613      LSL         R3,R2,#0x18 ; key
 0000001E  0E1B      LSR         R3,R3,#0x18
 00000020  005B      LSL         R3,R3,#0x1
 00000022  061B      LSL         R3,R3,#0x18
 00000024  0E1B      LSR         R3,R3,#0x18
   64:     if((k&1<<KEY3)==0)key+=1;
 00000026  1C2A      MOV         R2,R5 ; k
 00000028  2480      MOV         R4,#0x80
 0000002A  4222      TST         R2,R4 ; k
 0000002C  D102      BNE         L_2  ; T=0x00000034
 0000002E  3301      ADD         R3,#0x1
 00000030  061B      LSL         R3,R3,#0x18
 00000032  0E1B      LSR         R3,R3,#0x18
 00000034          L_2:
   65:     key=key<<1;
ARM COMPILER V2.42,  key                                                                   05/01/06  13:35:23  PAGE 5   

 00000034  1C1A      MOV         R2,R3 ; key
 00000036  0613      LSL         R3,R2,#0x18 ; key
 00000038  0E1B      LSR         R3,R3,#0x18
 0000003A  005B      LSL         R3,R3,#0x1
 0000003C  061B      LSL         R3,R3,#0x18
 0000003E  0E1B      LSR         R3,R3,#0x18
   66:     if((k&1<<KEY2)==0)key+=1;
 00000040  1C2A      MOV         R2,R5 ; k
 00000042  4800      LDR         R4,=0x8000
 00000044  4222      TST         R2,R4 ; k
 00000046  D102      BNE         L_3  ; T=0x0000004E
 00000048  3301      ADD         R3,#0x1
 0000004A  061B      LSL         R3,R3,#0x18
 0000004C  0E1B      LSR         R3,R3,#0x18
 0000004E          L_3:
   67:     key=key<<1;
 0000004E  1C1A      MOV         R2,R3 ; key
 00000050  0613      LSL         R3,R2,#0x18 ; key
 00000052  0E1B      LSR         R3,R3,#0x18
 00000054  005B      LSL         R3,R3,#0x1
 00000056  061B      LSL         R3,R3,#0x18
 00000058  0E1B      LSR         R3,R3,#0x18
   68:     if((k&1<<KEY1)==0)key+=1;
 0000005A  1C2A      MOV         R2,R5 ; k
 0000005C  4800      LDR         R4,=0x2000
 0000005E  4222      TST         R2,R4 ; k
 00000060  D102      BNE         L_4  ; T=0x00000068
 00000062  3301      ADD         R3,#0x1
 00000064  061B      LSL         R3,R3,#0x18
 00000066  0E1B      LSR         R3,R3,#0x18
 00000068          L_4:
   69:     switch(key)
 00000068  1C1A      MOV         R2,R3 ; key
 0000006A  2A01      CMP         R2,#0x1 ; key
 0000006C  D013      BEQ         L_8  ; T=0x00000096
 0000006E  2A02      CMP         R2,#0x2 ; key
 00000070  D00F      BEQ         L_9  ; T=0x00000092
 00000072  2A04      CMP         R2,#0x4 ; key
 00000074  D00B      BEQ         L_10  ; T=0x0000008E
 00000076  2A08      CMP         R2,#0x8 ; key
 00000078  D007      BEQ         L_11  ; T=0x0000008A
 0000007A  2A0E      CMP         R2,#0xE ; key
 0000007C  D00F      BEQ         L_12  ; T=0x0000009E
 0000007E  2A0F      CMP         R2,#0xF ; key
 00000080  D00B      BEQ         L_13  ; T=0x0000009A
 00000082  2A00      CMP         R2,#0x0 ; key
 00000084  D10D      BNE         L_7  ; T=0x000000A2
   71:     case 0x00:
 00000086          L_6:
   72:         i=0; 
 00000086  1C01      MOV         R1,R0 ; i
   73:         break;
 00000088  E00C      B           L_5  ; T=0x000000A4
   74:     case 0x08:
 0000008A          L_11:
   75:         i=4; 
 0000008A  2104      MOV         R1,#0x4
   76:         break;
 0000008C  E00A      B           L_5  ; T=0x000000A4
   78:     case 0x04:
 0000008E          L_10:
   79:         i=3; 
 0000008E  2103      MOV         R1,#0x3
   80:         break;
 00000090  E008      B           L_5  ; T=0x000000A4
   82:     case 0x02:
ARM COMPILER V2.42,  key                                                                   05/01/06  13:35:23  PAGE 6   

 00000092          L_9:
   83:         i=2; 
 00000092  2102      MOV         R1,#0x2
   84:         break;
 00000094  E006      B           L_5  ; T=0x000000A4
   86:     case 0x01:
 00000096          L_8:
   87:         i=1; 
 00000096  2101      MOV         R1,#0x1
   88:         break;
 00000098  E004      B           L_5  ; T=0x000000A4
   90:     case 0x0F:    //复合键
 0000009A          L_13:
   91:         i=0XF; 
 0000009A  210F      MOV         R1,#0xF
   92:         break;
 0000009C  E002      B           L_5  ; T=0x000000A4
   94:     case 0x0E:
 0000009E          L_12:
   95:         i=0X0E; 
 0000009E  210E      MOV         R1,#0xE
   96:         break;
 000000A0  E000      B           L_5  ; T=0x000000A4
   97:     default:
 000000A2          L_7:
   98:         i=0;
 000000A2  1C01      MOV         R1,R0 ; i
  100:     }
 000000A4          L_5:
  101:     return i;
 000000A4  1C08      MOV         R0,R1 ; i
 000000A6  0600      LSL         R0,R0,#0x18 ; i
 000000A8  0E00      LSR         R0,R0,#0x18
 000000AA            ; SCOPE-END
  102: }
 000000AA  BC30      POP         {R4-R5}
 000000AC  4770      BX          R14
 000000AE          ENDP ; 'Scan_Key?T'


*** CODE SEGMENT '?PR?delay?T?key':
  107: void delay (unsigned int i) {                        /* Delay function */
 00000000  ---- Variable 'i' assigned to Register 'R0' ----
 00000000            ; SCOPE-START
  109: while(i>1)
 00000000  E005      B           L_15  ; T=0x0000000E
  111:     for(n=65535;n>1;n--);
 00000002          L_23:
 00000002  4800      LDR         R1,=0xFFFF
 00000004  ---- Variable 'n' assigned to Register 'R1' ----
 00000004          L_19:
 00000004  3901      SUB         R1,#0x1
 00000006  1C0A      MOV         R2,R1 ; n
 00000008  2A01      CMP         R2,#0x1 ; n
 0000000A  D8FB      BHI         L_19  ; T=0x00000004
  112:     i--;
 0000000C  3801      SUB         R0,#0x1
  113: }
 0000000E          L_15:
 0000000E  1C01      MOV         R1,R0 ; i
 00000010  2901      CMP         R1,#0x1 ; i
 00000012  D8F6      BHI         L_23  ; T=0x00000002
 00000014            ; SCOPE-END
  114: }
 00000014  4770      BX          R14
 00000016          ENDP ; 'delay?T'


*** CODE SEGMENT '?PR?main?key':
  118: void main(void)
ARM COMPILER V2.42,  key                                                                   05/01/06  13:35:23  PAGE 7   

 00000000  B500      PUSH        {LR}
  119: {
 00000002            ; SCOPE-START
  121:     init_port();
 00000002  F7FF      BL          init_port?T  ; T=0x0001  (1)
 00000004  FFFD      BL          init_port?T  ; T=0x0001  (2)
  122:     while(1)
 00000006          L_26:
  124:      i=Scan_Key();
 00000006  F7FF      BL          Scan_Key?T  ; T=0x0001  (1)
 00000008  FFFB      BL          Scan_Key?T  ; T=0x0001  (2)
 0000000A  1C04      MOV         R4,R0 ; i
 0000000C  ---- Variable 'i' assigned to Register 'R4' ----
  125:      if(i!=0)IOCLR1 = (0x00008000<<i);   
 0000000C  1C20      MOV         R0,R4 ; i
 0000000E  0600      LSL         R0,R0,#0x18 ; i
 00000010  0E00      LSR         R0,R0,#0x18
 00000012  2800      CMP         R0,#0x0
 00000014  D006      BEQ         L_28  ; T=0x00000024
 00000016  1C20      MOV         R0,R4 ; i
 00000018  0600      LSL         R0,R0,#0x18 ; i
 0000001A  0E00      LSR         R0,R0,#0x18
 0000001C  4800      LDR         R1,=0x8000
 0000001E  4081      LSL         R1,R0
 00000020  4800      LDR         R0,=0xE002801C
 00000022  6001      STR         R1,[R0,#0x0]
 00000024          L_28:
  127:      delay(30);
 00000024  201E      MOV         R0,#0x1E
 00000026  F7FF      BL          delay?T  ; T=0x0001  (1)
 00000028  FFEB      BL          delay?T  ; T=0x0001  (2)
  128:      IOSET1 = 0x00ff0000; //ALL LED OFF
 0000002A  4800      LDR         R1,=0xFF0000
 0000002C  4800      LDR         R0,=0xE0028014
 0000002E  6001      STR         R1,[R0,#0x0]
  130:     }
 00000030  E7E9      B           L_26  ; T=0x00000006
 00000032            ; SCOPE-END
 00000032  BC08      POP         {R3}
 00000034  4718      BX          R3
 00000036          ENDP ; 'main'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =    ------
  const size           =    ------
End of Module Information.


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

⌨️ 快捷键说明

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