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

📄 model.lst

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
      F9 156C      CP	R22,R12
      FA 057D      CPC	R23,R13
      FB F411      BNE	0x00FE
      FC 2766      CLR	R22
      FD 2777      CLR	R23
      FE 01F8      MOVW	R30,R16
      FF 8377      STD	Z+7,R23
     100 8366      STD	Z+6,R22
     101 8751      STD	Z+9,R21
     102 8740      STD	Z+8,R20
     103 BEAF      OUT	0x3F,R10
(0088)     (
(0089)         pBuffer = pQueue->pBuffer;
(0090)         nSize = pQueue->nSize;
(0091)         
(0092)         if ((pBuffer == NULL) || (!nSize))
(0093)         {
(0094)             SEI();
(0095)             return FALSE;                                   //缓冲区未分配空间
(0096)         }
(0097)         nTail = pQueue->nTail;
(0098)         nHead = pQueue->nHead;
(0099)         nCount = pQueue->nCount;
(0100)     
(0101)     
(0102)         if ((nTail == nHead) && (nCount == nSize))          //缓冲区已满
(0103)         {
(0104)             SEI();
(0105)             return FALSE;
(0106)         }
(0107)     
(0108)         pBuffer[nTail] = cData;
(0109)         nTail++;
(0110)         nCount++;
(0111)         if (nTail == nSize)
(0112)         {
(0113)             nTail = 0;
(0114)         }
(0115)         
(0116)         pQueue->nTail = nTail;
(0117)         pQueue->nCount = nCount;
(0118)     )
(0119)     
(0120)     return TRUE;
     104 E001      LDI	R16,1
     105 9622      ADIW	R28,2
     106 C951      RJMP	pop_xgsetF0FC
_ADT_Queue_Get_From_Buffer:
  cflags0              --> R10
  pBuffer              --> R14
  nHead1               --> R22
  nCount0              --> R20
  nHead0               --> R22
  nTail0               --> Y,+0
  nSize0               --> R12
  pData                --> R18
  pQueue               --> R16
     107 D95B      RCALL	push_xgsetF0FC
     108 9722      SBIW	R28,2
(0121) }
(0122) 
(0123) /***********************************************************
(0124) *   函数说明:抽象数据类型队列,系统默认队列缓冲区读取函数 *
(0125) *   输入:    存放读取变量的空间指针                       *
(0126) *   输出:    队列是否为空                                 *
(0127) *   调用函数:无                                           *
(0128) ***********************************************************/
(0129) BOOL ADT_Queue_Get_From_Buffer(ADT_QUEUE *pQueue,uint8 *pData)
(0130) {
(0131)     uint8 *pBuffer;
(0132)     uint   nSize;
(0133)     uint   nTail;
(0134)     uint   nHead;
(0135)     uint   nCount;
(0136)     //PORTG ^= BIT(PG3);
(0137)     SAFE_CODE_PERFORMANCE                                   //原子操作
     109 B6AF      IN	R10,0x3F
     10A 94F8      BCLR	7
     10B 01F8      MOVW	R30,R16
     10C 80E0      LDD	R14,Z+0
     10D 80F1      LDD	R15,Z+1
     10E 80C2      LDD	R12,Z+2
     10F 80D3      LDD	R13,Z+3
     110 20EE      TST	R14
     111 F411      BNE	0x0114
     112 20FF      TST	R15
     113 F021      BEQ	0x0118
     114 20CC      TST	R12
     115 F429      BNE	0x011B
     116 20DD      TST	R13
     117 F419      BNE	0x011B
     118 9478      BSET	7
     119 2700      CLR	R16
     11A C02A      RJMP	0x0145
     11B 01F8      MOVW	R30,R16
     11C 8026      LDD	R2,Z+6
     11D 8037      LDD	R3,Z+7
     11E 8239      STD	Y+1,R3
     11F 8228      STD	Y+0,R2
     120 8164      LDD	R22,Z+4
     121 8175      LDD	R23,Z+5
     122 8540      LDD	R20,Z+8
     123 8551      LDD	R21,Z+9
     124 0101      MOVW	R0,R2
     125 1626      CP	R2,R22
     126 0637      CPC	R3,R23
     127 F431      BNE	0x012E
     128 3040      CPI	R20,0
     129 0745      CPC	R20,R21
     12A F419      BNE	0x012E
     12B 9478      BSET	7
     12C 2700      CLR	R16
     12D C017      RJMP	0x0145
     12E 011B      MOVW	R2,R22
     12F 5F6F      SUBI	R22,0xFF
     130 4F7F      SBCI	R23,0xFF
     131 01F1      MOVW	R30,R2
     132 0DEE      ADD	R30,R14
     133 1DFF      ADC	R31,R15
     134 8020      LDD	R2,Z+0
     135 01F9      MOVW	R30,R18
     136 8220      STD	Z+0,R2
     137 5041      SUBI	R20,1
     138 4050      SBCI	R21,0
     139 156C      CP	R22,R12
     13A 057D      CPC	R23,R13
     13B F411      BNE	0x013E
     13C 2766      CLR	R22
     13D 2777      CLR	R23
     13E 01F8      MOVW	R30,R16
     13F 8375      STD	Z+5,R23
     140 8364      STD	Z+4,R22
     141 8751      STD	Z+9,R21
     142 8740      STD	Z+8,R20
     143 BEAF      OUT	0x3F,R10
(0138)     (
(0139)         pBuffer = pQueue->pBuffer;
(0140)         nSize = pQueue->nSize;
(0141)         
(0142)         if ((pBuffer == NULL) || (!nSize))
(0143)         {
(0144)             SEI();
(0145)             return FALSE;                                   //缓冲区未分配空间
(0146)         }
(0147)         nTail = pQueue->nTail;
(0148)         nHead = pQueue->nHead;
(0149)         nCount = pQueue->nCount;
(0150)         
(0151)     
(0152)         if ((nTail == nHead) && (nCount == 0))              //缓冲区为空
(0153)         {
(0154)             SEI();
(0155)             return FALSE;
(0156)         }
(0157)         
(0158)         (*pData) = pBuffer[nHead++];
(0159)         
(0160)         nCount--;
(0161)         if (nHead == nSize)
(0162)         {
(0163)             nHead = 0;
(0164)         }
(0165)         
(0166)         pQueue->nHead = nHead;
(0167)         pQueue->nCount = nCount;
(0168)     )
(0169)     
(0170)     return TRUE;
     144 E001      LDI	R16,1
     145 9622      ADIW	R28,2
     146 C911      RJMP	pop_xgsetF0FC
_ADT_Queue_Check_Empty:
  cflags0              --> R10
  pBuffer              --> R12
  pQueue               --> R16
     147 D921      RCALL	push_xgset003C
(0171) }
(0172) 
(0173) /***********************************************************
(0174) *   函数说明:队列判空函数                                 *
(0175) *   输入:    队列指针                                     *
(0176) *   输出:    队列是否为空                                 *
(0177) *   调用函数:无                                           *
(0178) ***********************************************************/
(0179) BOOL ADT_Queue_Check_Empty(ADT_QUEUE *pQueue)
(0180) {
(0181)     uint8 *pBuffer;
(0182) 
(0183)     SAFE_CODE_PERFORMANCE
     148 B6AF      IN	R10,0x3F
     149 94F8      BCLR	7
     14A 01F8      MOVW	R30,R16
     14B 80C0      LDD	R12,Z+0
     14C 80D1      LDD	R13,Z+1
     14D 20CC      TST	R12
     14E F411      BNE	0x0151
     14F 20DD      TST	R13
     150 F031      BEQ	0x0157
     151 8022      LDD	R2,Z+2
     152 8033      LDD	R3,Z+3
     153 2022      TST	R2
     154 F429      BNE	0x015A
     155 2033      TST	R3
     156 F419      BNE	0x015A
     157 9478      BSET	7
     158 E001      LDI	R16,1
     159 C013      RJMP	0x016D
     15A 01F8      MOVW	R30,R16
     15B 8024      LDD	R2,Z+4
     15C 8035      LDD	R3,Z+5
     15D 8046      LDD	R4,Z+6
     15E 8057      LDD	R5,Z+7
     15F 1442      CP	R4,R2
     160 0453      CPC	R5,R3
     161 F449      BNE	0x016B
     162 8420      LDD	R2,Z+8
     163 8431      LDD	R3,Z+9
     164 2022      TST	R2
     165 F429      BNE	0x016B
     166 2033      TST	R3
     167 F419      BNE	0x016B
     168 9478      BSET	7
     169 E001      LDI	R16,1
     16A C002      RJMP	0x016D
     16B BEAF      OUT	0x3F,R10
(0184)     (
(0185)         pBuffer = pQueue->pBuffer;
(0186)         
(0187)         if ((pBuffer == NULL) || (!(pQueue->nSize)))
(0188)         {
(0189)             SEI();
(0190)             return TRUE;                                    //缓冲区未分配空间
(0191)         }
(0192) 
(0193)     
(0194)         if (((pQueue->nTail) == (pQueue->nHead)) 
(0195)           && ((pQueue->nCount) == 0))                       //缓冲区为空
(0196)         {
(0197)             SEI();
(0198)             return TRUE;
(0199)         }
(0200)     )
(0201)     
(0202)     return FALSE;
     16C 2700      CLR	R16
     16D C8E5      RJMP	pop_xgset003C
_ADT_Queue_Peek_From_Buffer:
  cflags0              --> R10
  pBuffer              --> R12
  nCount0              --> R20
  nHead0               --> R14
  nTail0               --> R22
  nSize0               --> R14
  pData                --> R18
  pQueue               --> R16
     16E D8F4      RCALL	push_xgsetF0FC
(0203) }
(0204) 
(0205) /***********************************************************
(0206) *   函数说明:队列首个数据预览函数                         *
(0207) *   输入:    存放读取变量的空间指针                       *
(0208) *   输出:    队列是否为空                                 *
(0209) *   调用函数:无                                           *
(0210) ***********************************************************/
(0211) BOOL ADT_Queue_Peek_From_Buffer(ADT_QUEUE *pQueue,uint8 *pData)
(0212) {
(0213)     uint8 *pBuffer;
(0214)     uint   nSize;
(0215)     uint   nTail;
(0216)     uint   nHead;
(0217)     uint   nCount;
(0218)     
(0219)     SAFE_CODE_PERFORMANCE                                   //原子操作
     16F B6AF      IN	R10,0x3F
     170 94F8      BCLR	7
     171 01F8      MOVW	R30,R16
     172 80C0      LDD	R12,Z+0
     173 80D1      LDD	R13,Z+1
     174 80E2      LDD	R14,Z+2
     175 80F3      LDD	R15,Z+3
     176 20CC      TST	R12
     177 F411      BNE	0x017A
     178 20DD      TST	R13
     179 F021      BEQ	0x017E
     17A 20EE      TST	R14
     17B F429      BNE	0x0181
     17C 20FF      TST	R15
     17D F419      BNE	0x0181
     17E 9478      BSET	7
     17F 2700      CLR	R16
     180 C018      RJMP	0x0199
     181 01F8      MOVW	R30,R16
     182 8166      LDD	R22,Z+6
     183 8177      LDD	R23,Z+7
     184 80E4      LDD	R14,Z+4
     185 80F5      LDD	R15,Z+5
     186 8540      LDD	R20,Z+8
     187 8551      LDD	R21,Z+9
     188 156E      CP	R22,R14
     189 057F      CPC	R23,R15
     18A F431      BNE	0x0191
     18B 3040      CPI	R20,0
     18C 0745      CPC	R20,R21
     18D F419      BNE	0x0191
     18E 9478      BSET	7
     18F 2700      CLR	R16
     190 C008      RJMP	0x0199
     191 01F7      MOVW	R30,R14
     192 0DEC      ADD	R30,R12
     193 1DFD      ADC	R31,R13
     194 8020      LDD	R2,Z+0
     195 01F9      MOVW	R30,R18
     196 8220      STD	Z+0,R2
     197 BEAF      OUT	0x3F,R10
(0220)     (
(0221)         pBuffer = pQueue->pBuffer;
(0222)         nSize = pQueue->nSize;
(0223)         
(0224)         if ((pBuffer == NULL) || (!nSize))
(0225)         {
(0226)             SEI();
(0227)             return FALSE;                                   //缓冲区未分配空间
(0228)         }
(0229)         nTail = pQueue->nTail;
(0230)         nHead = pQueue->nHead;
(0231)         nCount = pQueue->nCount;
(0232)         
(0233)     
(0234)         if ((nTail == nHead) && (nCount == 0))              //缓冲区为空
(0235)         {
(0236)             SEI();
(0237)             return FALSE;
(0238)         }
(0239)         
(0240)         (*pData) = pBuffer[nHead];
(0241)     )
(0242)     
(0243)     return TRUE;
     198 E001      LDI	R16,1
     199 C8BE      RJMP	pop_xgsetF0FC
_SFP_NULL_Output_Data_Function:
  p                    --> R10
  cData                --> Y,+2
     19A 931A      ST	R17,-Y
     19B 930A      ST	R16,-Y
     19C 92AA      ST	R10,-Y
     19D 92BA      ST	R11,-Y
FILE: E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseSerialFrame_PROC.c
(0001) /***********************************************************

⌨️ 快捷键说明

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