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

📄 task.lst

📁 uCOS在LPC213X上的移植。适合ARM嵌入式系统初学者。
💻 LST
📖 第 1 页 / 共 4 页
字号:
 EXTERN CODE16 (OSTaskSuspend?T)
 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);   //获取打印机设备地址
 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);    //申请使用打印机
 0000000A  1C20      MOV         R0,R4 ; PrinterDeviceAddr
 0000000C  2100      MOV         R1,#0x0
 0000000E  F7FF      BL          OSRequestDevice?T  ; T=0x0001  (1)
ARM COMPILER V2.50a,  Task                                                                 25/08/06  23:22:56  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);   //显示任务启动
 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);   //释放打印机
 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);  //任务挂起
 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);  //申请打印机
 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);  //显示任务标题
 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                                                                 25/08/06  23:22:56  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);  //显示相关信息
 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);    //显示发送者的标题
 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);  //显示发送者的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  F7FF      BL          print_uint32?T  ; T=0x0001  (1)
 000000AC  FFA9      BL          print_uint32?T  ; T=0x0001  (2)
   63:      prints("",1);
 000000AE  4800      LDR         R0,=??S_1 ; ??S_1
 000000B0  2101      MOV         R1,#0x1
 000000B2  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000B4  FFA5      BL          prints?T  ; T=0x0001  (2)
   64:      prints("The message type is:",0);             //消息类型
 000000B6  4800      LDR         R0,=??S_6 ; ??S_6
 000000B8  2100      MOV         R1,#0x0
 000000BA  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000BC  FFA1      BL          prints?T  ; T=0x0001  (2)
   65:      print_uint32(OSCurrentPcb->Msg->MsgType);
 000000BE  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 000000C0  6800      LDR         R0,[R0,#0x0] ; OSCurrentPcb
 000000C2  6B00      LDR         R0,[R0,#0x30]
 000000C4  6800      LDR         R0,[R0,#0x0]
 000000C6  F7FF      BL          print_uint32?T  ; T=0x0001  (1)
 000000C8  FF9B      BL          print_uint32?T  ; T=0x0001  (2)
   66:      prints("",1);
 000000CA  4800      LDR         R0,=??S_1 ; ??S_1
 000000CC  2101      MOV         R1,#0x1
 000000CE  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000D0  FF97      BL          prints?T  ; T=0x0001  (2)
   67:      prints("The message value is",0);             //消息的值
 000000D2  4800      LDR         R0,=??S_7 ; ??S_7
 000000D4  2100      MOV         R1,#0x0
 000000D6  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000D8  FF93      BL          prints?T  ; T=0x0001  (2)
   68:      print_uint32(*(OSCurrentPcb->Msg->pMsg));
 000000DA  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 000000DC  6800      LDR         R0,[R0,#0x0] ; OSCurrentPcb
 000000DE  6B00      LDR         R0,[R0,#0x30]
 000000E0  68C0      LDR         R0,[R0,#0xC]
 000000E2  6800      LDR         R0,[R0,#0x0]
 000000E4  F7FF      BL          print_uint32?T  ; T=0x0001  (1)
 000000E6  FF8C      BL          print_uint32?T  ; T=0x0001  (2)
ARM COMPILER V2.50a,  Task                                                                 25/08/06  23:22:56  PAGE 8   

   69:      prints("",1);
 000000E8  4800      LDR         R0,=??S_1 ; ??S_1
 000000EA  2101      MOV         R1,#0x1
 000000EC  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000EE  FF88      BL          prints?T  ; T=0x0001  (2)
   70:      prints("",1);
 000000F0  4800      LDR         R0,=??S_1 ; ??S_1
 000000F2  2101      MOV         R1,#0x1
 000000F4  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000F6  FF84      BL          prints?T  ; T=0x0001  (2)
   72:      OSFreeDevice(PrinterDeviceAddr);  //释放打印机
 000000F8  1C20      MOV         R0,R4 ; PrinterDeviceAddr
 000000FA  F7FF      BL          OSFreeDevice?T  ; T=0x0001  (1)
 000000FC  FF81      BL          OSFreeDevice?T  ; T=0x0001  (2)
   74:      switch(*(OSCurrentPcb->Msg->pMsg))    //键值散转
 000000FE  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 00000100  6801      LDR         R1,[R0,#0x0] ; OSCurrentPcb
 00000102  6B08      LDR         R0,[R1,#0x30]
 00000104  68C0      LDR         R0,[R0,#0xC]
 00000106  6800      LDR         R0,[R0,#0x0]
 00000108  2802      CMP         R0,#0x2
 0000010A  D005      BEQ         L_9  ; T=0x00000118
 0000010C  2801      CMP         R0,#0x1
 0000010E  D106      BNE         L_6  ; T=0x0000011E
   76:        case KEY1: ON_LED1();break;    //如果是按键1按下,则点亮LED1
 00000110          L_7:
 00000110  4800      LDR         R2,=0x40000
 00000112  4800      LDR         R0,=0xE002801C
 00000114  6002      STR         R2,[R0,#0x0]
 00000116  E002      B           L_6  ; T=0x0000011E
   77:        case KEY2: OFF_LED1();break;   //如果是按键2按下,则熄灭LED1
 00000118          L_9:
 00000118  4800      LDR         R2,=0x40000
 0000011A  4800      LDR         R0,=0xE0028014
 0000011C  6002      STR         R2,[R0,#0x0]
   79:       }
 0000011E          L_6:
   80:      OSCurrentPcb->Msg=0;           //消息处理完毕
 0000011E  2000      MOV         R0,#0x0
 00000120  6308      STR         R0,[R1,#0x30]
   82:   }
 00000122  E78E      B           L_3  ; T=0x00000042
 00000124            ; SCOPE-END
   83: }
 00000124  BC10      POP         {R4}
 00000126  BC08      POP         {R3}
 00000128  4718      BX          R3
 0000012A          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);     //获取打印机设备地址
 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);                   //申请使用打印机
 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)
   99:  prints("",1);
 00000012  4800      LDR         R0,=??S_1 ; ??S_1
ARM COMPILER V2.50a,  Task                                                                 25/08/06  23:22:56  PAGE 9   

 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);  //显示任务启动
 0000001A  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 0000001C  6800      LDR         R0,[R0,#0x0] ; OSCurrentPcb
 0000001E  3034      ADD         R0,#0x34
 00000020  2100      MOV         R1,#0x0

⌨️ 快捷键说明

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