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

📄 rd_adt_queue.lis

📁 LCD1602键盘显示模块实例
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00B4 0027              clr R16
 00B6 17C0              xjmp L9
 00B8           L13:
 00B8                   .dbline 135
 00B8 B701              movw R22,R14
 00BA 6F5F              subi R22,255  ; offset = 1
 00BC 7F4F              sbci R23,255
 00BE F701              movw R30,R14
 00C0 EC0D              add R30,R12
 00C2 FD1D              adc R31,R13
 00C4 2080              ldd R2,z+0
 00C6 F901              movw R30,R18
 00C8 2082              std z+0,R2
 00CA                   .dbline 135
 00CA 4150              subi R20,1
 00CC 5040              sbci R21,0
 00CE                   .dbline 135
 00CE 6A15              cp R22,R10
 00D0 7B05              cpc R23,R11
 00D2 11F4              brne L15
 00D4           X9:
 00D4                   .dbline 135
 00D4                   .dbline 135
 00D4 6627              clr R22
 00D6 7727              clr R23
 00D8                   .dbline 135
 00D8           L15:
 00D8                   .dbline 135
 00D8 F801              movw R30,R16
 00DA 7583              std z+5,R23
 00DC 6483              std z+4,R22
 00DE                   .dbline 135
 00DE 5187              std z+9,R21
 00E0 4087              std z+8,R20
 00E2                   .dbline 135
 00E2                   .dbline 135
 00E2 7894              sei
 00E4                   .dbline 168
 00E4           ;     (
 00E4           ;         pBuffer = pQueue->pBuffer;
 00E4           ;         nSize = pQueue->nSize;
 00E4           ;         
 00E4           ;         if ((pBuffer == NULL) || (!nSize))
 00E4           ;         {
 00E4           ;             SEI();
 00E4           ;             return FALSE;                                   //缓冲区未分配空间
 00E4           ;         }
 00E4           ;         nTail = pQueue->nTail;
 00E4           ;         nHead = pQueue->nHead;
 00E4           ;         nCount = pQueue->nCount;
 00E4           ;         
 00E4           ;     
 00E4           ;         if ((nTail == nHead) && (nCount == 0))              //缓冲区为空
 00E4           ;         {
 00E4           ;             SEI();
 00E4           ;             return FALSE;
 00E4           ;         }
 00E4           ;         
 00E4           ;         (*pData) = pBuffer[nHead++];
 00E4           ;         
 00E4           ;         nCount--;
 00E4           ;         if (nHead == nSize)
 00E4           ;         {
 00E4           ;             nHead = 0;
 00E4           ;         }
 00E4           ;         
 00E4           ;         pQueue->nHead = nHead;
 00E4           ;         pQueue->nCount = nCount;
 00E4           ;     )
 00E4           ;     
 00E4           ;     return TRUE;
 00E4 01E0              ldi R16,1
 00E6                   .dbline -2
 00E6           L9:
 00E6                   .dbline 0 ; func end
 00E6 0C940000          xjmp pop_xgsetF0FC
 00EA                   .dbsym r pBuffer 12 pc
 00EA                   .dbsym r nHead1 22 i
 00EA                   .dbsym r nCount0 20 i
 00EA                   .dbsym r nHead0 14 i
 00EA                   .dbsym r nTail0 22 i
 00EA                   .dbsym r nSize0 10 i
 00EA                   .dbsym r pData 18 pc
 00EA                   .dbsym r pQueue 16 pS[AbstructDataTypeQueue]
 00EA                   .dbend
 00EA                   .dbfunc e ADT_Queue_Check_Empty _ADT_Queue_Check_Empty fc
 00EA           ;        pBuffer -> R10,R11
 00EA           ;         pQueue -> R16,R17
                        .even
 00EA           _ADT_Queue_Check_Empty::
 00EA AA92              st -y,R10
 00EC BA92              st -y,R11
 00EE                   .dbline -1
 00EE                   .dbline 178
 00EE           ; }
 00EE           ; 
 00EE           ; /***********************************************************
 00EE           ; *   函数说明:队列判空函数                                 *
 00EE           ; *   输入:    队列指针                                     *
 00EE           ; *   输出:    队列是否为空                                 *
 00EE           ; *   调用函数:无                                           *
 00EE           ; ***********************************************************/
 00EE           ; BOOL ADT_Queue_Check_Empty(ADT_QUEUE *pQueue)
 00EE           ; {
 00EE                   .dbline 181
 00EE           ;     uint8 *pBuffer;
 00EE           ; 
 00EE           ;     SAFE_CODE_PERFORMANCE
 00EE F894              cli
 00F0                   .dbline 181
 00F0 F801              movw R30,R16
 00F2 A080              ldd R10,z+0
 00F4 B180              ldd R11,z+1
 00F6                   .dbline 181
 00F6 AA20              tst R10
 00F8 11F4              brne X10
 00FA BB20              tst R11
 00FC 31F0              breq L20
 00FE           X10:
 00FE 2280              ldd R2,z+2
 0100 3380              ldd R3,z+3
 0102 2220              tst R2
 0104 29F4              brne L18
 0106 3320              tst R3
 0108 19F4              brne L18
 010A           X11:
 010A           L20:
 010A                   .dbline 181
 010A                   .dbline 181
 010A 7894              sei
 010C                   .dbline 181
 010C 01E0              ldi R16,1
 010E 13C0              xjmp L17
 0110           L18:
 0110                   .dbline 181
 0110 F801              movw R30,R16
 0112 2480              ldd R2,z+4
 0114 3580              ldd R3,z+5
 0116 4680              ldd R4,z+6
 0118 5780              ldd R5,z+7
 011A 4214              cp R4,R2
 011C 5304              cpc R5,R3
 011E 49F4              brne L21
 0120           X12:
 0120 2084              ldd R2,z+8
 0122 3184              ldd R3,z+9
 0124 2220              tst R2
 0126 29F4              brne L21
 0128 3320              tst R3
 012A 19F4              brne L21
 012C           X13:
 012C                   .dbline 181
 012C                   .dbline 181
 012C 7894              sei
 012E                   .dbline 181
 012E 01E0              ldi R16,1
 0130 02C0              xjmp L17
 0132           L21:
 0132                   .dbline 181
 0132                   .dbline 181
 0132 7894              sei
 0134                   .dbline 200
 0134           ;     (
 0134           ;         pBuffer = pQueue->pBuffer;
 0134           ;         
 0134           ;         if ((pBuffer == NULL) || (!(pQueue->nSize)))
 0134           ;         {
 0134           ;             SEI();
 0134           ;             return TRUE;                                    //缓冲区未分配空间
 0134           ;         }
 0134           ; 
 0134           ;     
 0134           ;         if (((pQueue->nTail) == (pQueue->nHead)) 
 0134           ;           && ((pQueue->nCount) == 0))                       //缓冲区为空
 0134           ;         {
 0134           ;             SEI();
 0134           ;             return TRUE;
 0134           ;         }
 0134           ;     )
 0134           ;     
 0134           ;     return FALSE;
 0134 0027              clr R16
 0136                   .dbline -2
 0136           L17:
 0136                   .dbline 0 ; func end
 0136 B990              ld R11,y+
 0138 A990              ld R10,y+
 013A 0895              ret
 013C                   .dbsym r pBuffer 10 pc
 013C                   .dbsym r pQueue 16 pS[AbstructDataTypeQueue]
 013C                   .dbend
 013C                   .dbfunc e ADT_Queue_Peek_From_Buffer _ADT_Queue_Peek_From_Buffer fc
 013C           ;        pBuffer -> R10,R11
 013C           ;        nCount0 -> R14,R15
 013C           ;         nHead0 -> R12,R13
 013C           ;         nTail0 -> R20,R21
 013C           ;         nSize0 -> R12,R13
 013C           ;          pData -> R18,R19
 013C           ;         pQueue -> R16,R17
                        .even
 013C           _ADT_Queue_Peek_From_Buffer::
 013C 0E940000          xcall push_xgset30FC
 0140                   .dbline -1
 0140                   .dbline 210
 0140           ; }
 0140           ; 
 0140           ; /***********************************************************
 0140           ; *   函数说明:队列首个数据预览函数                         *
 0140           ; *   输入:    存放读取变量的空间指针                       *
 0140           ; *   输出:    队列是否为空                                 *
 0140           ; *   调用函数:无                                           *
 0140           ; ***********************************************************/
 0140           ; BOOL ADT_Queue_Peek_From_Buffer(ADT_QUEUE *pQueue,uint8 *pData)
 0140           ; {
 0140                   .dbline 217
 0140           ;     uint8 *pBuffer;
 0140           ;     uint   nSize;
 0140           ;     uint   nTail;
 0140           ;     uint   nHead;
 0140           ;     uint   nCount;
 0140           ;     
 0140           ;     SAFE_CODE_PERFORMANCE                                   //原子操作
 0140 F894              cli
 0142                   .dbline 217
 0142 F801              movw R30,R16
 0144 A080              ldd R10,z+0
 0146 B180              ldd R11,z+1
 0148                   .dbline 217
 0148 C280              ldd R12,z+2
 014A D380              ldd R13,z+3
 014C                   .dbline 217
 014C AA20              tst R10
 014E 11F4              brne X14
 0150 BB20              tst R11
 0152 21F0              breq L26
 0154           X14:
 0154 CC20              tst R12
 0156 29F4              brne L24
 0158 DD20              tst R13
 015A 19F4              brne L24
 015C           X15:
 015C           L26:
 015C                   .dbline 217
 015C                   .dbline 217
 015C 7894              sei
 015E                   .dbline 217
 015E 0027              clr R16
 0160 19C0              xjmp L23
 0162           L24:
 0162                   .dbline 217
 0162 F801              movw R30,R16
 0164 4681              ldd R20,z+6
 0166 5781              ldd R21,z+7
 0168                   .dbline 217
 0168 C480              ldd R12,z+4
 016A D580              ldd R13,z+5
 016C                   .dbline 217
 016C E084              ldd R14,z+8
 016E F184              ldd R15,z+9
 0170                   .dbline 217
 0170 4C15              cp R20,R12
 0172 5D05              cpc R21,R13
 0174 39F4              brne L27
 0176           X16:
 0176 EE20              tst R14
 0178 29F4              brne L27
 017A FF20              tst R15
 017C 19F4              brne L27
 017E           X17:
 017E                   .dbline 217
 017E                   .dbline 217
 017E 7894              sei
 0180                   .dbline 217
 0180 0027              clr R16
 0182 08C0              xjmp L23
 0184           L27:
 0184                   .dbline 217
 0184 F601              movw R30,R12
 0186 EA0D              add R30,R10
 0188 FB1D              adc R31,R11
 018A 2080              ldd R2,z+0
 018C F901              movw R30,R18
 018E 2082              std z+0,R2
 0190                   .dbline 217
 0190                   .dbline 217
 0190 7894              sei
 0192                   .dbline 241
 0192           ;     (
 0192           ;         pBuffer = pQueue->pBuffer;
 0192           ;         nSize = pQueue->nSize;
 0192           ;         
 0192           ;         if ((pBuffer == NULL) || (!nSize))
 0192           ;         {
 0192           ;             SEI();
 0192           ;             return FALSE;                                   //缓冲区未分配空间
 0192           ;         }
 0192           ;         nTail = pQueue->nTail;
 0192           ;         nHead = pQueue->nHead;
 0192           ;         nCount = pQueue->nCount;
 0192           ;         
 0192           ;     
 0192           ;         if ((nTail == nHead) && (nCount == 0))              //缓冲区为空
 0192           ;         {
 0192           ;             SEI();
 0192           ;             return FALSE;
 0192           ;         }
 0192           ;         
 0192           ;         (*pData) = pBuffer[nHead];
 0192           ;     )
 0192           ;     
 0192           ;     return TRUE;
 0192 01E0              ldi R16,1
 0194                   .dbline -2
 0194           L23:
 0194                   .dbline 0 ; func end
 0194 0C940000          xjmp pop_xgset30FC
 0198                   .dbsym r pBuffer 10 pc
 0198                   .dbsym r nCount0 14 i
 0198                   .dbsym r nHead0 12 i
 0198                   .dbsym r nTail0 20 i
 0198                   .dbsym r nSize0 12 i
 0198                   .dbsym r pData 18 pc
 0198                   .dbsym r pQueue 16 pS[AbstructDataTypeQueue]
 0198                   .dbend
 0198           ; }

⌨️ 快捷键说明

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