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

📄 rd_adt_queue.lis

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00C2           X8:
 00C2                   .dbline 137
 00C2                   .dbline 137
 00C2 7894              sei
 00C4                   .dbline 137
 00C4 0027              clr R16
 00C6 17C0              rjmp L9
 00C8           L13:
 00C8                   .dbline 137
 00C8 1B01              movw R2,R22
 00CA 6F5F              subi R22,255  ; offset = 1
 00CC 7F4F              sbci R23,255
 00CE F101              movw R30,R2
 00D0 EE0D              add R30,R14
 00D2 FF1D              adc R31,R15
 00D4 2080              ldd R2,z+0
 00D6 F901              movw R30,R18
 00D8 2082              std z+0,R2
 00DA                   .dbline 137
 00DA 4150              subi R20,1
 00DC 5040              sbci R21,0
 00DE                   .dbline 137
 00DE 6C15              cp R22,R12
 00E0 7D05              cpc R23,R13
 00E2 11F4              brne L15
 00E4           X9:
 00E4                   .dbline 137
 00E4                   .dbline 137
 00E4 6627              clr R22
 00E6 7727              clr R23
 00E8                   .dbline 137
 00E8           L15:
 00E8                   .dbline 137
 00E8 F801              movw R30,R16
 00EA 7583              std z+5,R23
 00EC 6483              std z+4,R22
 00EE                   .dbline 137
 00EE 5187              std z+9,R21
 00F0 4087              std z+8,R20
 00F2                   .dbline 137
 00F2                   .dbline 137
 00F2 AFBE              out 0x3f,R10
 00F4                   .dbline 137
 00F4                   .dbline 170
 00F4           ;     (
 00F4           ;         pBuffer = pQueue->pBuffer;
 00F4           ;         nSize = pQueue->nSize;
 00F4           ;         
 00F4           ;         if ((pBuffer == NULL) || (!nSize))
 00F4           ;         {
 00F4           ;             SEI();
 00F4           ;             return FALSE;                                   //缓冲区未分配空间
 00F4           ;         }
 00F4           ;         nTail = pQueue->nTail;
 00F4           ;         nHead = pQueue->nHead;
 00F4           ;         nCount = pQueue->nCount;
 00F4           ;         
 00F4           ;     
 00F4           ;         if ((nTail == nHead) && (nCount == 0))              //缓冲区为空
 00F4           ;         {
 00F4           ;             SEI();
 00F4           ;             return FALSE;
 00F4           ;         }
 00F4           ;         
 00F4           ;         (*pData) = pBuffer[nHead++];
 00F4           ;         
 00F4           ;         nCount--;
 00F4           ;         if (nHead == nSize)
 00F4           ;         {
 00F4           ;             nHead = 0;
 00F4           ;         }
 00F4           ;         
 00F4           ;         pQueue->nHead = nHead;
 00F4           ;         pQueue->nCount = nCount;
 00F4           ;     )
 00F4           ;     
 00F4           ;     return TRUE;
 00F4 01E0              ldi R16,1
 00F6                   .dbline -2
 00F6           L9:
 00F6                   .dbline 0 ; func end
 00F6 2296              adiw R28,2
 00F8 00C0              rjmp pop_xgsetF0FC
 00FA                   .dbsym r cflags0 10 c
 00FA                   .dbsym r pBuffer 14 pc
 00FA                   .dbsym r nHead1 22 i
 00FA                   .dbsym r nCount0 20 i
 00FA                   .dbsym r nHead0 22 i
 00FA                   .dbsym l nTail0 0 i
 00FA                   .dbsym r nSize0 12 i
 00FA                   .dbsym r pData 18 pc
 00FA                   .dbsym r pQueue 16 pS[AbstructDataTypeQueue]
 00FA                   .dbend
 00FA                   .dbfunc e ADT_Queue_Check_Empty _ADT_Queue_Check_Empty fc
 00FA           ;        cflags0 -> R10
 00FA           ;        pBuffer -> R12,R13
 00FA           ;         pQueue -> R16,R17
                        .even
 00FA           _ADT_Queue_Check_Empty::
 00FA 00D0              rcall push_xgset003C
 00FC                   .dbline -1
 00FC                   .dbline 180
 00FC           ; }
 00FC           ; 
 00FC           ; /***********************************************************
 00FC           ; *   函数说明:队列判空函数                                 *
 00FC           ; *   输入:    队列指针                                     *
 00FC           ; *   输出:    队列是否为空                                 *
 00FC           ; *   调用函数:无                                           *
 00FC           ; ***********************************************************/
 00FC           ; BOOL ADT_Queue_Check_Empty(ADT_QUEUE *pQueue)
 00FC           ; {
 00FC                   .dbline 183
 00FC           ;     uint8 *pBuffer;
 00FC           ; 
 00FC           ;     SAFE_CODE_PERFORMANCE
 00FC                   .dbline 183
 00FC AFB6              in R10,0x3f
 00FE                   .dbline 183
 00FE F894              cli
 0100                   .dbline 183
 0100 F801              movw R30,R16
 0102 C080              ldd R12,z+0
 0104 D180              ldd R13,z+1
 0106                   .dbline 183
 0106 CC20              tst R12
 0108 11F4              brne X10
 010A DD20              tst R13
 010C 31F0              breq L20
 010E           X10:
 010E 2280              ldd R2,z+2
 0110 3380              ldd R3,z+3
 0112 2220              tst R2
 0114 29F4              brne L18
 0116 3320              tst R3
 0118 19F4              brne L18
 011A           X11:
 011A           L20:
 011A                   .dbline 183
 011A                   .dbline 183
 011A 7894              sei
 011C                   .dbline 183
 011C 01E0              ldi R16,1
 011E 13C0              rjmp L17
 0120           L18:
 0120                   .dbline 183
 0120 F801              movw R30,R16
 0122 2480              ldd R2,z+4
 0124 3580              ldd R3,z+5
 0126 4680              ldd R4,z+6
 0128 5780              ldd R5,z+7
 012A 4214              cp R4,R2
 012C 5304              cpc R5,R3
 012E 49F4              brne L21
 0130           X12:
 0130 2084              ldd R2,z+8
 0132 3184              ldd R3,z+9
 0134 2220              tst R2
 0136 29F4              brne L21
 0138 3320              tst R3
 013A 19F4              brne L21
 013C           X13:
 013C                   .dbline 183
 013C                   .dbline 183
 013C 7894              sei
 013E                   .dbline 183
 013E 01E0              ldi R16,1
 0140 02C0              rjmp L17
 0142           L21:
 0142                   .dbline 183
 0142                   .dbline 183
 0142 AFBE              out 0x3f,R10
 0144                   .dbline 183
 0144                   .dbline 202
 0144           ;     (
 0144           ;         pBuffer = pQueue->pBuffer;
 0144           ;         
 0144           ;         if ((pBuffer == NULL) || (!(pQueue->nSize)))
 0144           ;         {
 0144           ;             SEI();
 0144           ;             return TRUE;                                    //缓冲区未分配空间
 0144           ;         }
 0144           ; 
 0144           ;     
 0144           ;         if (((pQueue->nTail) == (pQueue->nHead)) 
 0144           ;           && ((pQueue->nCount) == 0))                       //缓冲区为空
 0144           ;         {
 0144           ;             SEI();
 0144           ;             return TRUE;
 0144           ;         }
 0144           ;     )
 0144           ;     
 0144           ;     return FALSE;
 0144 0027              clr R16
 0146                   .dbline -2
 0146           L17:
 0146                   .dbline 0 ; func end
 0146 00C0              rjmp pop_xgset003C
 0148                   .dbsym r cflags0 10 c
 0148                   .dbsym r pBuffer 12 pc
 0148                   .dbsym r pQueue 16 pS[AbstructDataTypeQueue]
 0148                   .dbend
 0148                   .dbfunc e ADT_Queue_Peek_From_Buffer _ADT_Queue_Peek_From_Buffer fc
 0148           ;        cflags0 -> R10
 0148           ;        pBuffer -> R12,R13
 0148           ;        nCount0 -> R20,R21
 0148           ;         nHead0 -> R14,R15
 0148           ;         nTail0 -> R22,R23
 0148           ;         nSize0 -> R14,R15
 0148           ;          pData -> R18,R19
 0148           ;         pQueue -> R16,R17
                        .even
 0148           _ADT_Queue_Peek_From_Buffer::
 0148 00D0              rcall push_xgsetF0FC
 014A                   .dbline -1
 014A                   .dbline 212
 014A           ; }
 014A           ; 
 014A           ; /***********************************************************
 014A           ; *   函数说明:队列首个数据预览函数                         *
 014A           ; *   输入:    存放读取变量的空间指针                       *
 014A           ; *   输出:    队列是否为空                                 *
 014A           ; *   调用函数:无                                           *
 014A           ; ***********************************************************/
 014A           ; BOOL ADT_Queue_Peek_From_Buffer(ADT_QUEUE *pQueue,uint8 *pData)
 014A           ; {
 014A                   .dbline 219
 014A           ;     uint8 *pBuffer;
 014A           ;     uint   nSize;
 014A           ;     uint   nTail;
 014A           ;     uint   nHead;
 014A           ;     uint   nCount;
 014A           ;     
 014A           ;     SAFE_CODE_PERFORMANCE                                   //原子操作
 014A                   .dbline 219
 014A AFB6              in R10,0x3f
 014C                   .dbline 219
 014C F894              cli
 014E                   .dbline 219
 014E F801              movw R30,R16
 0150 C080              ldd R12,z+0
 0152 D180              ldd R13,z+1
 0154                   .dbline 219
 0154 E280              ldd R14,z+2
 0156 F380              ldd R15,z+3
 0158                   .dbline 219
 0158 CC20              tst R12
 015A 11F4              brne X14
 015C DD20              tst R13
 015E 21F0              breq L26
 0160           X14:
 0160 EE20              tst R14
 0162 29F4              brne L24
 0164 FF20              tst R15
 0166 19F4              brne L24
 0168           X15:
 0168           L26:
 0168                   .dbline 219
 0168                   .dbline 219
 0168 7894              sei
 016A                   .dbline 219
 016A 0027              clr R16
 016C 18C0              rjmp L23
 016E           L24:
 016E                   .dbline 219
 016E F801              movw R30,R16
 0170 6681              ldd R22,z+6
 0172 7781              ldd R23,z+7
 0174                   .dbline 219
 0174 E480              ldd R14,z+4
 0176 F580              ldd R15,z+5
 0178                   .dbline 219
 0178 4085              ldd R20,z+8
 017A 5185              ldd R21,z+9
 017C                   .dbline 219
 017C 6E15              cp R22,R14
 017E 7F05              cpc R23,R15
 0180 31F4              brne L27
 0182           X16:
 0182 4030              cpi R20,0
 0184 4507              cpc R20,R21
 0186 19F4              brne L27
 0188           X17:
 0188                   .dbline 219
 0188                   .dbline 219
 0188 7894              sei
 018A                   .dbline 219
 018A 0027              clr R16
 018C 08C0              rjmp L23
 018E           L27:
 018E                   .dbline 219
 018E F701              movw R30,R14
 0190 EC0D              add R30,R12
 0192 FD1D              adc R31,R13
 0194 2080              ldd R2,z+0
 0196 F901              movw R30,R18
 0198 2082              std z+0,R2
 019A                   .dbline 219
 019A                   .dbline 219
 019A AFBE              out 0x3f,R10
 019C                   .dbline 219
 019C                   .dbline 243
 019C           ;     (
 019C           ;         pBuffer = pQueue->pBuffer;
 019C           ;         nSize = pQueue->nSize;
 019C           ;         
 019C           ;         if ((pBuffer == NULL) || (!nSize))
 019C           ;         {
 019C           ;             SEI();
 019C           ;             return FALSE;                                   //缓冲区未分配空间
 019C           ;         }
 019C           ;         nTail = pQueue->nTail;
 019C           ;         nHead = pQueue->nHead;
 019C           ;         nCount = pQueue->nCount;
 019C           ;         
 019C           ;     
 019C           ;         if ((nTail == nHead) && (nCount == 0))              //缓冲区为空
 019C           ;         {
 019C           ;             SEI();
 019C           ;             return FALSE;
 019C           ;         }
 019C           ;         
 019C           ;         (*pData) = pBuffer[nHead];
 019C           ;     )
 019C           ;     
 019C           ;     return TRUE;
 019C 01E0              ldi R16,1
 019E                   .dbline -2
 019E           L23:
 019E                   .dbline 0 ; func end
 019E 00C0              rjmp pop_xgsetF0FC
 01A0                   .dbsym r cflags0 10 c
 01A0                   .dbsym r pBuffer 12 pc
 01A0                   .dbsym r nCount0 20 i
 01A0                   .dbsym r nHead0 14 i
 01A0                   .dbsym r nTail0 22 i
 01A0                   .dbsym r nSize0 14 i
 01A0                   .dbsym r pData 18 pc
 01A0                   .dbsym r pQueue 16 pS[AbstructDataTypeQueue]
 01A0                   .dbend
 01A0           ; }

⌨️ 快捷键说明

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