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

📄 os_flag.txt

📁 一个电力系统谐波检测的程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 951] for uVision
; commandline ArmCC [--debug -c --asm --interleave -oos_flag.o --device=DARMP --apcs=interwork -O0 -IC:\Keil\ARM\INC\Philips uCosii\OS_FLAG.C]

                          ARM

                          AREA ||.text.7||, CODE, READONLY, ALIGN=2

                  OSFlagAccept PROC
;;;78     OS_FLAGS  OSFlagAccept (OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U wait_type, INT8U *err)
;;;79     {
000000  e92d47f0          PUSH     {r4-r10,lr}
000004  e1a04000          MOV      r4,r0
000008  e1a05001          MOV      r5,r1
00000c  e1a06002          MOV      r6,r2
000010  e1a07003          MOV      r7,r3
;;;80     #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
;;;81         OS_CPU_SR     cpu_sr;
;;;82     #endif
;;;83         OS_FLAGS      flags_cur;
;;;84         OS_FLAGS      flags_rdy;
;;;85         BOOLEAN       consume;
;;;86     
;;;87     
;;;88     #if OS_ARG_CHK_EN > 0
;;;89         if (pgrp == (OS_FLAG_GRP *)0) {                        /* Validate 'pgrp'                          */
000014  e3540000          CMP      r4,#0
000018  1a000004          BNE      |L1.48|
;;;90             *err = OS_FLAG_INVALID_PGRP;
00001c  e3a00096          MOV      r0,#0x96
000020  e5c70000          STRB     r0,[r7,#0]
;;;91             return ((OS_FLAGS)0);
000024  e3a00000          MOV      r0,#0
                  |L1.40|
000028  e8bd47f0          POP      {r4-r10,lr}
;;;92         }
;;;93         if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {          /* Validate event block type                */
;;;94             *err = OS_ERR_EVENT_TYPE;
;;;95             return ((OS_FLAGS)0);
;;;96         }
;;;97     #endif
;;;98         if (wait_type & OS_FLAG_CONSUME) {                     /* See if we need to consume the flags      */
;;;99             wait_type &= ~OS_FLAG_CONSUME;
;;;100            consume    = TRUE;
;;;101        } else {
;;;102            consume    = FALSE;
;;;103        }
;;;104    /*$PAGE*/
;;;105        *err = OS_NO_ERR;                                      /* Assume NO error until proven otherwise.  */
;;;106        OS_ENTER_CRITICAL();
;;;107        switch (wait_type) {
;;;108            case OS_FLAG_WAIT_SET_ALL:                         /* See if all required flags are set        */
;;;109                 flags_rdy = pgrp->OSFlagFlags & flags;        /* Extract only the bits we want            */
;;;110                 if (flags_rdy == flags) {                     /* Must match ALL the bits that we want     */
;;;111                     if (consume == TRUE) {                    /* See if we need to consume the flags      */
;;;112                         pgrp->OSFlagFlags &= ~flags_rdy;      /* Clear ONLY the flags that we wanted      */
;;;113                     }
;;;114                 } else {
;;;115                     *err  = OS_FLAG_ERR_NOT_RDY;
;;;116                 }
;;;117                 flags_cur = pgrp->OSFlagFlags;                /* Will return the state of the group       */
;;;118                 OS_EXIT_CRITICAL();
;;;119                 break;
;;;120    
;;;121            case OS_FLAG_WAIT_SET_ANY:
;;;122                 flags_rdy = pgrp->OSFlagFlags & flags;        /* Extract only the bits we want            */
;;;123                 if (flags_rdy != (OS_FLAGS)0) {               /* See if any flag set                      */
;;;124                     if (consume == TRUE) {                    /* See if we need to consume the flags      */
;;;125                         pgrp->OSFlagFlags &= ~flags_rdy;      /* Clear ONLY the flags that we got         */
;;;126                     }
;;;127                 } else {
;;;128                     *err  = OS_FLAG_ERR_NOT_RDY;
;;;129                 }
;;;130                 flags_cur = pgrp->OSFlagFlags;                /* Will return the state of the group       */
;;;131                 OS_EXIT_CRITICAL();
;;;132                 break;
;;;133    
;;;134    #if OS_FLAG_WAIT_CLR_EN > 0
;;;135            case OS_FLAG_WAIT_CLR_ALL:                         /* See if all required flags are cleared    */
;;;136                 flags_rdy = ~pgrp->OSFlagFlags & flags;       /* Extract only the bits we want            */
;;;137                 if (flags_rdy == flags) {                     /* Must match ALL the bits that we want     */
;;;138                     if (consume == TRUE) {                    /* See if we need to consume the flags      */
;;;139                         pgrp->OSFlagFlags |= flags_rdy;       /* Set ONLY the flags that we wanted        */
;;;140                     }
;;;141                 } else {
;;;142                     *err  = OS_FLAG_ERR_NOT_RDY;
;;;143                 }
;;;144                 flags_cur = pgrp->OSFlagFlags;                /* Will return the state of the group       */
;;;145                 OS_EXIT_CRITICAL();
;;;146                 break;
;;;147    
;;;148            case OS_FLAG_WAIT_CLR_ANY:
;;;149                 flags_rdy = ~pgrp->OSFlagFlags & flags;       /* Extract only the bits we want            */
;;;150                 if (flags_rdy != (OS_FLAGS)0) {               /* See if any flag cleared                  */
;;;151                     if (consume == TRUE) {                    /* See if we need to consume the flags      */
;;;152                         pgrp->OSFlagFlags |= flags_rdy;       /* Set ONLY the flags that we got           */
;;;153                     }
;;;154                 } else {
;;;155                     *err  = OS_FLAG_ERR_NOT_RDY;
;;;156                 }
;;;157                 flags_cur = pgrp->OSFlagFlags;                /* Will return the state of the group       */
;;;158                 OS_EXIT_CRITICAL();
;;;159                 break;
;;;160    #endif
;;;161    
;;;162            default:
;;;163                 OS_EXIT_CRITICAL();
;;;164                 flags_cur = (OS_FLAGS)0;
;;;165                 *err      = OS_FLAG_ERR_WAIT_TYPE;
;;;166                 break;
;;;167        }
;;;168        return (flags_cur);
;;;169    }
00002c  e12fff1e          BX       lr
                  |L1.48|
000030  e5d40000          LDRB     r0,[r4,#0]            ;93
000034  e3500005          CMP      r0,#5                 ;93
000038  0a000003          BEQ      |L1.76|               ;93
00003c  e3a00001          MOV      r0,#1                 ;94
000040  e5c70000          STRB     r0,[r7,#0]            ;94
000044  e3a00000          MOV      r0,#0                 ;95
000048  eafffff6          B        |L1.40|               ;95
                  |L1.76|
00004c  e3160080          TST      r6,#0x80              ;98
000050  0a000002          BEQ      |L1.96|               ;98
000054  e3c66080          BIC      r6,r6,#0x80           ;99
000058  e3a0a001          MOV      r10,#1                ;100
00005c  ea000000          B        |L1.100|              ;100
                  |L1.96|
000060  e3a0a000          MOV      r10,#0                ;102
                  |L1.100|
000064  e3a00000          MOV      r0,#0                 ;105
000068  e5c70000          STRB     r0,[r7,#0]            ;105
00006c  ef000002          SVC      0x2  ; formerly SWI   ;106
000070  e3560000          CMP      r6,#0                 ;107
000074  0a000026          BEQ      |L1.276|              ;107
000078  e3560001          CMP      r6,#1                 ;107
00007c  0a000036          BEQ      |L1.348|              ;107
000080  e3560002          CMP      r6,#2                 ;107
000084  0a000002          BEQ      |L1.148|              ;107
000088  e3560003          CMP      r6,#3                 ;107
00008c  1a000044          BNE      |L1.420|              ;107
000090  ea00000f          B        |L1.212|              ;107
                  |L1.148|
000094  e1a00000          MOV      r0,r0                 ;108
000098  e1d400b8          LDRH     r0,[r4,#8]            ;109
00009c  e0008005          AND      r8,r0,r5              ;109
0000a0  e1580005          CMP      r8,r5                 ;110
0000a4  1a000005          BNE      |L1.192|              ;110
0000a8  e35a0001          CMP      r10,#1                ;111
0000ac  1a000005          BNE      |L1.200|              ;111
0000b0  e1d400b8          LDRH     r0,[r4,#8]            ;112
0000b4  e1c00008          BIC      r0,r0,r8              ;112
0000b8  e1c400b8          STRH     r0,[r4,#8]            ;112
0000bc  ea000001          B        |L1.200|              ;112
                  |L1.192|
0000c0  e3a00098          MOV      r0,#0x98              ;115
0000c4  e5c70000          STRB     r0,[r7,#0]            ;115
                  |L1.200|
0000c8  e1d490b8          LDRH     r9,[r4,#8]            ;117
0000cc  ef000003          SVC      0x3  ; formerly SWI   ;118
0000d0  ea000039          B        |L1.444|              ;119
                  |L1.212|
0000d4  e1a00000          MOV      r0,r0                 ;121
0000d8  e1d400b8          LDRH     r0,[r4,#8]            ;122
0000dc  e0008005          AND      r8,r0,r5              ;122
0000e0  e3580000          CMP      r8,#0                 ;123
0000e4  0a000005          BEQ      |L1.256|              ;123
0000e8  e35a0001          CMP      r10,#1                ;124
0000ec  1a000005          BNE      |L1.264|              ;124
0000f0  e1d400b8          LDRH     r0,[r4,#8]            ;125
0000f4  e1c00008          BIC      r0,r0,r8              ;125
0000f8  e1c400b8          STRH     r0,[r4,#8]            ;125
0000fc  ea000001          B        |L1.264|              ;125
                  |L1.256|
000100  e3a00098          MOV      r0,#0x98              ;128
000104  e5c70000          STRB     r0,[r7,#0]            ;128
                  |L1.264|
000108  e1d490b8          LDRH     r9,[r4,#8]            ;130
00010c  ef000003          SVC      0x3  ; formerly SWI   ;131
000110  ea000029          B        |L1.444|              ;132
                  |L1.276|
000114  e1a00000          MOV      r0,r0                 ;135
000118  e1d400b8          LDRH     r0,[r4,#8]            ;136
00011c  e1c50000          BIC      r0,r5,r0              ;136
000120  e1a08800          LSL      r8,r0,#16             ;136
000124  e1a08828          LSR      r8,r8,#16             ;136
000128  e1580005          CMP      r8,r5                 ;137
00012c  1a000005          BNE      |L1.328|              ;137
000130  e35a0001          CMP      r10,#1                ;138
000134  1a000005          BNE      |L1.336|              ;138
000138  e1d400b8          LDRH     r0,[r4,#8]            ;139
00013c  e1800008          ORR      r0,r0,r8              ;139
000140  e1c400b8          STRH     r0,[r4,#8]            ;139
000144  ea000001          B        |L1.336|              ;139
                  |L1.328|
000148  e3a00098          MOV      r0,#0x98              ;142
00014c  e5c70000          STRB     r0,[r7,#0]            ;142
                  |L1.336|
000150  e1d490b8          LDRH     r9,[r4,#8]            ;144
000154  ef000003          SVC      0x3  ; formerly SWI   ;145
000158  ea000017          B        |L1.444|              ;146
                  |L1.348|
00015c  e1a00000          MOV      r0,r0                 ;148
000160  e1d400b8          LDRH     r0,[r4,#8]            ;149
000164  e1c50000          BIC      r0,r5,r0              ;149
000168  e1a08800          LSL      r8,r0,#16             ;149
00016c  e1a08828          LSR      r8,r8,#16             ;149
000170  e3580000          CMP      r8,#0                 ;150
000174  0a000005          BEQ      |L1.400|              ;150
000178  e35a0001          CMP      r10,#1                ;151
00017c  1a000005          BNE      |L1.408|              ;151
000180  e1d400b8          LDRH     r0,[r4,#8]            ;152
000184  e1800008          ORR      r0,r0,r8              ;152
000188  e1c400b8          STRH     r0,[r4,#8]            ;152
00018c  ea000001          B        |L1.408|              ;152
                  |L1.400|
000190  e3a00098          MOV      r0,#0x98              ;155
000194  e5c70000          STRB     r0,[r7,#0]            ;155
                  |L1.408|
000198  e1d490b8          LDRH     r9,[r4,#8]            ;157
00019c  ef000003          SVC      0x3  ; formerly SWI   ;158
0001a0  ea000005          B        |L1.444|              ;159
                  |L1.420|
0001a4  e1a00000          MOV      r0,r0                 ;162
0001a8  ef000003          SVC      0x3  ; formerly SWI   ;163
0001ac  e3a09000          MOV      r9,#0                 ;164
0001b0  e3a00097          MOV      r0,#0x97              ;165
0001b4  e5c70000          STRB     r0,[r7,#0]            ;165
0001b8  e1a00000          MOV      r0,r0                 ;166
                  |L1.444|
0001bc  e1a00000          MOV      r0,r0                 ;119
0001c0  e1a00009          MOV      r0,r9                 ;168
0001c4  eaffff97          B        |L1.40|               ;168
                          ENDP

⌨️ 快捷键说明

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