?? task.lst
字號:
EXTERN CODE16 (OSTaskCreat?T)
EXTERN CODE16 (OSSendMsg?T)
EXTERN CODE16 (OSGetDeviceAddr?T)
EXTERN CODE16 (OSRequestDevice?T)
EXTERN CODE16 (OSFreeDevice?T)
EXTERN CODE16 (prints?T)
EXTERN CODE16 (print_uint32?T)
EXTERN DATA (Key)
EXTERN CODE16 (ScanKey?T)
*** PUBLICS:
PUBLIC Task1?T
PUBLIC Task2?T
PUBLIC Task3?T
PUBLIC Task4?T
PUBLIC Task5?T
*** DATA SEGMENT '?CON?Task':
00000000 ??S_13:
00000000 DB 'Task2',0x00
00000006 ??S_12:
00000006 DB 'Task1',0x00
0000000C ??S_11:
0000000C DB 'HaHa,Running in Task4! ',0x00
00000024 ??S_10:
00000024 DB 'HaHa,Running in Task3! ',0x00
0000003C ??S_9:
0000003C DB 'Time out!',0x00
00000046 ??S_8:
00000046 DB 'I have not got a message in 1 second!',0x00
0000006C ??S_7:
0000006C DB 'The message value is',0x00
00000081 ??S_6:
00000081 DB 'The message type is:',0x00
00000096 ??S_5:
00000096 DB 'The sender's PID is: ',0x00
000000AC ??S_4:
000000AC DB 'Haha,I have got a message from: ',0x00
000000CD ??S_3:
000000CD DB ':',0x00
000000CF ??S_2:
000000CF DB ' Start..........................',0x00
000000F0 ??S_1:
000000F0 DB 0x00
*** CODE SEGMENT '?PR?Task1?T?Task':
33: void Task1(void)
00000000 B510 PUSH {R4,LR}
34: {
00000002 ; SCOPE-START
37: PrinterDeviceAddr=OSGetDeviceAddr(OS_PRINTER_DEVICE_ID); //獲取打印機(jī)設(shè)備地址
00000002 2001 MOV R0,#0x1
00000004 F7FF BL OSGetDeviceAddr?T ; T=0x0001 (1)
00000006 FFFC BL OSGetDeviceAddr?T ; T=0x0001 (2)
00000008 1C04 MOV R4,R0 ; PrinterDeviceAddr
0000000A ---- Variable 'PrinterDeviceAddr' assigned to Register 'R4' ----
38: OSRequestDevice(PrinterDeviceAddr,0); //申請使用打印機(jī)
0000000A 1C20 MOV R0,R4 ; PrinterDeviceAddr
0000000C 2100 MOV R1,#0x0
0000000E F7FF BL OSRequestDevice?T ; T=0x0001 (1)
ARM COMPILER V2.50a, Task 28/08/06 09:18:55 PAGE 6
00000010 FFF7 BL OSRequestDevice?T ; T=0x0001 (2)
40: prints("",1);
00000012 4800 LDR R0,=??S_1 ; ??S_1
00000014 2101 MOV R1,#0x1
00000016 F7FF BL prints?T ; T=0x0001 (1)
00000018 FFF3 BL prints?T ; T=0x0001 (2)
41: prints(OSCurrentPcb->Title,0); //顯示任務(wù)啟動
0000001A 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
0000001C 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
0000001E 3034 ADD R0,#0x34
00000020 2100 MOV R1,#0x0
00000022 F7FF BL prints?T ; T=0x0001 (1)
00000024 FFED BL prints?T ; T=0x0001 (2)
42: prints(" Start..........................",1);
00000026 4800 LDR R0,=??S_2 ; ??S_2
00000028 2101 MOV R1,#0x1
0000002A F7FF BL prints?T ; T=0x0001 (1)
0000002C FFE9 BL prints?T ; T=0x0001 (2)
44: OSFreeDevice(PrinterDeviceAddr); //釋放打印機(jī)
0000002E 1C20 MOV R0,R4 ; PrinterDeviceAddr
00000030 F7FF BL OSFreeDevice?T ; T=0x0001 (1)
00000032 FFE6 BL OSFreeDevice?T ; T=0x0001 (2)
46: EN_LED1(); //使能LED1
00000034 4800 LDR R1,=0x40000
00000036 4800 LDR R0,=0xE0028018
00000038 6802 LDR R2,[R0,#0x0]
0000003A 430A ORR R2,R1
0000003C 6002 STR R2,[R0,#0x0]
0000003E 4800 LDR R0,=0xE0028014
00000040 6001 STR R1,[R0,#0x0]
48: while(1)
00000042 L_3:
50: OSTaskSuspend(OSCurrentPcb); //任務(wù)掛起
00000042 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
00000044 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
00000046 F7FF BL OSTaskSuspend?T ; T=0x0001 (1)
00000048 FFDB BL OSTaskSuspend?T ; T=0x0001 (2)
51: if(OSCurrentPcb->Msg) //如果收到消息
0000004A 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
0000004C 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
0000004E 6B00 LDR R0,[R0,#0x30]
00000050 2800 CMP R0,#0x0
00000052 D0F6 BEQ L_3 ; T=0x00000042
53: OSRequestDevice(PrinterDeviceAddr,0); //申請打印機(jī)
00000054 1C20 MOV R0,R4 ; PrinterDeviceAddr
00000056 2100 MOV R1,#0x0
00000058 F7FF BL OSRequestDevice?T ; T=0x0001 (1)
0000005A FFD2 BL OSRequestDevice?T ; T=0x0001 (2)
55: prints("",1);
0000005C 4800 LDR R0,=??S_1 ; ??S_1
0000005E 2101 MOV R1,#0x1
00000060 F7FF BL prints?T ; T=0x0001 (1)
00000062 FFCE BL prints?T ; T=0x0001 (2)
56: prints("",1);
00000064 4800 LDR R0,=??S_1 ; ??S_1
00000066 2101 MOV R1,#0x1
00000068 F7FF BL prints?T ; T=0x0001 (1)
0000006A FFCA BL prints?T ; T=0x0001 (2)
57: prints(OSCurrentPcb->Title,0); //顯示任務(wù)標(biāo)題
0000006C 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
0000006E 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
00000070 3034 ADD R0,#0x34
00000072 2100 MOV R1,#0x0
00000074 F7FF BL prints?T ; T=0x0001 (1)
00000076 FFC4 BL prints?T ; T=0x0001 (2)
58: prints(":",1);
ARM COMPILER V2.50a, Task 28/08/06 09:18:55 PAGE 7
00000078 4800 LDR R0,=??S_3 ; ??S_3
0000007A 2101 MOV R1,#0x1
0000007C F7FF BL prints?T ; T=0x0001 (1)
0000007E FFC0 BL prints?T ; T=0x0001 (2)
59: prints("Haha,I have got a message from: ",0); //顯示相關(guān)信息
00000080 4800 LDR R0,=??S_4 ; ??S_4
00000082 2100 MOV R1,#0x0
00000084 F7FF BL prints?T ; T=0x0001 (1)
00000086 FFBC BL prints?T ; T=0x0001 (2)
60: prints(OSCurrentPcb->Msg->Sender->Title,1); //顯示發(fā)送者的標(biāo)題
00000088 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
0000008A 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
0000008C 6B00 LDR R0,[R0,#0x30]
0000008E 6880 LDR R0,[R0,#0x8]
00000090 3034 ADD R0,#0x34
00000092 2101 MOV R1,#0x1
00000094 F7FF BL prints?T ; T=0x0001 (1)
00000096 FFB4 BL prints?T ; T=0x0001 (2)
61: prints("The sender's PID is: ",0);
00000098 4800 LDR R0,=??S_5 ; ??S_5
0000009A 2100 MOV R1,#0x0
0000009C F7FF BL prints?T ; T=0x0001 (1)
0000009E FFB0 BL prints?T ; T=0x0001 (2)
62: print_uint32(OSCurrentPcb->Msg->Sender->PID-0x40000000); //顯示發(fā)送者的PID
000000A0 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
000000A2 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
000000A4 6B00 LDR R0,[R0,#0x30]
000000A6 6880 LDR R0,[R0,#0x8]
000000A8 6880 LDR R0,[R0,#0x8]
000000AA 4800 LDR R1,=0x40000000
000000AC 1A40 SUB R0,R1
000000AE F7FF BL print_uint32?T ; T=0x0001 (1)
000000B0 FFA7 BL print_uint32?T ; T=0x0001 (2)
63: prints("",1);
000000B2 4800 LDR R0,=??S_1 ; ??S_1
000000B4 2101 MOV R1,#0x1
000000B6 F7FF BL prints?T ; T=0x0001 (1)
000000B8 FFA3 BL prints?T ; T=0x0001 (2)
64: prints("The message type is:",0); //消息類型
000000BA 4800 LDR R0,=??S_6 ; ??S_6
000000BC 2100 MOV R1,#0x0
000000BE F7FF BL prints?T ; T=0x0001 (1)
000000C0 FF9F BL prints?T ; T=0x0001 (2)
65: print_uint32(OSCurrentPcb->Msg->MsgType);
000000C2 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
000000C4 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
000000C6 6B00 LDR R0,[R0,#0x30]
000000C8 6800 LDR R0,[R0,#0x0]
000000CA F7FF BL print_uint32?T ; T=0x0001 (1)
000000CC FF99 BL print_uint32?T ; T=0x0001 (2)
66: prints("",1);
000000CE 4800 LDR R0,=??S_1 ; ??S_1
000000D0 2101 MOV R1,#0x1
000000D2 F7FF BL prints?T ; T=0x0001 (1)
000000D4 FF95 BL prints?T ; T=0x0001 (2)
67: prints("The message value is",0); //消息的值
000000D6 4800 LDR R0,=??S_7 ; ??S_7
000000D8 2100 MOV R1,#0x0
000000DA F7FF BL prints?T ; T=0x0001 (1)
000000DC FF91 BL prints?T ; T=0x0001 (2)
68: print_uint32(*(OSCurrentPcb->Msg->pMsg));
000000DE 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
000000E0 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
000000E2 6B00 LDR R0,[R0,#0x30]
000000E4 68C0 LDR R0,[R0,#0xC]
000000E6 6800 LDR R0,[R0,#0x0]
ARM COMPILER V2.50a, Task 28/08/06 09:18:55 PAGE 8
000000E8 F7FF BL print_uint32?T ; T=0x0001 (1)
000000EA FF8A BL print_uint32?T ; T=0x0001 (2)
69: prints("",1);
000000EC 4800 LDR R0,=??S_1 ; ??S_1
000000EE 2101 MOV R1,#0x1
000000F0 F7FF BL prints?T ; T=0x0001 (1)
000000F2 FF86 BL prints?T ; T=0x0001 (2)
70: prints("",1);
000000F4 4800 LDR R0,=??S_1 ; ??S_1
000000F6 2101 MOV R1,#0x1
000000F8 F7FF BL prints?T ; T=0x0001 (1)
000000FA FF82 BL prints?T ; T=0x0001 (2)
72: OSFreeDevice(PrinterDeviceAddr); //釋放打印機(jī)
000000FC 1C20 MOV R0,R4 ; PrinterDeviceAddr
000000FE F7FF BL OSFreeDevice?T ; T=0x0001 (1)
00000100 FF7F BL OSFreeDevice?T ; T=0x0001 (2)
74: switch(*(OSCurrentPcb->Msg->pMsg)) //鍵值散轉(zhuǎn)
00000102 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
00000104 6801 LDR R1,[R0,#0x0] ; OSCurrentPcb
00000106 6B08 LDR R0,[R1,#0x30]
00000108 68C0 LDR R0,[R0,#0xC]
0000010A 6800 LDR R0,[R0,#0x0]
0000010C 2802 CMP R0,#0x2
0000010E D005 BEQ L_9 ; T=0x0000011C
00000110 2801 CMP R0,#0x1
00000112 D106 BNE L_6 ; T=0x00000122
76: case KEY1: ON_LED1();break; //如果是按鍵1按下,則點(diǎn)亮LED1
00000114 L_7:
00000114 4800 LDR R2,=0x40000
00000116 4800 LDR R0,=0xE002801C
00000118 6002 STR R2,[R0,#0x0]
0000011A E002 B L_6 ; T=0x00000122
77: case KEY2: OFF_LED1();break; //如果是按鍵2按下,則熄滅LED1
0000011C L_9:
0000011C 4800 LDR R2,=0x40000
0000011E 4800 LDR R0,=0xE0028014
00000120 6002 STR R2,[R0,#0x0]
79: }
00000122 L_6:
80: OSCurrentPcb->Msg=0; //消息處理完畢
00000122 2000 MOV R0,#0x0
00000124 6308 STR R0,[R1,#0x30]
82: }
00000126 E78C B L_3 ; T=0x00000042
00000128 ; SCOPE-END
83: }
00000128 BC10 POP {R4}
0000012A BC08 POP {R3}
0000012C 4718 BX R3
0000012E ENDP ; 'Task1?T'
*** CODE SEGMENT '?PR?Task2?T?Task':
92: void Task2(void)
00000000 B510 PUSH {R4,LR}
93: {
00000002 ; SCOPE-START
96: PrinterDeviceAddr=OSGetDeviceAddr(OS_PRINTER_DEVICE_ID); //獲取打印機(jī)設(shè)備地址
00000002 2001 MOV R0,#0x1
00000004 F7FF BL OSGetDeviceAddr?T ; T=0x0001 (1)
00000006 FFFC BL OSGetDeviceAddr?T ; T=0x0001 (2)
00000008 1C04 MOV R4,R0 ; PrinterDeviceAddr
0000000A ---- Variable 'PrinterDeviceAddr' assigned to Register 'R4' ----
97: OSRequestDevice(PrinterDeviceAddr,0); //申請使用打印機(jī)
0000000A 1C20 MOV R0,R4 ; PrinterDeviceAddr
0000000C 2100 MOV R1,#0x0
0000000E F7FF BL OSRequestDevice?T ; T=0x0001 (1)
00000010 FFF7 BL OSRequestDevice?T ; T=0x0001 (2)
ARM COMPILER V2.50a, Task 28/08/06 09:18:55 PAGE 9
99: prints("",1);
00000012 4800 LDR R0,=??S_1 ; ??S_1
00000014 2101 MOV R1,#0x1
00000016 F7FF BL prints?T ; T=0x0001 (1)
00000018 FFF3 BL prints?T ; T=0x0001 (2)
100: prints(OSCurrentPcb->Title,0); //顯示任務(wù)啟動
0000001A 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
0000001C 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
0000001E 3034 ADD R0,#0x34
00000020 2100 MOV R1,#0x0
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -