📄 model.lst
字号:
(0197) UARTRxBuff[UARTRxBuffTail++] = Data;
(0198)
(0199) UARTRxBuffCounter++;
(0200)
(0201) if (UARTRxBuffTail == SERIAL_RX_BUFF_SIZE)
(0202) {
(0203) UARTRxBuffTail = 0;
(0204) }
(0205) )
(0206) return TRUE;
13F E001 LDI R16,1
140 9508 RET
(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
_UARTgetDataFromTxBuff:
Data --> R16
141 94F8 BCLR 7
142 9020 010A LDS R2,UARTTxBuffTail
144 9030 010B LDS R3,UARTTxBuffTail+1
146 9040 0108 LDS R4,RD_UseSerialBuff.c:UARTTxBuffHead
148 9050 0109 LDS R5,RD_UseSerialBuff.c:UARTTxBuffHead+1
14A 1442 CP R4,R2
14B 0453 CPC R5,R3
14C F459 BNE 0x0158
14D 9020 010C LDS R2,RD_UseSerialBuff.c:UARTTxBuffCounter
14F 9030 010D LDS R3,RD_UseSerialBuff.c:UARTTxBuffCounter+1
151 2022 TST R2
152 F429 BNE 0x0158
153 2033 TST R3
154 F419 BNE 0x0158
155 9478 BSET 7
156 2700 CLR R16
157 C02B RJMP 0x0183
158 9020 0108 LDS R2,RD_UseSerialBuff.c:UARTTxBuffHead
15A 9030 0109 LDS R3,RD_UseSerialBuff.c:UARTTxBuffHead+1
15C 01C1 MOVW R24,R2
15D 9601 ADIW R24,1
15E 9390 0109 STS RD_UseSerialBuff.c:UARTTxBuffHead+1,R25
160 9380 0108 STS RD_UseSerialBuff.c:UARTTxBuffHead,R24
162 E189 LDI R24,0x19
163 E091 LDI R25,1
164 01F1 MOVW R30,R2
165 0FE8 ADD R30,R24
166 1FF9 ADC R31,R25
167 8020 LDD R2,Z+0
168 01F8 MOVW R30,R16
169 8220 STD Z+0,R2
16A 9180 010C LDS R24,RD_UseSerialBuff.c:UARTTxBuffCounter
16C 9190 010D LDS R25,RD_UseSerialBuff.c:UARTTxBuffCounter+1
16E 9701 SBIW R24,1
16F 9390 010D STS RD_UseSerialBuff.c:UARTTxBuffCounter+1,R25
171 9380 010C STS RD_UseSerialBuff.c:UARTTxBuffCounter,R24
173 9180 0108 LDS R24,RD_UseSerialBuff.c:UARTTxBuffHead
175 9190 0109 LDS R25,RD_UseSerialBuff.c:UARTTxBuffHead+1
177 3880 CPI R24,0x80
178 E0E0 LDI R30,0
179 079E CPC R25,R30
17A F431 BNE 0x0181
17B 2422 CLR R2
17C 2433 CLR R3
17D 9230 0109 STS RD_UseSerialBuff.c:UARTTxBuffHead+1,R3
17F 9220 0108 STS RD_UseSerialBuff.c:UARTTxBuffHead,R2
181 9478 BSET 7
(0221) (
(0222) if ((UARTTxBuffHead == UARTTxBuffTail)
(0223) && (UARTTxBuffCounter == 0))
(0224) {
(0225) SEI();
(0226) return FALSE;
(0227) }
(0228) (*Data) = UARTTxBuff[UARTTxBuffHead++];
(0229)
(0230) UARTTxBuffCounter--;
(0231)
(0232) if (UARTTxBuffHead == SERIAL_TX_BUFF_SIZE)
(0233) {
(0234) UARTTxBuffHead = 0;
(0235) }
(0236) )
(0237) return TRUE;
182 E001 LDI R16,1
183 9508 RET
(0238) }
(0239)
(0240) /***********************************************************
(0241) * 函数说明:首数据察看函数 *
(0242) * 输入: 存储数据地址的指针 *
(0243) * 输出: 取值是否成功 *
(0244) * 调用函数:五 *
(0245) ***********************************************************/
(0246) BOOL UARTPeekDataFromTxBuff(uint8 *pData)
(0247) {
(0248) SAFE_CODE_PERFORMANCE
_UARTPeekDataFromTxBuff:
pData --> R16
184 94F8 BCLR 7
185 9020 010A LDS R2,UARTTxBuffTail
187 9030 010B LDS R3,UARTTxBuffTail+1
189 9040 0108 LDS R4,RD_UseSerialBuff.c:UARTTxBuffHead
18B 9050 0109 LDS R5,RD_UseSerialBuff.c:UARTTxBuffHead+1
18D 1442 CP R4,R2
18E 0453 CPC R5,R3
18F F459 BNE 0x019B
190 9020 010C LDS R2,RD_UseSerialBuff.c:UARTTxBuffCounter
192 9030 010D LDS R3,RD_UseSerialBuff.c:UARTTxBuffCounter+1
194 2022 TST R2
195 F429 BNE 0x019B
196 2033 TST R3
197 F419 BNE 0x019B
198 9478 BSET 7
199 2700 CLR R16
19A C00D RJMP 0x01A8
19B E189 LDI R24,0x19
19C E091 LDI R25,1
19D 91E0 0108 LDS R30,RD_UseSerialBuff.c:UARTTxBuffHead
19F 91F0 0109 LDS R31,RD_UseSerialBuff.c:UARTTxBuffHead+1
1A1 0FE8 ADD R30,R24
1A2 1FF9 ADC R31,R25
1A3 8020 LDD R2,Z+0
1A4 01F8 MOVW R30,R16
1A5 8220 STD Z+0,R2
1A6 9478 BSET 7
(0249) (
(0250) if ((UARTTxBuffHead == UARTTxBuffTail)
(0251) && (UARTTxBuffCounter == 0))
(0252) {
(0253) SEI();
(0254) return FALSE;
(0255) }
(0256) (*pData) = UARTTxBuff[UARTTxBuffHead];
(0257) )
(0258) return TRUE;
1A7 E001 LDI R16,1
1A8 9508 RET
(0259) }
(0260)
(0261) /***********************************************************
(0262) * 函数说明:向通讯输出缓冲区添加数据函数 *
(0263) * 输入: 需要发送的数据 *
(0264) * 输出: 无 *
(0265) * 调用函数:无 *
(0266) ***********************************************************/
(0267) BOOL UARTaddDataToTxBuff(uint8 Data)
(0268) {
(0269)
(0270) SAFE_CODE_PERFORMANCE
_UARTaddDataToTxBuff:
Data --> R16
1A9 94F8 BCLR 7
1AA 9020 010A LDS R2,UARTTxBuffTail
1AC 9030 010B LDS R3,UARTTxBuffTail+1
1AE 9040 0108 LDS R4,RD_UseSerialBuff.c:UARTTxBuffHead
1B0 9050 0109 LDS R5,RD_UseSerialBuff.c:UARTTxBuffHead+1
1B2 1442 CP R4,R2
1B3 0453 CPC R5,R3
1B4 F459 BNE 0x01C0
1B5 9180 010C LDS R24,RD_UseSerialBuff.c:UARTTxBuffCounter
1B7 9190 010D LDS R25,RD_UseSerialBuff.c:UARTTxBuffCounter+1
1B9 3880 CPI R24,0x80
1BA E0E0 LDI R30,0
1BB 079E CPC R25,R30
1BC F419 BNE 0x01C0
1BD 9478 BSET 7
1BE 2700 CLR R16
1BF C029 RJMP 0x01E9
1C0 9020 010A LDS R2,UARTTxBuffTail
1C2 9030 010B LDS R3,UARTTxBuffTail+1
1C4 01C1 MOVW R24,R2
1C5 9601 ADIW R24,1
1C6 9390 010B STS UARTTxBuffTail+1,R25
1C8 9380 010A STS UARTTxBuffTail,R24
1CA E189 LDI R24,0x19
1CB E091 LDI R25,1
1CC 01F1 MOVW R30,R2
1CD 0FE8 ADD R30,R24
1CE 1FF9 ADC R31,R25
1CF 8300 STD Z+0,R16
1D0 9180 010C LDS R24,RD_UseSerialBuff.c:UARTTxBuffCounter
1D2 9190 010D LDS R25,RD_UseSerialBuff.c:UARTTxBuffCounter+1
1D4 9601 ADIW R24,1
1D5 9390 010D STS RD_UseSerialBuff.c:UARTTxBuffCounter+1,R25
1D7 9380 010C STS RD_UseSerialBuff.c:UARTTxBuffCounter,R24
1D9 9180 010A LDS R24,UARTTxBuffTail
1DB 9190 010B LDS R25,UARTTxBuffTail+1
1DD 3880 CPI R24,0x80
1DE E0E0 LDI R30,0
1DF 079E CPC R25,R30
1E0 F431 BNE 0x01E7
1E1 2422 CLR R2
1E2 2433 CLR R3
1E3 9230 010B STS UARTTxBuffTail+1,R3
1E5 9220 010A STS UARTTxBuffTail,R2
1E7 9478 BSET 7
(0271) (
(0272) if ((UARTTxBuffHead == UARTTxBuffTail)
(0273) && (UARTTxBuffCounter == SERIAL_TX_BUFF_SIZE))
(0274) {
(0275) SEI();
(0276) return FALSE;
(0277) }
(0278) UARTTxBuff[UARTTxBuffTail++] = Data;
(0279)
(0280) UARTTxBuffCounter ++;
(0281)
(0282) if (UARTTxBuffTail == SERIAL_TX_BUFF_SIZE)
(0283) {
(0284) UARTTxBuffTail = 0;
(0285) }
(0286) )
(0287) return TRUE;
1E8 E001 LDI R16,1
1E9 9508 RET
_PROC_Serial_Transmitter:
cTransmitByte --> Y,+0
1EA 9721 SBIW R28,1
(0288) }
(0289)
(0290) #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
(0291) /***********************************************************
(0292) * 函数说明:串行发送进程 *
(0293) * 输入: 无 *
(0294) * 输出: 是否继续执行 *
(0295) * 调用函数:UARTgetDataFromTxBuff() *
(0296) ***********************************************************/
(0297) BOOL PROC_Serial_Transmitter(void)
(0298) {
(0299) uint8 cTransmitByte = 0;
1EB 2422 CLR R2
1EC 8228 STD Y+0,R2
(0300)
(0301) SAFE_CODE_PERFORMANCE
1ED 94F8 BCLR 7
1EE 9020 010E LDS R2,g_bIfSerialTransmitCompleted
1F0 2022 TST R2
1F1 F069 BEQ 0x01FF
1F2 018E MOVW R16,R28
1F3 DF4D RCALL _UARTgetDataFromTxBuff
1F4 2300 TST R16
1F5 F419 BNE 0x01F9
1F6 9478 BSET 7
1F7 E001 LDI R16,1
1F8 C008 RJMP 0x0201
1F9 2422 CLR R2
1FA 9220 010E STS g_bIfSerialTransmitCompleted,R2
1FC 8028 LDD R2,Y+0
1FD 9220 00C6 STS 0x00C6,R2
1FF 9478 BSET 7
(0302) (
(0303) if (g_bIfSerialTransmitCompleted)
(0304) {
(0305) if (!UARTgetDataFromTxBuff(&cTransmitByte))
(0306) {
(0307) SEI();
(0308) SERIAL_DISABLE_WRITE
(0309) return TRUE;
(0310) }
(0311) else
(0312) {
(0313) SERIAL_ENABLE_WRITE
(0314) }
(0315) g_bIfSerialTransmitCompleted = FALSE;
(0316) UDR_PORT = cTransmitByte;
(0317) }
(0318) )
(0319)
(0320) return TRUE;
200 E001 LDI R16,1
201 9621 ADIW R28,1
202 9508 RET
FILE: H:\单片机\工程模板\Project_Template_With_Schedule_And_COM_Interface\HD_Support.c
(0001) /***********************************************************
(0002) * 函数库说明:底层硬件初始化函数库 *
(0003) * 版本: *
(0004) * 作者: *
(0005) * 创建日期: *
(0006) * -------------------------------------------------------- *
(0007) * [硬件说明] *
(0008) * 处理器: *
(0009) * 系统时钟: *
(0010) * -------------------------------------------------------- *
(0011) * [支 持 库] *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -