📄 rd_useserialbuff.lis
字号:
008E ; /***********************************************************
008E ; * 函数说明:接收缓冲区首数据察看函数 *
008E ; * 输入: 存储取出数据地址的指针 *
008E ; * 输出: 取值是否成功 *
008E ; * 调用函数:无 *
008E ; ***********************************************************/
008E ; BOOL UARTPeekDataFromRxBuff(uint8 *pData)
008E ; {
008E .dbline 168
008E ; SAFE_CODE_PERFORMANCE
008E .dbline 168
008E AFB6 in R10,0x3f
0090 .dbline 168
0090 F894 cli
0092 .dbline 168
0092 20900200 lds R2,_UARTRxBuffTail
0096 30900300 lds R3,_UARTRxBuffTail+1
009A 40900000 lds R4,_UARTRxBuffHead
009E 50900100 lds R5,_UARTRxBuffHead+1
00A2 4214 cp R4,R2
00A4 5304 cpc R5,R3
00A6 59F4 brne L7
00A8 X3:
00A8 20900400 lds R2,_UARTRxBuffCounter
00AC 30900500 lds R3,_UARTRxBuffCounter+1
00B0 2220 tst R2
00B2 29F4 brne L7
00B4 3320 tst R3
00B6 19F4 brne L7
00B8 X4:
00B8 .dbline 168
00B8 .dbline 168
00B8 7894 sei
00BA .dbline 168
00BA 0027 clr R16
00BC 0DC0 rjmp L6
00BE L7:
00BE .dbline 168
00BE 80E0 ldi R24,<_UARTRxBuff
00C0 90E0 ldi R25,>_UARTRxBuff
00C2 E0910000 lds R30,_UARTRxBuffHead
00C6 F0910100 lds R31,_UARTRxBuffHead+1
00CA E80F add R30,R24
00CC F91F adc R31,R25
00CE 2080 ldd R2,z+0
00D0 F801 movw R30,R16
00D2 2082 std z+0,R2
00D4 .dbline 168
00D4 .dbline 168
00D4 AFBE out 0x3f,R10
00D6 .dbline 168
00D6 .dbline 178
00D6 ; (
00D6 ; if ((UARTRxBuffHead == UARTRxBuffTail)
00D6 ; && (UARTRxBuffCounter == 0))
00D6 ; {
00D6 ; SEI();
00D6 ; return FALSE;
00D6 ; }
00D6 ; (*pData) = UARTRxBuff[UARTRxBuffHead];
00D6 ; )
00D6 ; return TRUE;
00D6 01E0 ldi R16,1
00D8 .dbline -2
00D8 L6:
00D8 .dbline 0 ; func end
00D8 A990 ld R10,y+
00DA 0895 ret
00DC .dbsym r cflags0 10 c
00DC .dbsym r pData 16 pc
00DC .dbend
00DC .dbfunc e UARTaddDataToRxBuff _UARTaddDataToRxBuff fc
00DC ; cflags0 -> R10
00DC ; Data -> R16
.even
00DC _UARTaddDataToRxBuff::
00DC AA92 st -y,R10
00DE .dbline -1
00DE .dbline 188
00DE ; }
00DE ;
00DE ; /***********************************************************
00DE ; * 函数说明:向通讯输入缓冲区添加数据函数 *
00DE ; * 输入: 收到的数据 *
00DE ; * 输出: 无 *
00DE ; * 调用函数:无 *
00DE ; ***********************************************************/
00DE ; BOOL UARTaddDataToRxBuff(uint8 Data)
00DE ; {
00DE .dbline 189
00DE ; SAFE_CODE_PERFORMANCE
00DE .dbline 189
00DE AFB6 in R10,0x3f
00E0 .dbline 189
00E0 F894 cli
00E2 .dbline 189
00E2 20900200 lds R2,_UARTRxBuffTail
00E6 30900300 lds R3,_UARTRxBuffTail+1
00EA 40900000 lds R4,_UARTRxBuffHead
00EE 50900100 lds R5,_UARTRxBuffHead+1
00F2 4214 cp R4,R2
00F4 5304 cpc R5,R3
00F6 59F4 brne L10
00F8 X5:
00F8 80910400 lds R24,_UARTRxBuffCounter
00FC 90910500 lds R25,_UARTRxBuffCounter+1
0100 8032 cpi R24,32
0102 E0E0 ldi R30,0
0104 9E07 cpc R25,R30
0106 19F4 brne L10
0108 X6:
0108 .dbline 189
0108 .dbline 189
0108 7894 sei
010A .dbline 189
010A 0027 clr R16
010C 29C0 rjmp L9
010E L10:
010E .dbline 189
010E 20900200 lds R2,_UARTRxBuffTail
0112 30900300 lds R3,_UARTRxBuffTail+1
0116 C101 movw R24,R2
0118 0196 adiw R24,1
011A 90930300 sts _UARTRxBuffTail+1,R25
011E 80930200 sts _UARTRxBuffTail,R24
0122 80E0 ldi R24,<_UARTRxBuff
0124 90E0 ldi R25,>_UARTRxBuff
0126 F101 movw R30,R2
0128 E80F add R30,R24
012A F91F adc R31,R25
012C 0083 std z+0,R16
012E .dbline 189
012E 80910400 lds R24,_UARTRxBuffCounter
0132 90910500 lds R25,_UARTRxBuffCounter+1
0136 0196 adiw R24,1
0138 90930500 sts _UARTRxBuffCounter+1,R25
013C 80930400 sts _UARTRxBuffCounter,R24
0140 .dbline 189
0140 80910200 lds R24,_UARTRxBuffTail
0144 90910300 lds R25,_UARTRxBuffTail+1
0148 8032 cpi R24,32
014A E0E0 ldi R30,0
014C 9E07 cpc R25,R30
014E 31F4 brne L12
0150 X7:
0150 .dbline 189
0150 .dbline 189
0150 2224 clr R2
0152 3324 clr R3
0154 30920300 sts _UARTRxBuffTail+1,R3
0158 20920200 sts _UARTRxBuffTail,R2
015C .dbline 189
015C L12:
015C .dbline 189
015C .dbline 189
015C AFBE out 0x3f,R10
015E .dbline 189
015E .dbline 206
015E ; (
015E ; if ((UARTRxBuffHead == UARTRxBuffTail)
015E ; && (UARTRxBuffCounter == SERIAL_RX_BUFF_SIZE))
015E ; {
015E ; SEI();
015E ; return FALSE;
015E ; }
015E ; UARTRxBuff[UARTRxBuffTail++] = Data;
015E ;
015E ; UARTRxBuffCounter++;
015E ;
015E ; if (UARTRxBuffTail == SERIAL_RX_BUFF_SIZE)
015E ; {
015E ; UARTRxBuffTail = 0;
015E ; }
015E ; )
015E ; return TRUE;
015E 01E0 ldi R16,1
0160 .dbline -2
0160 L9:
0160 .dbline 0 ; func end
0160 A990 ld R10,y+
0162 0895 ret
0164 .dbsym r cflags0 10 c
0164 .dbsym r Data 16 c
0164 .dbend
0164 .dbfunc e UARTgetDataFromTxBuff _UARTgetDataFromTxBuff fc
0164 ; cflags0 -> R10
0164 ; Data -> R16,R17
.even
0164 _UARTgetDataFromTxBuff::
0164 AA92 st -y,R10
0166 .dbline -1
0166 .dbline 218
0166 ; }
0166 ; #endif
0166 ;
0166 ; #ifdef _USE_SERIAL_TX_BUFF
0166 ; /***********************************************************
0166 ; * 函数说明:发送中断取值函数 *
0166 ; * 输入: 存储取出数据地址的指针 *
0166 ; * 输出: 取值是否成功 *
0166 ; * 调用函数:无 *
0166 ; ***********************************************************/
0166 ; BOOL UARTgetDataFromTxBuff(uint8 *Data)
0166 ; {
0166 .dbline 220
0166 ;
0166 ; SAFE_CODE_PERFORMANCE
0166 .dbline 220
0166 AFB6 in R10,0x3f
0168 .dbline 220
0168 F894 cli
016A .dbline 220
016A 20900800 lds R2,_UARTTxBuffTail
016E 30900900 lds R3,_UARTTxBuffTail+1
0172 40900600 lds R4,_UARTTxBuffHead
0176 50900700 lds R5,_UARTTxBuffHead+1
017A 4214 cp R4,R2
017C 5304 cpc R5,R3
017E 59F4 brne L15
0180 X8:
0180 20900A00 lds R2,_UARTTxBuffCounter
0184 30900B00 lds R3,_UARTTxBuffCounter+1
0188 2220 tst R2
018A 29F4 brne L15
018C 3320 tst R3
018E 19F4 brne L15
0190 X9:
0190 .dbline 220
0190 .dbline 220
0190 7894 sei
0192 .dbline 220
0192 0027 clr R16
0194 2BC0 rjmp L14
0196 L15:
0196 .dbline 220
0196 20900600 lds R2,_UARTTxBuffHead
019A 30900700 lds R3,_UARTTxBuffHead+1
019E C101 movw R24,R2
01A0 0196 adiw R24,1
01A2 90930700 sts _UARTTxBuffHead+1,R25
01A6 80930600 sts _UARTTxBuffHead,R24
01AA 80E0 ldi R24,<_UARTTxBuff
01AC 90E0 ldi R25,>_UARTTxBuff
01AE F101 movw R30,R2
01B0 E80F add R30,R24
01B2 F91F adc R31,R25
01B4 2080 ldd R2,z+0
01B6 F801 movw R30,R16
01B8 2082 std z+0,R2
01BA .dbline 220
01BA 80910A00 lds R24,_UARTTxBuffCounter
01BE 90910B00 lds R25,_UARTTxBuffCounter+1
01C2 0197 sbiw R24,1
01C4 90930B00 sts _UARTTxBuffCounter+1,R25
01C8 80930A00 sts _UARTTxBuffCounter,R24
01CC .dbline 220
01CC 80910600 lds R24,_UARTTxBuffHead
01D0 90910700 lds R25,_UARTTxBuffHead+1
01D4 8034 cpi R24,64
01D6 E0E0 ldi R30,0
01D8 9E07 cpc R25,R30
01DA 31F4 brne L17
01DC X10:
01DC .dbline 220
01DC .dbline 220
01DC 2224 clr R2
01DE 3324 clr R3
01E0 30920700 sts _UARTTxBuffHead+1,R3
01E4 20920600 sts _UARTTxBuffHead,R2
01E8 .dbline 220
01E8 L17:
01E8 .dbline 220
01E8 .dbline 220
01E8 AFBE out 0x3f,R10
01EA .dbline 220
01EA .dbline 237
01EA ; (
01EA ; if ((UARTTxBuffHead == UARTTxBuffTail)
01EA ; && (UARTTxBuffCounter == 0))
01EA ; {
01EA ; SEI();
01EA ; return FALSE;
01EA ; }
01EA ; (*Data) = UARTTxBuff[UARTTxBuffHead++];
01EA ;
01EA ; UARTTxBuffCounter--;
01EA ;
01EA ; if (UARTTxBuffHead == SERIAL_TX_BUFF_SIZE)
01EA ; {
01EA ; UARTTxBuffHead = 0;
01EA ; }
01EA ; )
01EA ; return TRUE;
01EA 01E0 ldi R16,1
01EC .dbline -2
01EC L14:
01EC .dbline 0 ; func end
01EC A990 ld R10,y+
01EE 0895 ret
01F0 .dbsym r cflags0 10 c
01F0 .dbsym r Data 16 pc
01F0 .dbend
01F0 .dbfunc e UARTPeekDataFromTxBuff _UARTPeekDataFromTxBuff fc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -