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