model.lst

来自「移动机器人(小车)的物理坐标和逻辑坐标的转换源码」· LST 代码 · 共 1,693 行 · 第 1/5 页

LST
1,693
字号
(0061) # include "RD_UseSerialBuff.h"
(0062) 
(0063) /********************
(0064) *   系 统 宏 定 义  *
(0065) ********************/
(0066) 
(0067) /*------------------*
(0068) *   常 数 宏 定 义  *
(0069) *------------------*/
(0070) #ifndef SERIAL_RX_BUFF_SIZE
(0071)     # define SERIAL_RX_BUFF_SIZE 32
(0072) #endif
(0073) #ifndef SERIAL_TX_BUFF_SIZE
(0074)     # define SERIAL_TX_BUFF_SIZE 32
(0075) #endif
(0076) #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
(0077)     #ifndef UDR_PORT
(0078)         # error Need for UDR_PORT!
(0079)     #endif
(0080) 
(0081)     #ifndef SERIAL_ENABLE_WRITE
(0082)         # define SERIAL_ENABLE_WRITE
(0083)     #endif
(0084) 
(0085)     #ifndef SERIAL_DISABLE_WRITE
(0086)         # define SERIAL_DISABLE_WRITE
(0087)     #endif
(0088) #endif
(0089) /********************
(0090) *   函 数 声 明 区  *
(0091) ********************/
(0092) #ifdef _USE_SERIAL_RX_BUFF
(0093) BOOL UARTaddDataToRxBuff(uint8 Data);
(0094) BOOL UARTgetDataFromRxBuff(uint8 *Data);
(0095) #endif
(0096) 
(0097) #ifdef _USE_SERIAL_TX_BUFF
(0098) BOOL UARTaddDataToTxBuff(uint8 Data);
(0099) BOOL UARTgetDataFromTxBuff(uint8 *Data);
(0100)     #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
(0101) BOOL PROC_Serial_Transmitter(void);
(0102)     #endif
(0103) #endif
(0104) 
(0105) /********************
(0106) *   模块变量定义区  *
(0107) ********************/
(0108) #ifdef _USE_SERIAL_RX_BUFF
(0109) static uint8  UARTRxBuff[SERIAL_RX_BUFF_SIZE];
(0110) static unsigned int  UARTRxBuffHead = 0;
(0111) static unsigned int  UARTRxBuffTail = 0;
(0112) static unsigned int  UARTRxBuffCounter = 0;
(0113) #endif
(0114) 
(0115) #ifdef _USE_SERIAL_TX_BUFF
(0116) static uint8  UARTTxBuff[SERIAL_TX_BUFF_SIZE];
(0117) static unsigned int  UARTTxBuffHead = 0;
(0118) static unsigned int  UARTTxBuffTail = 0;
(0119) static unsigned int  UARTTxBuffCounter = 0;
(0120) #endif
(0121)  
(0122) /********************
(0123) *   全局变量定义区  *
(0124) ********************/
(0125) #ifdef _USE_SERIAL_TX_BUFF
(0126)     #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
(0127) BOOL g_bIfSerialTransmitCompleted = TRUE;
(0128)     #endif
(0129) #endif
(0130) 
(0131) /***********************************************************
(0132) *   函数说明:接收缓冲区取值函数                           *
(0133) *   输入:    存储取出数据地址的指针                       *
(0134) *   输出:    取值是否成功                                 *
(0135) *   调用函数:无                                           *
(0136) ***********************************************************/
(0137) #ifdef _USE_SERIAL_RX_BUFF
(0138) BOOL UARTgetDataFromRxBuff(uint8  *Data)
(0139) {
(0140)     SAFE_CODE_PERFORMANCE
      F8 B6AF      IN	R10,0x3F
      F9 94F8      BCLR	7
      FA 9020 0105 LDS	R2,RD_UseCooperatingMiniOs.c:n+3
      FC 9030 0106 LDS	R3,0x0106
      FE 9040 0103 LDS	R4,RD_UseCooperatingMiniOs.c:n+1
     100 9050 0104 LDS	R5,RD_UseCooperatingMiniOs.c:n+2
     102 1442      CP	R4,R2
     103 0453      CPC	R5,R3
     104 F459      BNE	0x0110
     105 9020 0107 LDS	R2,0x0107
     107 9030 0108 LDS	R3,0x0108
     109 2022      TST	R2
     10A F429      BNE	0x0110
     10B 2033      TST	R3
     10C F419      BNE	0x0110
     10D 9478      BSET	7
     10E 2700      CLR	R16
     10F C02B      RJMP	0x013B
     110 9020 0103 LDS	R2,RD_UseCooperatingMiniOs.c:n+1
     112 9030 0104 LDS	R3,RD_UseCooperatingMiniOs.c:n+2
     114 01C1      MOVW	R24,R2
     115 9601      ADIW	R24,1
     116 9390 0104 STS	RD_UseCooperatingMiniOs.c:n+2,R25
     118 9380 0103 STS	RD_UseCooperatingMiniOs.c:n+1,R24
     11A EB85      LDI	R24,0xB5
     11B E091      LDI	R25,1
     11C 01F1      MOVW	R30,R2
     11D 0FE8      ADD	R30,R24
     11E 1FF9      ADC	R31,R25
     11F 8020      LDD	R2,Z+0
     120 01F8      MOVW	R30,R16
     121 8220      STD	Z+0,R2
     122 9180 0107 LDS	R24,0x0107
     124 9190 0108 LDS	R25,0x0108
     126 9701      SBIW	R24,1
     127 9390 0108 STS	0x0108,R25
     129 9380 0107 STS	0x0107,R24
     12B 9180 0103 LDS	R24,RD_UseCooperatingMiniOs.c:n+1
     12D 9190 0104 LDS	R25,RD_UseCooperatingMiniOs.c:n+2
     12F 3280      CPI	R24,0x20
     130 E0E0      LDI	R30,0
     131 079E      CPC	R25,R30
     132 F431      BNE	0x0139
     133 2422      CLR	R2
     134 2433      CLR	R3
     135 9230 0104 STS	RD_UseCooperatingMiniOs.c:n+2,R3
     137 9220 0103 STS	RD_UseCooperatingMiniOs.c:n+1,R2
     139 BEAF      OUT	0x3F,R10
(0141)     (
(0142)         if ((UARTRxBuffHead == UARTRxBuffTail) 
(0143)          && (UARTRxBuffCounter == 0))
(0144)         {
(0145)             SEI();
(0146)             return FALSE;
(0147)         }
(0148)         (*Data) = UARTRxBuff[UARTRxBuffHead++];
(0149)     
(0150)         UARTRxBuffCounter--;
(0151)     
(0152)         if (UARTRxBuffHead == SERIAL_RX_BUFF_SIZE)
(0153)         {
(0154)             UARTRxBuffHead = 0;
(0155)         }
(0156)     )		
(0157)     return TRUE;
     13A E001      LDI	R16,1
     13B 90A9      LD	R10,Y+
     13C 9508      RET
_UARTPeekDataFromRxBuff:
  cflags0              --> R10
  pData                --> R16
     13D 92AA      ST	R10,-Y
(0158) }
(0159) 
(0160) /***********************************************************
(0161) *   函数说明:接收缓冲区首数据察看函数                     *
(0162) *   输入:    存储取出数据地址的指针                       *
(0163) *   输出:    取值是否成功                                 *
(0164) *   调用函数:无                                           *
(0165) ***********************************************************/
(0166) BOOL UARTPeekDataFromRxBuff(uint8 *pData)
(0167) {
(0168)     SAFE_CODE_PERFORMANCE
     13E B6AF      IN	R10,0x3F
     13F 94F8      BCLR	7
     140 9020 0105 LDS	R2,RD_UseCooperatingMiniOs.c:n+3
     142 9030 0106 LDS	R3,0x0106
     144 9040 0103 LDS	R4,RD_UseCooperatingMiniOs.c:n+1
     146 9050 0104 LDS	R5,RD_UseCooperatingMiniOs.c:n+2
     148 1442      CP	R4,R2
     149 0453      CPC	R5,R3
     14A F459      BNE	0x0156
     14B 9020 0107 LDS	R2,0x0107
     14D 9030 0108 LDS	R3,0x0108
     14F 2022      TST	R2
     150 F429      BNE	0x0156
     151 2033      TST	R3
     152 F419      BNE	0x0156
     153 9478      BSET	7
     154 2700      CLR	R16
     155 C00D      RJMP	0x0163
     156 EB85      LDI	R24,0xB5
     157 E091      LDI	R25,1
     158 91E0 0103 LDS	R30,RD_UseCooperatingMiniOs.c:n+1
     15A 91F0 0104 LDS	R31,RD_UseCooperatingMiniOs.c:n+2
     15C 0FE8      ADD	R30,R24
     15D 1FF9      ADC	R31,R25
     15E 8020      LDD	R2,Z+0
     15F 01F8      MOVW	R30,R16
     160 8220      STD	Z+0,R2
     161 BEAF      OUT	0x3F,R10
(0169)     (
(0170)         if ((UARTRxBuffHead == UARTRxBuffTail) 
(0171)          && (UARTRxBuffCounter == 0))
(0172)         {
(0173)             SEI();
(0174)             return FALSE;
(0175)         }
(0176)         (*pData) = UARTRxBuff[UARTRxBuffHead];
(0177)     )		
(0178)     return TRUE;
     162 E001      LDI	R16,1
     163 90A9      LD	R10,Y+
     164 9508      RET
_UARTaddDataToRxBuff:
  cflags0              --> R10
  Data                 --> R16
     165 92AA      ST	R10,-Y
(0179) }
(0180) 
(0181) /***********************************************************
(0182) *  函数说明:向通讯输入缓冲区添加数据函数                  *
(0183) *  输入:    收到的数据                                    *
(0184) *  输出:    无                                            *
(0185) *  调用函数:无                                            *
(0186) ***********************************************************/
(0187) BOOL UARTaddDataToRxBuff(uint8  Data)
(0188) {
(0189)     SAFE_CODE_PERFORMANCE
     166 B6AF      IN	R10,0x3F
     167 94F8      BCLR	7
     168 9020 0105 LDS	R2,RD_UseCooperatingMiniOs.c:n+3
     16A 9030 0106 LDS	R3,0x0106
     16C 9040 0103 LDS	R4,RD_UseCooperatingMiniOs.c:n+1
     16E 9050 0104 LDS	R5,RD_UseCooperatingMiniOs.c:n+2
     170 1442      CP	R4,R2
     171 0453      CPC	R5,R3
     172 F459      BNE	0x017E
     173 9180 0107 LDS	R24,0x0107
     175 9190 0108 LDS	R25,0x0108
     177 3280      CPI	R24,0x20
     178 E0E0      LDI	R30,0
     179 079E      CPC	R25,R30
     17A F419      BNE	0x017E
     17B 9478      BSET	7
     17C 2700      CLR	R16
     17D C029      RJMP	0x01A7
     17E 9020 0105 LDS	R2,RD_UseCooperatingMiniOs.c:n+3
     180 9030 0106 LDS	R3,0x0106
     182 01C1      MOVW	R24,R2
     183 9601      ADIW	R24,1
     184 9390 0106 STS	0x0106,R25
     186 9380 0105 STS	RD_UseCooperatingMiniOs.c:n+3,R24
     188 EB85      LDI	R24,0xB5
     189 E091      LDI	R25,1
     18A 01F1      MOVW	R30,R2
     18B 0FE8      ADD	R30,R24
     18C 1FF9      ADC	R31,R25
     18D 8300      STD	Z+0,R16
     18E 9180 0107 LDS	R24,0x0107
     190 9190 0108 LDS	R25,0x0108
     192 9601      ADIW	R24,1
     193 9390 0108 STS	0x0108,R25
     195 9380 0107 STS	0x0107,R24
     197 9180 0105 LDS	R24,RD_UseCooperatingMiniOs.c:n+3
     199 9190 0106 LDS	R25,0x0106
     19B 3280      CPI	R24,0x20
     19C E0E0      LDI	R30,0
     19D 079E      CPC	R25,R30
     19E F431      BNE	0x01A5
     19F 2422      CLR	R2
     1A0 2433      CLR	R3
     1A1 9230 0106 STS	0x0106,R3
     1A3 9220 0105 STS	RD_UseCooperatingMiniOs.c:n+3,R2
     1A5 BEAF      OUT	0x3F,R10
(0190)     (
(0191)         if ((UARTRxBuffHead == UARTRxBuffTail) 
(0192)          && (UARTRxBuffCounter == SERIAL_RX_BUFF_SIZE))
(0193)         {
(0194)             SEI();
(0195)             return FALSE;
(0196)         }
(0197)         UARTRxBuff[UARTRxBuffTail++] = Data;
(0198)     
(0199)         UARTRxBuffCounter++;
(0200)     
(0201)         if (UARTRxBuffTail == SERIAL_RX_BUFF_SIZE)
(0202)         {
(0203)             UARTRxBuffTail = 0;
(0204)         }
(0205) 	)	
(0206)     return TRUE;
     1A6 E001      LDI	R16,1
     1A7 90A9      LD	R10,Y+
     1A8 9508      RET
_UARTgetDataFromTxBuff:
  cflags0              --> R10
  Data                 --> R16
     1A9 92AA      ST	R10,-Y
(0207) }
(0208) #endif
(0209) 
(0210) #ifdef _USE_SERIAL_TX_BUFF
(0211) /***********************************************************
(0212) *  函数说明:发送中断取值函数                              *
(0213) *  输入:    存储取出数据地址的指针                        *
(0214) *  输出:    取值是否成功                                  *
(0215) *  调用函数:无                                            *
(0216) ***********************************************************/
(0217) BOOL UARTgetDataFromTxBuff(uint8 *Data)
(0218) {
(0219) 
(0220)     SAFE_CODE_PERFORMANCE
     1AA B6AF      IN	R10,0x3F
     1AB 94F8      BCLR	7
     1AC 9020 010B LDS	R2,0x010B
     1AE 9030 010C LDS	R3,0x010C
     1B0 9040 0109 LDS	R4,0x0109
     1B2 9050 010A LDS	R5,0x010A
     1B4 1442      CP	R4,R2
     1B5 0453      CPC	R5,R3
     1B6 F459      BNE	0x01C2
     1B7 9020 010D LDS	R2,0x010D
     1B9 9030 010E LDS	R3,0x010E
     1BB 2022      TST	R2
     1BC F429      BNE	0x01C2
     1BD 2033      TST	R3
     1BE F419      BNE	0x01C2
     1BF 9478      BSET	7
     1C0 2700      CLR	R16
     1C1 C02B      RJMP	0x01ED
     1C2 9020 0109 LDS	R2,0x0109
     1C4 9030 010A LDS	R3,0x010A
     1C6 01C1      MOVW	R24,R2
     1C7 9601      ADIW	R24,1
     1C8 9390 010A STS	0x010A,R25
     1CA 9380 0109 STS	0x0109,R24
     1CC E785      LDI	R24,0x75
     1CD E091      LDI	R25,1
     1CE 01F1      MOVW	R30,R2
     1CF 0FE8      ADD	R30,R24
     1D0 1FF9      ADC	R31,R25
     1D1 8020      LDD	R2,Z+0
     1D2 01F8      MOVW	R30,R16
     1D3 8220      STD	Z+0,R2
     1D4 9180 010D LDS	R24,0x010D
     1D6 9190 010E LDS	R25,0x010E
     1D8 9701      SBIW	R24,1
     1D9 9390 010E STS	0x010E,R25

⌨️ 快捷键说明

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