📄 main.lst
字号:
ARM COMPILER V2.42, main 20/01/06 15:26:03 PAGE 1
ARM COMPILER V2.42, COMPILATION OF MODULE main
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe main.c THUMB BROWSE DEBUG TABS(4)
stmt level source
1 #include <ARTX.h>
2 #include <LPC213x.H> // Philips Peripheral Registers
3 #include <LPC213xDEF.H> //ARM菜鸟HotPower创建定义文件(新版)
4 #include <main.h>
5 #include <string.h>
6 #include <stdio.h>
7
8 #pragma NOINIT
9 #pragma save
10 #pragma optimize (7)
11
12
13 volatile unsigned int SystemRamTest;//RAM掉电测试变量
14
15 OS_TID Main_Task, Key_Task, Led_Task, Lednum_Task;
16 OS_TID Beep_Task, Lcd_Task, Adc_Task, Pwm_Task;
17
18 void MainTask (void) __task;
19 void KeyTask (void) __task;
20 void LcdTask (void) __task;
21
22
23 void SystemInit(void);
24 void KeyInit(void);
25 void LcdInit(void);
26
27
28 void SystemInit(void) {
29 1 if (SystemRamTest != 0x5555aaaa) {
30 2 }
31 1 }
32
33 void KeyInit(void) {
34 1 if (SystemRamTest != 0x5555aaaa) {
35 2 }
36 1 }
37
38 void LcdInit(void) {
39 1 if (SystemRamTest != 0x5555aaaa) {
40 2 }
41 1 }
42
43
44 void MainTask (void) __task {
45 1 SystemInit();
46 1 Main_Task = os_tsk_self ();
47 1 Key_Task = os_tsk_create (KeyTask, 1);//创建KeyTask任务及级别
48 1 Lcd_Task = os_tsk_create (LcdTask, 1);//创建LcdTask任务及级别
49 1 SystemRamTest = 0x5555aaaa;
50 1 for (;;) {
51 2 os_evt_set (0x0001, Key_Task);//
52 2
53 2 os_tsk_pass();
54 2 }
55 1 }
56
57 void KeyTask (void) __task {
58 1 OS_RESULT result;
59 1 unsigned int i;
ARM COMPILER V2.42, main 20/01/06 15:26:03 PAGE 2
60 1 KeyInit();
61 1 for (;;) {
62 2 result = os_evt_wait_or(0xffff, 0xffff);//等待LedTask任务事件发生
63 2 if(result == OS_R_EVT) {
64 3 i = os_evt_get();
65 3 switch(i) {
66 4 case 0x0001: ;//IOCLR1 = (1 << LED1);//点亮LED1
67 4 break;
68 4 }
69 3 }
70 2 os_tsk_pass();
71 2 }
72 1 }
73
74 void LcdTask (void) __task {
75 1 OS_RESULT result;
76 1 //unsigned int i;
77 1 LcdInit();
78 1 for (;;) {
79 2 result = os_evt_wait_or(0xffff, 0xffff);//等待LcdTask任务事件发生
80 2 if(result == OS_R_EVT) {
81 3 }
82 2 // os_dly_wait (2);//延时20mS
83 2 os_tsk_pass();
84 2 }
85 1 }
86
87
88 void main (void) {
89 1 volatile unsigned int start;
90 1 for (start = 0; start < 1000000; start ++);
91 1 os_sys_init (MainTask);//启动ARTX,此函数并不返回main()
92 1 }
ARM COMPILER V2.42, main 20/01/06 15:26:03 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (os_tsk_create_user?T)
EXTERN CODE16 (os_tsk_self?T)
EXTERN CODE16 (os_sys_init_user?T)
EXTERN CODE16 (os_tsk_pass?T)
EXTERN CODE16 (os_evt_wait?T)
EXTERN CODE16 (os_evt_set?T)
EXTERN CODE16 (os_evt_get?T)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC MainTask?T
PUBLIC KeyTask?T
PUBLIC LcdTask?T
PUBLIC SystemInit?T
PUBLIC KeyInit?T
PUBLIC LcdInit?T
PUBLIC main
PUBLIC SystemRamTest
PUBLIC Main_Task
PUBLIC Key_Task
PUBLIC Led_Task
PUBLIC Lednum_Task
PUBLIC Beep_Task
PUBLIC Lcd_Task
PUBLIC Adc_Task
PUBLIC Pwm_Task
*** DATA SEGMENT '?DTN?main':
00000000 SystemRamTest:
00000000 DS 4
00000004 Main_Task:
00000004 DS 4
00000008 Key_Task:
00000008 DS 4
0000000C Led_Task:
0000000C DS 4
00000010 Lednum_Task:
00000010 DS 4
00000014 Beep_Task:
00000014 DS 4
00000018 Lcd_Task:
00000018 DS 4
0000001C Adc_Task:
0000001C DS 4
00000020 Pwm_Task:
00000020 DS 4
*** CODE SEGMENT '?PR?SystemInit?T?main':
29: if (SystemRamTest != 0x5555aaaa) {
00000000 4800 LDR R0,=SystemRamTest ; SystemRamTest
00000002 6800 LDR R0,[R0,#0x0] ; SystemRamTest
31: }
00000004 4770 BX R14
00000006 ENDP ; 'SystemInit?T'
*** CODE SEGMENT '?PR?KeyInit?T?main':
34: if (SystemRamTest != 0x5555aaaa) {
00000000 4800 LDR R0,=SystemRamTest ; SystemRamTest
00000002 6800 LDR R0,[R0,#0x0] ; SystemRamTest
36: }
00000004 4770 BX R14
00000006 ENDP ; 'KeyInit?T'
*** CODE SEGMENT '?PR?LcdInit?T?main':
ARM COMPILER V2.42, main 20/01/06 15:26:03 PAGE 4
39: if (SystemRamTest != 0x5555aaaa) {
00000000 4800 LDR R0,=SystemRamTest ; SystemRamTest
00000002 6800 LDR R0,[R0,#0x0] ; SystemRamTest
41: }
00000004 4770 BX R14
00000006 ENDP ; 'LcdInit?T'
*** CODE SEGMENT '?PR?MainTask?T?main':
45: SystemInit();
00000000 F7FF BL SystemInit?T ; T=0x0001 (1)
00000002 FFFE BL SystemInit?T ; T=0x0001 (2)
46: Main_Task = os_tsk_self ();
00000004 F7FF BL os_tsk_self?T ; T=0x0001 (1)
00000006 FFFC BL os_tsk_self?T ; T=0x0001 (2)
00000008 4800 LDR R1,=Main_Task ; Main_Task
0000000A 6008 STR R0,[R1,#0x0] ; Main_Task
47: Key_Task = os_tsk_create (KeyTask, 1);//创建KeyTask任务及级别
0000000C 4800 LDR R0,=KeyTask?T ; KeyTask?T
0000000E 2200 MOV R2,#0x0
00000010 2101 MOV R1,#0x1
00000012 2300 MOV R3,#0x0
00000014 F7FF BL os_tsk_create_user?T ; T=0x0001 (1)
00000016 FFF4 BL os_tsk_create_user?T ; T=0x0001 (2)
00000018 4800 LDR R1,=Key_Task ; Key_Task
0000001A 6008 STR R0,[R1,#0x0] ; Key_Task
48: Lcd_Task = os_tsk_create (LcdTask, 1);//创建LcdTask任务及级别
0000001C 4800 LDR R0,=LcdTask?T ; LcdTask?T
0000001E 2200 MOV R2,#0x0
00000020 2101 MOV R1,#0x1
00000022 2300 MOV R3,#0x0
00000024 F7FF BL os_tsk_create_user?T ; T=0x0001 (1)
00000026 FFEC BL os_tsk_create_user?T ; T=0x0001 (2)
00000028 4800 LDR R1,=Lcd_Task ; Lcd_Task
0000002A 6008 STR R0,[R1,#0x0] ; Lcd_Task
49: SystemRamTest = 0x5555aaaa;
0000002C 4800 LDR R1,=0x5555AAAA
0000002E 4800 LDR R0,=SystemRamTest ; SystemRamTest
00000030 6001 STR R1,[R0,#0x0] ; SystemRamTest
50: for (;;) {
00000032 L_7:
51: os_evt_set (0x0001, Key_Task);//
00000032 4800 LDR R0,=Key_Task ; Key_Task
00000034 6801 LDR R1,[R0,#0x0] ; Key_Task
00000036 2001 MOV R0,#0x1
00000038 F7FF BL os_evt_set?T ; T=0x0001 (1)
0000003A FFE2 BL os_evt_set?T ; T=0x0001 (2)
53: os_tsk_pass();
0000003C F7FF BL os_tsk_pass?T ; T=0x0001 (1)
0000003E FFE0 BL os_tsk_pass?T ; T=0x0001 (2)
54: }
00000040 E7F7 B L_7 ; T=0x00000032
55: }
00000042 ENDP ; 'MainTask?T'
*** CODE SEGMENT '?PR?KeyTask?T?main':
57: void KeyTask (void) __task {
00000000 ; SCOPE-START
60: KeyInit();
00000000 F7FF BL KeyInit?T ; T=0x0001 (1)
00000002 FFFE BL KeyInit?T ; T=0x0001 (2)
61: for (;;) {
00000004 L_12:
62: result = os_evt_wait_or(0xffff, 0xffff);//等待LedTask任务事件发生
00000004 4800 LDR R1,=0xFFFF
00000006 1C08 MOV R0,R1
00000008 2200 MOV R2,#0x0
0000000A F7FF BL os_evt_wait?T ; T=0x0001 (1)
0000000C FFF9 BL os_evt_wait?T ; T=0x0001 (2)
ARM COMPILER V2.42, main 20/01/06 15:26:03 PAGE 5
0000000E 1C04 MOV R4,R0 ; result
00000010 ---- Variable 'result' assigned to Register 'R4' ----
63: if(result == OS_R_EVT) {
00000010 1C20 MOV R0,R4 ; result
00000012 2802 CMP R0,#0x2 ; result
00000014 D101 BNE L_14 ; T=0x0000001A
64: i = os_evt_get();
00000016 F7FF BL os_evt_get?T ; T=0x0001 (1)
00000018 FFF3 BL os_evt_get?T ; T=0x0001 (2)
69: }
0000001A L_14:
70: os_tsk_pass();
0000001A F7FF BL os_tsk_pass?T ; T=0x0001 (1)
0000001C FFF1 BL os_tsk_pass?T ; T=0x0001 (2)
71: }
0000001E E7F1 B L_12 ; T=0x00000004
00000020 ; SCOPE-END
72: }
00000020 ENDP ; 'KeyTask?T'
*** CODE SEGMENT '?PR?LcdTask?T?main':
74: void LcdTask (void) __task {
00000000 ; SCOPE-START
77: LcdInit();
00000000 F7FF BL LcdInit?T ; T=0x0001 (1)
00000002 FFFE BL LcdInit?T ; T=0x0001 (2)
78: for (;;) {
00000004 L_20:
79: result = os_evt_wait_or(0xffff, 0xffff);//等待LcdTask任务事件发生
00000004 4800 LDR R1,=0xFFFF
00000006 1C08 MOV R0,R1
00000008 2200 MOV R2,#0x0
0000000A F7FF BL os_evt_wait?T ; T=0x0001 (1)
0000000C FFF9 BL os_evt_wait?T ; T=0x0001 (2)
83: os_tsk_pass();
0000000E F7FF BL os_tsk_pass?T ; T=0x0001 (1)
00000010 FFF7 BL os_tsk_pass?T ; T=0x0001 (2)
84: }
00000012 E7F7 B L_20 ; T=0x00000004
00000014 ; SCOPE-END
85: }
00000014 ENDP ; 'LcdTask?T'
*** CODE SEGMENT '?PR?main?main':
88: void main (void) {
00000000 B500 PUSH {LR}
00000002 B081 SUB R13,#0x4
00000004 ; SCOPE-START
90: for (start = 0; start < 1000000; start ++);
00000004 2300 MOV R3,#0x0
00000006 9300 STR R3,[R13,#0x0] ; start
00000008 E002 B L_25 ; T=0x00000010
0000000A L_23:
0000000A 9800 LDR R0,[R13,#0x0] ; start
0000000C 3001 ADD R0,#0x1
0000000E 9000 STR R0,[R13,#0x0] ; start
00000010 L_25:
00000010 9800 LDR R0,[R13,#0x0] ; start
00000012 4800 LDR R1,=0xF4240
00000014 4288 CMP R0,R1
00000016 D3F8 BCC L_23 ; T=0x0000000A
91: os_sys_init (MainTask);//启动ARTX,此函数并不返回main()
00000018 4800 LDR R0,=MainTask?T ; MainTask?T
0000001A 2200 MOV R2,#0x0
0000001C 1C19 MOV R1,R3
0000001E F7FF BL os_sys_init_user?T ; T=0x0001 (1)
00000020 FFEF BL os_sys_init_user?T ; T=0x0001 (2)
00000022 ; SCOPE-END
ARM COMPILER V2.42, main 20/01/06 15:26:03 PAGE 6
92: }
00000022 B001 ADD R13,#0x4
00000024 BC08 POP {R3}
00000026 4718 BX R3
00000028 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 + -