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

📄 task.lst

📁 arm7上的操作系统 任务按优先级调度
💻 LST
📖 第 1 页 / 共 4 页
字号:
 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,Task4! ',0x00
 00000019          ??S_10:
 00000019            DB          'HaHa,Task3! ',0x00
 00000026          ??S_9:
 00000026            DB          'Time out!',0x00
 00000030          ??S_8:
 00000030            DB          'I have not got a message in 1 second!',0x00
 00000056          ??S_7:
 00000056            DB          'The message value is',0x00
 0000006B          ??S_6:
 0000006B            DB          'The message type is:',0x00
 00000080          ??S_5:
 00000080            DB          'The sender's PID is: ',0x00
 00000096          ??S_4:
 00000096            DB          'Haha,I have got a message from: ',0x00
 000000B7          ??S_3:
 000000B7            DB          ':',0x00
 000000B9          ??S_2:
 000000B9            DB          ' Start.',0x00
 000000C1          ??S_1:
 000000C1            DB          0x00

*** CODE SEGMENT '?PR?Task1?T?Task':
   32: void Task1(void)
 00000000  B510      PUSH        {R4,LR}
   33: {
 00000002            ; SCOPE-START
   36:  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' ----
   37:  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                                                                 16/05/06  14:55:46  PAGE 6   

 00000010  FFF7      BL          OSRequestDevice?T  ; T=0x0001  (2)
   39:  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)
   40:  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)
   41:  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)
   43:  OSFreeDevice(PrinterDeviceAddr);   //释放打印机
 0000002E  1C20      MOV         R0,R4 ; PrinterDeviceAddr
 00000030  F7FF      BL          OSFreeDevice?T  ; T=0x0001  (1)
 00000032  FFE6      BL          OSFreeDevice?T  ; T=0x0001  (2)
   45:  EN_LED4();  //使能LED4
 00000034  220F      MOV         R2,#0xF
 00000036  4800      LDR         R0,=0xFFFFF40C
 00000038  6801      LDR         R1,[R0,#0x0]
 0000003A  4391      BIC         R1,R2
 0000003C  6001      STR         R1,[R0,#0x0]
 0000003E  4800      LDR         R2,=0x1000000
 00000040  4800      LDR         R0,=0xFFFFF450
 00000042  6801      LDR         R1,[R0,#0x0]
 00000044  4311      ORR         R1,R2
 00000046  6001      STR         R1,[R0,#0x0]
   47:  while(1)
 00000048          L_3:
   49:    OSTaskSuspend(OSCurrentPcb);  //任务挂起
 00000048  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 0000004A  6800      LDR         R0,[R0,#0x0] ; OSCurrentPcb
 0000004C  F7FF      BL          OSTaskSuspend?T  ; T=0x0001  (1)
 0000004E  FFD8      BL          OSTaskSuspend?T  ; T=0x0001  (2)
   50:    if(OSCurrentPcb->Msg)        //如果收到消息
 00000050  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 00000052  6800      LDR         R0,[R0,#0x0] ; OSCurrentPcb
 00000054  6B00      LDR         R0,[R0,#0x30]
 00000056  2800      CMP         R0,#0x0
 00000058  D0F6      BEQ         L_3  ; T=0x00000048
   52:      OSRequestDevice(PrinterDeviceAddr,0);  //申请打印机
 0000005A  1C20      MOV         R0,R4 ; PrinterDeviceAddr
 0000005C  2100      MOV         R1,#0x0
 0000005E  F7FF      BL          OSRequestDevice?T  ; T=0x0001  (1)
 00000060  FFCF      BL          OSRequestDevice?T  ; T=0x0001  (2)
   54:      prints("",1);
 00000062  4800      LDR         R0,=??S_1 ; ??S_1
 00000064  2101      MOV         R1,#0x1
 00000066  F7FF      BL          prints?T  ; T=0x0001  (1)
 00000068  FFCB      BL          prints?T  ; T=0x0001  (2)
   55:      prints("",1);
 0000006A  4800      LDR         R0,=??S_1 ; ??S_1
 0000006C  2101      MOV         R1,#0x1
 0000006E  F7FF      BL          prints?T  ; T=0x0001  (1)
 00000070  FFC7      BL          prints?T  ; T=0x0001  (2)
   56:      prints(OSCurrentPcb->Title,0);  //显示任务标题
 00000072  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 00000074  6800      LDR         R0,[R0,#0x0] ; OSCurrentPcb
 00000076  3034      ADD         R0,#0x34
 00000078  2100      MOV         R1,#0x0
ARM COMPILER V2.50a,  Task                                                                 16/05/06  14:55:46  PAGE 7   

 0000007A  F7FF      BL          prints?T  ; T=0x0001  (1)
 0000007C  FFC1      BL          prints?T  ; T=0x0001  (2)
   57:      prints(":",1);
 0000007E  4800      LDR         R0,=??S_3 ; ??S_3
 00000080  2101      MOV         R1,#0x1
 00000082  F7FF      BL          prints?T  ; T=0x0001  (1)
 00000084  FFBD      BL          prints?T  ; T=0x0001  (2)
   58:      prints("Haha,I have got a message from: ",0);  //显示相关信息
 00000086  4800      LDR         R0,=??S_4 ; ??S_4
 00000088  2100      MOV         R1,#0x0
 0000008A  F7FF      BL          prints?T  ; T=0x0001  (1)
 0000008C  FFB9      BL          prints?T  ; T=0x0001  (2)
   59:      prints(OSCurrentPcb->Msg->Sender->Title,1);    //显示发送者的标题
 0000008E  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 00000090  6800      LDR         R0,[R0,#0x0] ; OSCurrentPcb
 00000092  6B00      LDR         R0,[R0,#0x30]
 00000094  6880      LDR         R0,[R0,#0x8]
 00000096  3034      ADD         R0,#0x34
 00000098  2101      MOV         R1,#0x1
 0000009A  F7FF      BL          prints?T  ; T=0x0001  (1)
 0000009C  FFB1      BL          prints?T  ; T=0x0001  (2)
   60:      prints("The sender's PID is: ",0);
 0000009E  4800      LDR         R0,=??S_5 ; ??S_5
 000000A0  2100      MOV         R1,#0x0
 000000A2  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000A4  FFAD      BL          prints?T  ; T=0x0001  (2)
   61:      print_uint32(OSCurrentPcb->Msg->Sender->PID);  //显示发送者的PID
 000000A6  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 000000A8  6800      LDR         R0,[R0,#0x0] ; OSCurrentPcb
 000000AA  6B00      LDR         R0,[R0,#0x30]
 000000AC  6880      LDR         R0,[R0,#0x8]
 000000AE  6880      LDR         R0,[R0,#0x8]
 000000B0  F7FF      BL          print_uint32?T  ; T=0x0001  (1)
 000000B2  FFA6      BL          print_uint32?T  ; T=0x0001  (2)
   62:      prints("",1);
 000000B4  4800      LDR         R0,=??S_1 ; ??S_1
 000000B6  2101      MOV         R1,#0x1
 000000B8  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000BA  FFA2      BL          prints?T  ; T=0x0001  (2)
   63:      prints("The message type is:",0);             //消息类型
 000000BC  4800      LDR         R0,=??S_6 ; ??S_6
 000000BE  2100      MOV         R1,#0x0
 000000C0  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000C2  FF9E      BL          prints?T  ; T=0x0001  (2)
   64:      print_uint32(OSCurrentPcb->Msg->MsgType);
 000000C4  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 000000C6  6800      LDR         R0,[R0,#0x0] ; OSCurrentPcb
 000000C8  6B00      LDR         R0,[R0,#0x30]
 000000CA  6800      LDR         R0,[R0,#0x0]
 000000CC  F7FF      BL          print_uint32?T  ; T=0x0001  (1)
 000000CE  FF98      BL          print_uint32?T  ; T=0x0001  (2)
   65:      prints("",1);
 000000D0  4800      LDR         R0,=??S_1 ; ??S_1
 000000D2  2101      MOV         R1,#0x1
 000000D4  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000D6  FF94      BL          prints?T  ; T=0x0001  (2)
   66:      prints("The message value is",0);             //消息的值
 000000D8  4800      LDR         R0,=??S_7 ; ??S_7
 000000DA  2100      MOV         R1,#0x0
 000000DC  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000DE  FF90      BL          prints?T  ; T=0x0001  (2)
   67:      print_uint32(*(OSCurrentPcb->Msg->pMsg));
 000000E0  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 000000E2  6800      LDR         R0,[R0,#0x0] ; OSCurrentPcb
 000000E4  6B00      LDR         R0,[R0,#0x30]
 000000E6  68C0      LDR         R0,[R0,#0xC]
ARM COMPILER V2.50a,  Task                                                                 16/05/06  14:55:46  PAGE 8   

 000000E8  6800      LDR         R0,[R0,#0x0]
 000000EA  F7FF      BL          print_uint32?T  ; T=0x0001  (1)
 000000EC  FF89      BL          print_uint32?T  ; T=0x0001  (2)
   68:      prints("",1);
 000000EE  4800      LDR         R0,=??S_1 ; ??S_1
 000000F0  2101      MOV         R1,#0x1
 000000F2  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000F4  FF85      BL          prints?T  ; T=0x0001  (2)
   69:      prints("",1);
 000000F6  4800      LDR         R0,=??S_1 ; ??S_1
 000000F8  2101      MOV         R1,#0x1
 000000FA  F7FF      BL          prints?T  ; T=0x0001  (1)
 000000FC  FF81      BL          prints?T  ; T=0x0001  (2)
   71:      OSFreeDevice(PrinterDeviceAddr);  //释放打印机
 000000FE  1C20      MOV         R0,R4 ; PrinterDeviceAddr
 00000100  F7FF      BL          OSFreeDevice?T  ; T=0x0001  (1)
 00000102  FF7E      BL          OSFreeDevice?T  ; T=0x0001  (2)
   73:      switch(*(OSCurrentPcb->Msg->pMsg))    //键值散转
 00000104  4800      LDR         R0,=OSCurrentPcb ; OSCurrentPcb
 00000106  6801      LDR         R1,[R0,#0x0] ; OSCurrentPcb
 00000108  6B08      LDR         R0,[R1,#0x30]
 0000010A  68C0      LDR         R0,[R0,#0xC]
 0000010C  6800      LDR         R0,[R0,#0x0]
 0000010E  2802      CMP         R0,#0x2
 00000110  D005      BEQ         L_9  ; T=0x0000011E
 00000112  2801      CMP         R0,#0x1
 00000114  D106      BNE         L_6  ; T=0x00000124
   75:        case KEY1: ON_LED4();break;    //如果是按键1按下,则点亮LED4
 00000116          L_7:
 00000116  4800      LDR         R2,=0x10000
 00000118  4800      LDR         R0,=0xFFFFF458
 0000011A  6002      STR         R2,[R0,#0x0]
 0000011C  E002      B           L_6  ; T=0x00000124
   76:        case KEY2: OFF_LED4();break;   //如果是按键2按下,则熄灭LED4
 0000011E          L_9:
 0000011E  4800      LDR         R2,=0x10000
 00000120  4800      LDR         R0,=0xFFFFF454
 00000122  6002      STR         R2,[R0,#0x0]
   78:       }
 00000124          L_6:
   79:      OSCurrentPcb->Msg=0;           //消息处理完毕
 00000124  2000      MOV         R0,#0x0
 00000126  6308      STR         R0,[R1,#0x30]
   81:   }
 00000128  E78E      B           L_3  ; T=0x00000048
 0000012A            ; SCOPE-END
   82: }
 0000012A  BC10      POP         {R4}
 0000012C  BC08      POP         {R3}
 0000012E  4718      BX          R3
 00000130          ENDP ; 'Task1?T'


*** CODE SEGMENT '?PR?Task2?T?Task':
   91: void Task2(void)
 00000000  B510      PUSH        {R4,LR}
   92: {
 00000002            ; SCOPE-START
   95:  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' ----
   96:  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                                                                 16/05/06  14:55:46  PAGE 9   

 00000010  FFF7      BL          OSRequestDevice?T  ; T=0x0001  (2)
   98:  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)
   99:  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)
  100:  prints(" Start.",1);
 00000026  4800      LDR         R0,=??S_2 ; ??S_2

⌨️ 快捷键说明

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