📄 rd_useserialbuff.lis
字号:
01F0 ; cflags0 -> R10
01F0 ; pData -> R16,R17
.even
01F0 _UARTPeekDataFromTxBuff::
01F0 AA92 st -y,R10
01F2 .dbline -1
01F2 .dbline 247
01F2 ; }
01F2 ;
01F2 ; /***********************************************************
01F2 ; * 函数说明:首数据察看函数 *
01F2 ; * 输入: 存储数据地址的指针 *
01F2 ; * 输出: 取值是否成功 *
01F2 ; * 调用函数:五 *
01F2 ; ***********************************************************/
01F2 ; BOOL UARTPeekDataFromTxBuff(uint8 *pData)
01F2 ; {
01F2 .dbline 248
01F2 ; SAFE_CODE_PERFORMANCE
01F2 .dbline 248
01F2 AFB6 in R10,0x3f
01F4 .dbline 248
01F4 F894 cli
01F6 .dbline 248
01F6 20900800 lds R2,_UARTTxBuffTail
01FA 30900900 lds R3,_UARTTxBuffTail+1
01FE 40900600 lds R4,_UARTTxBuffHead
0202 50900700 lds R5,_UARTTxBuffHead+1
0206 4214 cp R4,R2
0208 5304 cpc R5,R3
020A 59F4 brne L20
020C X11:
020C 20900A00 lds R2,_UARTTxBuffCounter
0210 30900B00 lds R3,_UARTTxBuffCounter+1
0214 2220 tst R2
0216 29F4 brne L20
0218 3320 tst R3
021A 19F4 brne L20
021C X12:
021C .dbline 248
021C .dbline 248
021C 7894 sei
021E .dbline 248
021E 0027 clr R16
0220 0DC0 rjmp L19
0222 L20:
0222 .dbline 248
0222 80E0 ldi R24,<_UARTTxBuff
0224 90E0 ldi R25,>_UARTTxBuff
0226 E0910600 lds R30,_UARTTxBuffHead
022A F0910700 lds R31,_UARTTxBuffHead+1
022E E80F add R30,R24
0230 F91F adc R31,R25
0232 2080 ldd R2,z+0
0234 F801 movw R30,R16
0236 2082 std z+0,R2
0238 .dbline 248
0238 .dbline 248
0238 AFBE out 0x3f,R10
023A .dbline 248
023A .dbline 258
023A ; (
023A ; if ((UARTTxBuffHead == UARTTxBuffTail)
023A ; && (UARTTxBuffCounter == 0))
023A ; {
023A ; SEI();
023A ; return FALSE;
023A ; }
023A ; (*pData) = UARTTxBuff[UARTTxBuffHead];
023A ; )
023A ; return TRUE;
023A 01E0 ldi R16,1
023C .dbline -2
023C L19:
023C .dbline 0 ; func end
023C A990 ld R10,y+
023E 0895 ret
0240 .dbsym r cflags0 10 c
0240 .dbsym r pData 16 pc
0240 .dbend
0240 .dbfunc e UARTaddDataToTxBuff _UARTaddDataToTxBuff fc
0240 ; cflags0 -> R10
0240 ; Data -> R16
.even
0240 _UARTaddDataToTxBuff::
0240 AA92 st -y,R10
0242 .dbline -1
0242 .dbline 268
0242 ; }
0242 ;
0242 ; /***********************************************************
0242 ; * 函数说明:向通讯输出缓冲区添加数据函数 *
0242 ; * 输入: 需要发送的数据 *
0242 ; * 输出: 无 *
0242 ; * 调用函数:无 *
0242 ; ***********************************************************/
0242 ; BOOL UARTaddDataToTxBuff(uint8 Data)
0242 ; {
0242 .dbline 270
0242 ;
0242 ; SAFE_CODE_PERFORMANCE
0242 .dbline 270
0242 AFB6 in R10,0x3f
0244 .dbline 270
0244 F894 cli
0246 .dbline 270
0246 20900800 lds R2,_UARTTxBuffTail
024A 30900900 lds R3,_UARTTxBuffTail+1
024E 40900600 lds R4,_UARTTxBuffHead
0252 50900700 lds R5,_UARTTxBuffHead+1
0256 4214 cp R4,R2
0258 5304 cpc R5,R3
025A 59F4 brne L23
025C X13:
025C 80910A00 lds R24,_UARTTxBuffCounter
0260 90910B00 lds R25,_UARTTxBuffCounter+1
0264 8034 cpi R24,64
0266 E0E0 ldi R30,0
0268 9E07 cpc R25,R30
026A 19F4 brne L23
026C X14:
026C .dbline 270
026C .dbline 270
026C 7894 sei
026E .dbline 270
026E 0027 clr R16
0270 29C0 rjmp L22
0272 L23:
0272 .dbline 270
0272 20900800 lds R2,_UARTTxBuffTail
0276 30900900 lds R3,_UARTTxBuffTail+1
027A C101 movw R24,R2
027C 0196 adiw R24,1
027E 90930900 sts _UARTTxBuffTail+1,R25
0282 80930800 sts _UARTTxBuffTail,R24
0286 80E0 ldi R24,<_UARTTxBuff
0288 90E0 ldi R25,>_UARTTxBuff
028A F101 movw R30,R2
028C E80F add R30,R24
028E F91F adc R31,R25
0290 0083 std z+0,R16
0292 .dbline 270
0292 80910A00 lds R24,_UARTTxBuffCounter
0296 90910B00 lds R25,_UARTTxBuffCounter+1
029A 0196 adiw R24,1
029C 90930B00 sts _UARTTxBuffCounter+1,R25
02A0 80930A00 sts _UARTTxBuffCounter,R24
02A4 .dbline 270
02A4 80910800 lds R24,_UARTTxBuffTail
02A8 90910900 lds R25,_UARTTxBuffTail+1
02AC 8034 cpi R24,64
02AE E0E0 ldi R30,0
02B0 9E07 cpc R25,R30
02B2 31F4 brne L25
02B4 X15:
02B4 .dbline 270
02B4 .dbline 270
02B4 2224 clr R2
02B6 3324 clr R3
02B8 30920900 sts _UARTTxBuffTail+1,R3
02BC 20920800 sts _UARTTxBuffTail,R2
02C0 .dbline 270
02C0 L25:
02C0 .dbline 270
02C0 .dbline 270
02C0 AFBE out 0x3f,R10
02C2 .dbline 270
02C2 .dbline 287
02C2 ; (
02C2 ; if ((UARTTxBuffHead == UARTTxBuffTail)
02C2 ; && (UARTTxBuffCounter == SERIAL_TX_BUFF_SIZE))
02C2 ; {
02C2 ; SEI();
02C2 ; return FALSE;
02C2 ; }
02C2 ; UARTTxBuff[UARTTxBuffTail++] = Data;
02C2 ;
02C2 ; UARTTxBuffCounter ++;
02C2 ;
02C2 ; if (UARTTxBuffTail == SERIAL_TX_BUFF_SIZE)
02C2 ; {
02C2 ; UARTTxBuffTail = 0;
02C2 ; }
02C2 ; )
02C2 ; return TRUE;
02C2 01E0 ldi R16,1
02C4 .dbline -2
02C4 L22:
02C4 .dbline 0 ; func end
02C4 A990 ld R10,y+
02C6 0895 ret
02C8 .dbsym r cflags0 10 c
02C8 .dbsym r Data 16 c
02C8 .dbend
02C8 .dbfunc e PROC_Serial_Transmitter _PROC_Serial_Transmitter fc
02C8 ; cflags0 -> R10
02C8 ; cTransmitByte -> y+0
.even
02C8 _PROC_Serial_Transmitter::
02C8 AA92 st -y,R10
02CA 2197 sbiw R28,1
02CC .dbline -1
02CC .dbline 298
02CC ; }
02CC ;
02CC ; #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
02CC ; /***********************************************************
02CC ; * 函数说明:串行发送进程 *
02CC ; * 输入: 无 *
02CC ; * 输出: 是否继续执行 *
02CC ; * 调用函数:UARTgetDataFromTxBuff() *
02CC ; ***********************************************************/
02CC ; BOOL PROC_Serial_Transmitter(void)
02CC ; {
02CC .dbline 299
02CC ; uint8 cTransmitByte = 0;
02CC 2224 clr R2
02CE 2882 std y+0,R2
02D0 .dbline 301
02D0 ;
02D0 ; SAFE_CODE_PERFORMANCE
02D0 .dbline 301
02D0 AFB6 in R10,0x3f
02D2 .dbline 301
02D2 F894 cli
02D4 .dbline 301
02D4 20900C00 lds R2,_g_bIfSerialTransmitCompleted
02D8 2220 tst R2
02DA 69F0 breq L28
02DC X16:
02DC .dbline 301
02DC .dbline 301
02DC 8E01 movw R16,R28
02DE 42DF rcall _UARTgetDataFromTxBuff
02E0 0023 tst R16
02E2 19F4 brne L30
02E4 X17:
02E4 .dbline 301
02E4 .dbline 301
02E4 AFBE out 0x3f,R10
02E6 .dbline 301
02E6 01E0 ldi R16,1
02E8 08C0 rjmp L27
02EA L30:
02EA .dbline 301
02EA .dbline 301
02EA .dbline 301
02EA 2224 clr R2
02EC 20920C00 sts _g_bIfSerialTransmitCompleted,R2
02F0 .dbline 301
02F0 2880 ldd R2,y+0
02F2 2092C600 sts 198,R2
02F6 .dbline 301
02F6 L28:
02F6 .dbline 301
02F6 .dbline 301
02F6 AFBE out 0x3f,R10
02F8 .dbline 301
02F8 .dbline 321
02F8 ; (
02F8 ; if (g_bIfSerialTransmitCompleted)
02F8 ; {
02F8 ; if (!UARTgetDataFromTxBuff(&cTransmitByte))
02F8 ; {
02F8 ; EXIT_SAFE_CODE
02F8 ; SERIAL_DISABLE_WRITE
02F8 ; return TRUE;
02F8 ; }
02F8 ; else
02F8 ; {
02F8 ; SERIAL_ENABLE_WRITE
02F8 ; }
02F8 ; g_bIfSerialTransmitCompleted = FALSE;
02F8 ; UDR_PORT = cTransmitByte;
02F8 ; }
02F8 ; )
02F8 ;
02F8 ;
02F8 ; return TRUE;
02F8 01E0 ldi R16,1
02FA .dbline -2
02FA L27:
02FA .dbline 0 ; func end
02FA 2196 adiw R28,1
02FC A990 ld R10,y+
02FE 0895 ret
0300 .dbsym r cflags0 10 c
0300 .dbsym l cTransmitByte 0 c
0300 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块测试版\Relative_Locate_Module\RD_UseSerialBuff.c
0000 _UARTTxBuff:
0000 .blkb 64
0040 .dbsym s UARTTxBuff _UARTTxBuff A[64:64]c
0040 _UARTRxBuff:
0040 .blkb 32
0060 .dbsym s UARTRxBuff _UARTRxBuff A[32:32]c
0060 ; }
0060 ; #endif
0060 ;
0060 ; #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -