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

📄 artx_key_demo.lst

📁 LPC2142用演示ARTX的LED显示例程及KEY按键处理的演示程序.
💻 LST
📖 第 1 页 / 共 2 页
字号:
   57:     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:
   58:     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
ARM COMPILER V2.42,  ARTX_Key_Demo                                                         17/01/06  16:24:22  PAGE 6   

 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
   60:     case 0x00:
 00000086          L_6:
   61:         i=0; 
 00000086  1C01      MOV         R1,R0 ; i
   62:         break;
 00000088  E00C      B           L_5  ; T=0x000000A4
   63:     case 0x08:
 0000008A          L_11:
   64:         i=4; 
 0000008A  2104      MOV         R1,#0x4
   65:         break;
 0000008C  E00A      B           L_5  ; T=0x000000A4
   67:     case 0x04:
 0000008E          L_10:
   68:         i=3; 
 0000008E  2103      MOV         R1,#0x3
   69:         break;
 00000090  E008      B           L_5  ; T=0x000000A4
   71:     case 0x02:
 00000092          L_9:
   72:         i=2; 
 00000092  2102      MOV         R1,#0x2
   73:         break;
 00000094  E006      B           L_5  ; T=0x000000A4
   75:     case 0x01:
 00000096          L_8:
   76:         i=1; 
 00000096  2101      MOV         R1,#0x1
   77:         break;
 00000098  E004      B           L_5  ; T=0x000000A4
   79:     case 0x0F:    //复合键
 0000009A          L_13:
   80:         i=0XF; 
 0000009A  210F      MOV         R1,#0xF
   81:         break;
 0000009C  E002      B           L_5  ; T=0x000000A4
   83:     case 0x0E:
 0000009E          L_12:
   84:         i=0X0E; 
 0000009E  210E      MOV         R1,#0xE
   85:         break;
 000000A0  E000      B           L_5  ; T=0x000000A4
   86:     default:
 000000A2          L_7:
   87:         i=0;
 000000A2  1C01      MOV         R1,R0 ; i
   89:     }
 000000A4          L_5:
   90:     return i;
 000000A4  1C08      MOV         R0,R1 ; i
 000000A6  0600      LSL         R0,R0,#0x18 ; i
 000000A8  0E00      LSR         R0,R0,#0x18
 000000AA            ; SCOPE-END
   91: }
 000000AA  BC30      POP         {R4-R5}
 000000AC  4770      BX          R14
 000000AE          ENDP ; 'Scan_Key?T'


*** CODE SEGMENT '?PR?signal_func?T?ARTX_Key_Demo':
   95: void signal_func (OS_TID task)  {
 00000000  B510      PUSH        {R4,LR}
 00000002  1C04      MOV         R4,R0 ; task
ARM COMPILER V2.42,  ARTX_Key_Demo                                                         17/01/06  16:24:22  PAGE 7   

 00000004  ---- Variable 'task' assigned to Register 'R4' ----
   96:   os_evt_set (0x0100, t_clock);          /* send event signal to clock task  */
 00000004  4800      LDR         R0,=t_clock ; t_clock
 00000006  6801      LDR         R1,[R0,#0x0] ; t_clock
 00000008  4840      LDR         R0,=0x100
 0000000A  F7FF      BL          os_evt_set?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          os_evt_set?T  ; T=0x0001  (2)
   97:   os_dly_wait (9);                      /* delay 50 clock ticks             */
 0000000E  2009      MOV         R0,#0x9
 00000010  F7FF      BL          os_dly_wait?T  ; T=0x0001  (1)
 00000012  FFF6      BL          os_dly_wait?T  ; T=0x0001  (2)
  100:   os_evt_set (0x0001, task);             /* send event to task 'task'        */
 00000014  1C21      MOV         R1,R4 ; task
 00000016  2001      MOV         R0,#0x1
 00000018  F7FF      BL          os_evt_set?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          os_evt_set?T  ; T=0x0001  (2)
  102: }
 0000001C  BC10      POP         {R4}
 0000001E  BC08      POP         {R3}
 00000020  4718      BX          R3
 00000022          ENDP ; 'signal_func?T'


*** CODE SEGMENT '?PR?phaseA?T?ARTX_Key_Demo':
  107:   for (;;) {
 00000000          L_18:
  108:     os_evt_wait_and (0x0001, 0xffff);    /* wait for an event flag 0x0001    */
 00000000  2201      MOV         R2,#0x1
 00000002  1C10      MOV         R0,R2
 00000004  4800      LDR         R1,=0xFFFF
 00000006  F7FF      BL          os_evt_wait?T  ; T=0x0001  (1)
 00000008  FFFB      BL          os_evt_wait?T  ; T=0x0001  (2)
  109:     IOCLR1 = LED_B;
 0000000A  4800      LDR         R1,=0x200000
 0000000C  4800      LDR         R0,=0xE002801C
 0000000E  6001      STR         R1,[R0,#0x0]
  110:     signal_func (t_GetKey);              /* call common signal function      */
 00000010  4800      LDR         R0,=t_GetKey ; t_GetKey
 00000012  6800      LDR         R0,[R0,#0x0] ; t_GetKey
 00000014  F7FF      BL          signal_func?T  ; T=0x0001  (1)
 00000016  FFF4      BL          signal_func?T  ; T=0x0001  (2)
  111:     IOSET1 = LED_B;
 00000018  4800      LDR         R1,=0x200000
 0000001A  4800      LDR         R0,=0xE0028014
 0000001C  6001      STR         R1,[R0,#0x0]
  112:   }
 0000001E  E7EF      B           L_18  ; T=0x00000000
  113: }
 00000020          ENDP ; 'phaseA?T'


*** CODE SEGMENT '?PR?GetKey?T?ARTX_Key_Demo':
  114: void GetKey (void) __task {
 00000000            ; SCOPE-START
  116:   for (;;) {
 00000000          L_23:
  117:     os_evt_wait_and (0x0001, 0xffff);    /* wait for an event flag 0x0001    */
 00000000  2201      MOV         R2,#0x1
 00000002  1C10      MOV         R0,R2
 00000004  4800      LDR         R1,=0xFFFF
 00000006  F7FF      BL          os_evt_wait?T  ; T=0x0001  (1)
 00000008  FFFB      BL          os_evt_wait?T  ; T=0x0001  (2)
  118:        i=Scan_Key();
 0000000A  F7FF      BL          Scan_Key?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          Scan_Key?T  ; T=0x0001  (2)
 0000000E  1C04      MOV         R4,R0 ; i
 00000010  ---- Variable 'i' assigned to Register 'R4' ----
  119:     if(i!=0)IOCLR1 = (0x00008000<<i);
 00000010  1C20      MOV         R0,R4 ; i
 00000012  0600      LSL         R0,R0,#0x18 ; i
ARM COMPILER V2.42,  ARTX_Key_Demo                                                         17/01/06  16:24:22  PAGE 8   

 00000014  0E00      LSR         R0,R0,#0x18
 00000016  2800      CMP         R0,#0x0
 00000018  D006      BEQ         L_25  ; T=0x00000028
 0000001A  1C20      MOV         R0,R4 ; i
 0000001C  0600      LSL         R0,R0,#0x18 ; i
 0000001E  0E00      LSR         R0,R0,#0x18
 00000020  4800      LDR         R1,=0x8000
 00000022  4081      LSL         R1,R0
 00000024  4800      LDR         R0,=0xE002801C
 00000026  6001      STR         R1,[R0,#0x0]
 00000028          L_25:
  120:      signal_func(t_phaseA);
 00000028  4800      LDR         R0,=t_phaseA ; t_phaseA
 0000002A  6800      LDR         R0,[R0,#0x0] ; t_phaseA
 0000002C  F7FF      BL          signal_func?T  ; T=0x0001  (1)
 0000002E  FFE8      BL          signal_func?T  ; T=0x0001  (2)
  122:     if(i!=0)IOSET1 = (0x00008000<<i);
 00000030  1C20      MOV         R0,R4 ; i
 00000032  0600      LSL         R0,R0,#0x18 ; i
 00000034  0E00      LSR         R0,R0,#0x18
 00000036  2800      CMP         R0,#0x0
 00000038  D0E2      BEQ         L_23  ; T=0x00000000
 0000003A  1C20      MOV         R0,R4 ; i
 0000003C  0600      LSL         R0,R0,#0x18 ; i
 0000003E  0E00      LSR         R0,R0,#0x18
 00000040  4800      LDR         R1,=0x8000
 00000042  4081      LSL         R1,R0
 00000044  4800      LDR         R0,=0xE0028014
 00000046  6001      STR         R1,[R0,#0x0]
  124:   }
 00000048  E7DA      B           L_23  ; T=0x00000000
 0000004A            ; SCOPE-END
  125: }
 0000004A          ENDP ; 'GetKey?T'


*** CODE SEGMENT '?PR?clock?T?ARTX_Key_Demo':
  131:   for (;;) {
 00000000          L_30:
  132:    os_evt_wait_and (0x0100, 0xffff);    /* wait for an event flag 0x0100    */
 00000000  4840      LDR         R0,=0x100
 00000002  4800      LDR         R1,=0xFFFF
 00000004  2201      MOV         R2,#0x1
 00000006  F7FF      BL          os_evt_wait?T  ; T=0x0001  (1)
 00000008  FFFB      BL          os_evt_wait?T  ; T=0x0001  (2)
  133:     IOSET1 = LED_CLK;
 0000000A  4800      LDR         R1,=0x800000
 0000000C  4800      LDR         R0,=0xE0028014
 0000000E  6001      STR         R1,[R0,#0x0]
  134:     os_dly_wait (8);                     /* delay 8 clock ticks              */
 00000010  2008      MOV         R0,#0x8
 00000012  F7FF      BL          os_dly_wait?T  ; T=0x0001  (1)
 00000014  FFF5      BL          os_dly_wait?T  ; T=0x0001  (2)
  135:     IOCLR1 = LED_CLK;
 00000016  4800      LDR         R1,=0x800000
 00000018  4800      LDR         R0,=0xE002801C
 0000001A  6001      STR         R1,[R0,#0x0]
  137:   }
 0000001C  E7F0      B           L_30  ; T=0x00000000
  138: }
 0000001E          ENDP ; 'clock?T'


*** CODE SEGMENT '?PR?init?T?ARTX_Key_Demo':
  145:   IODIR1 = 0xFF0000;                     /* P1.16..23 defined as Outputs     */
 00000000  4800      LDR         R1,=0xFF0000
 00000002  4800      LDR         R0,=0xE0028018
 00000004  6001      STR         R1,[R0,#0x0]
  146:   init_port();
 00000006  F7FF      BL          init_port?T  ; T=0x0001  (1)
ARM COMPILER V2.42,  ARTX_Key_Demo                                                         17/01/06  16:24:22  PAGE 9   

 00000008  FFFB      BL          init_port?T  ; T=0x0001  (2)
  147:   t_phaseA = os_tsk_create (phaseA, 0);  /* start task phaseB */
 0000000A  4800      LDR         R0,=phaseA?T ; phaseA?T
 0000000C  2200      MOV         R2,#0x0
 0000000E  2300      MOV         R3,#0x0
 00000010  1C19      MOV         R1,R3
 00000012  F7FF      BL          os_tsk_create_user?T  ; T=0x0001  (1)
 00000014  FFF5      BL          os_tsk_create_user?T  ; T=0x0001  (2)
 00000016  4800      LDR         R1,=t_phaseA ; t_phaseA
 00000018  6008      STR         R0,[R1,#0x0] ; t_phaseA
  148:   t_GetKey = os_tsk_create (GetKey, 0);  /* start task phaseA                */
 0000001A  4800      LDR         R0,=GetKey?T ; GetKey?T
 0000001C  2200      MOV         R2,#0x0
 0000001E  2300      MOV         R3,#0x0
 00000020  1C19      MOV         R1,R3
 00000022  F7FF      BL          os_tsk_create_user?T  ; T=0x0001  (1)
 00000024  FFED      BL          os_tsk_create_user?T  ; T=0x0001  (2)
 00000026  4800      LDR         R1,=t_GetKey ; t_GetKey
 00000028  6008      STR         R0,[R1,#0x0] ; t_GetKey
  152:   t_clock  = os_tsk_create (clock, 0);   /* start task clock                 */
 0000002A  4800      LDR         R0,=clock?T ; clock?T
 0000002C  2200      MOV         R2,#0x0
 0000002E  2300      MOV         R3,#0x0
 00000030  1C19      MOV         R1,R3
 00000032  F7FF      BL          os_tsk_create_user?T  ; T=0x0001  (1)
 00000034  FFE5      BL          os_tsk_create_user?T  ; T=0x0001  (2)
 00000036  4800      LDR         R1,=t_clock ; t_clock
 00000038  6008      STR         R0,[R1,#0x0] ; t_clock
  153:   os_evt_set (0x0001, t_phaseA);         /* send signal event to task phaseA */
 0000003A  4800      LDR         R0,=t_phaseA ; t_phaseA
 0000003C  6801      LDR         R1,[R0,#0x0] ; t_phaseA
 0000003E  2001      MOV         R0,#0x1
 00000040  F7FF      BL          os_evt_set?T  ; T=0x0001  (1)
 00000042  FFDE      BL          os_evt_set?T  ; T=0x0001  (2)
  154:   os_tsk_delete_self ();
 00000044  2000      MOV         R0,#0x0
 00000046  F7FF      BL          os_tsk_delete?T  ; T=0x0001  (1)
 00000048  FFDB      BL          os_tsk_delete?T  ; T=0x0001  (2)
  155: }
 0000004A          ENDP ; 'init?T'


*** CODE SEGMENT '?PR?main?ARTX_Key_Demo':
  160: void main (void) {
 00000000  B500      PUSH        {LR}
  161:   os_sys_init (init);                    /* Initialize ARTX and start init   */
 00000002  4800      LDR         R0,=init?T ; init?T
 00000004  2200      MOV         R2,#0x0
 00000006  2300      MOV         R3,#0x0
 00000008  1C19      MOV         R1,R3
 0000000A  F7FF      BL          os_sys_init_user?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          os_sys_init_user?T  ; T=0x0001  (2)
  162: }
 0000000E  BC08      POP         {R3}
 00000010  4718      BX          R3
 00000012          ENDP ; 'main'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =        12
  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 + -