📄 artx_key_demo.lst
字号:
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 + -