📄 rd_useserialbuff.s
字号:
.dbline 189
L12:
.dbline 189
.dbline 189
out 0x3f,R10
.dbline 189
.dbline 206
; (
; if ((UARTRxBuffHead == UARTRxBuffTail)
; && (UARTRxBuffCounter == SERIAL_RX_BUFF_SIZE))
; {
; SEI();
; return FALSE;
; }
; UARTRxBuff[UARTRxBuffTail++] = Data;
;
; UARTRxBuffCounter++;
;
; if (UARTRxBuffTail == SERIAL_RX_BUFF_SIZE)
; {
; UARTRxBuffTail = 0;
; }
; )
; return TRUE;
ldi R16,1
.dbline -2
L9:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r cflags0 10 c
.dbsym r Data 16 c
.dbend
.dbfunc e UARTgetDataFromTxBuff _UARTgetDataFromTxBuff fc
; cflags0 -> R10
; Data -> R16,R17
.even
_UARTgetDataFromTxBuff::
st -y,R10
.dbline -1
.dbline 218
; }
; #endif
;
; #ifdef _USE_SERIAL_TX_BUFF
; /***********************************************************
; * 函数说明:发送中断取值函数 *
; * 输入: 存储取出数据地址的指针 *
; * 输出: 取值是否成功 *
; * 调用函数:无 *
; ***********************************************************/
; BOOL UARTgetDataFromTxBuff(uint8 *Data)
; {
.dbline 220
;
; SAFE_CODE_PERFORMANCE
.dbline 220
in R10,0x3f
.dbline 220
cli
.dbline 220
lds R2,_UARTTxBuffTail
lds R3,_UARTTxBuffTail+1
lds R4,_UARTTxBuffHead
lds R5,_UARTTxBuffHead+1
cp R4,R2
cpc R5,R3
brne L15
X8:
lds R2,_UARTTxBuffCounter
lds R3,_UARTTxBuffCounter+1
tst R2
brne L15
tst R3
brne L15
X9:
.dbline 220
.dbline 220
sei
.dbline 220
clr R16
rjmp L14
L15:
.dbline 220
lds R2,_UARTTxBuffHead
lds R3,_UARTTxBuffHead+1
movw R24,R2
adiw R24,1
sts _UARTTxBuffHead+1,R25
sts _UARTTxBuffHead,R24
ldi R24,<_UARTTxBuff
ldi R25,>_UARTTxBuff
movw R30,R2
add R30,R24
adc R31,R25
ldd R2,z+0
movw R30,R16
std z+0,R2
.dbline 220
lds R24,_UARTTxBuffCounter
lds R25,_UARTTxBuffCounter+1
sbiw R24,1
sts _UARTTxBuffCounter+1,R25
sts _UARTTxBuffCounter,R24
.dbline 220
lds R24,_UARTTxBuffHead
lds R25,_UARTTxBuffHead+1
cpi R24,64
ldi R30,0
cpc R25,R30
brne L17
X10:
.dbline 220
.dbline 220
clr R2
clr R3
sts _UARTTxBuffHead+1,R3
sts _UARTTxBuffHead,R2
.dbline 220
L17:
.dbline 220
.dbline 220
out 0x3f,R10
.dbline 220
.dbline 237
; (
; if ((UARTTxBuffHead == UARTTxBuffTail)
; && (UARTTxBuffCounter == 0))
; {
; SEI();
; return FALSE;
; }
; (*Data) = UARTTxBuff[UARTTxBuffHead++];
;
; UARTTxBuffCounter--;
;
; if (UARTTxBuffHead == SERIAL_TX_BUFF_SIZE)
; {
; UARTTxBuffHead = 0;
; }
; )
; return TRUE;
ldi R16,1
.dbline -2
L14:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r cflags0 10 c
.dbsym r Data 16 pc
.dbend
.dbfunc e UARTPeekDataFromTxBuff _UARTPeekDataFromTxBuff fc
; cflags0 -> R10
; pData -> R16,R17
.even
_UARTPeekDataFromTxBuff::
st -y,R10
.dbline -1
.dbline 247
; }
;
; /***********************************************************
; * 函数说明:首数据察看函数 *
; * 输入: 存储数据地址的指针 *
; * 输出: 取值是否成功 *
; * 调用函数:五 *
; ***********************************************************/
; BOOL UARTPeekDataFromTxBuff(uint8 *pData)
; {
.dbline 248
; SAFE_CODE_PERFORMANCE
.dbline 248
in R10,0x3f
.dbline 248
cli
.dbline 248
lds R2,_UARTTxBuffTail
lds R3,_UARTTxBuffTail+1
lds R4,_UARTTxBuffHead
lds R5,_UARTTxBuffHead+1
cp R4,R2
cpc R5,R3
brne L20
X11:
lds R2,_UARTTxBuffCounter
lds R3,_UARTTxBuffCounter+1
tst R2
brne L20
tst R3
brne L20
X12:
.dbline 248
.dbline 248
sei
.dbline 248
clr R16
rjmp L19
L20:
.dbline 248
ldi R24,<_UARTTxBuff
ldi R25,>_UARTTxBuff
lds R30,_UARTTxBuffHead
lds R31,_UARTTxBuffHead+1
add R30,R24
adc R31,R25
ldd R2,z+0
movw R30,R16
std z+0,R2
.dbline 248
.dbline 248
out 0x3f,R10
.dbline 248
.dbline 258
; (
; if ((UARTTxBuffHead == UARTTxBuffTail)
; && (UARTTxBuffCounter == 0))
; {
; SEI();
; return FALSE;
; }
; (*pData) = UARTTxBuff[UARTTxBuffHead];
; )
; return TRUE;
ldi R16,1
.dbline -2
L19:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r cflags0 10 c
.dbsym r pData 16 pc
.dbend
.dbfunc e UARTaddDataToTxBuff _UARTaddDataToTxBuff fc
; cflags0 -> R10
; Data -> R16
.even
_UARTaddDataToTxBuff::
st -y,R10
.dbline -1
.dbline 268
; }
;
; /***********************************************************
; * 函数说明:向通讯输出缓冲区添加数据函数 *
; * 输入: 需要发送的数据 *
; * 输出: 无 *
; * 调用函数:无 *
; ***********************************************************/
; BOOL UARTaddDataToTxBuff(uint8 Data)
; {
.dbline 270
;
; SAFE_CODE_PERFORMANCE
.dbline 270
in R10,0x3f
.dbline 270
cli
.dbline 270
lds R2,_UARTTxBuffTail
lds R3,_UARTTxBuffTail+1
lds R4,_UARTTxBuffHead
lds R5,_UARTTxBuffHead+1
cp R4,R2
cpc R5,R3
brne L23
X13:
lds R24,_UARTTxBuffCounter
lds R25,_UARTTxBuffCounter+1
cpi R24,64
ldi R30,0
cpc R25,R30
brne L23
X14:
.dbline 270
.dbline 270
sei
.dbline 270
clr R16
rjmp L22
L23:
.dbline 270
lds R2,_UARTTxBuffTail
lds R3,_UARTTxBuffTail+1
movw R24,R2
adiw R24,1
sts _UARTTxBuffTail+1,R25
sts _UARTTxBuffTail,R24
ldi R24,<_UARTTxBuff
ldi R25,>_UARTTxBuff
movw R30,R2
add R30,R24
adc R31,R25
std z+0,R16
.dbline 270
lds R24,_UARTTxBuffCounter
lds R25,_UARTTxBuffCounter+1
adiw R24,1
sts _UARTTxBuffCounter+1,R25
sts _UARTTxBuffCounter,R24
.dbline 270
lds R24,_UARTTxBuffTail
lds R25,_UARTTxBuffTail+1
cpi R24,64
ldi R30,0
cpc R25,R30
brne L25
X15:
.dbline 270
.dbline 270
clr R2
clr R3
sts _UARTTxBuffTail+1,R3
sts _UARTTxBuffTail,R2
.dbline 270
L25:
.dbline 270
.dbline 270
out 0x3f,R10
.dbline 270
.dbline 287
; (
; if ((UARTTxBuffHead == UARTTxBuffTail)
; && (UARTTxBuffCounter == SERIAL_TX_BUFF_SIZE))
; {
; SEI();
; return FALSE;
; }
; UARTTxBuff[UARTTxBuffTail++] = Data;
;
; UARTTxBuffCounter ++;
;
; if (UARTTxBuffTail == SERIAL_TX_BUFF_SIZE)
; {
; UARTTxBuffTail = 0;
; }
; )
; return TRUE;
ldi R16,1
.dbline -2
L22:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r cflags0 10 c
.dbsym r Data 16 c
.dbend
.dbfunc e PROC_Serial_Transmitter _PROC_Serial_Transmitter fc
; cflags0 -> R10
; cTransmitByte -> y+0
.even
_PROC_Serial_Transmitter::
st -y,R10
sbiw R28,1
.dbline -1
.dbline 298
; }
;
; #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
; /***********************************************************
; * 函数说明:串行发送进程 *
; * 输入: 无 *
; * 输出: 是否继续执行 *
; * 调用函数:UARTgetDataFromTxBuff() *
; ***********************************************************/
; BOOL PROC_Serial_Transmitter(void)
; {
.dbline 299
; uint8 cTransmitByte = 0;
clr R2
std y+0,R2
.dbline 301
;
; SAFE_CODE_PERFORMANCE
.dbline 301
in R10,0x3f
.dbline 301
cli
.dbline 301
lds R2,_g_bIfSerialTransmitCompleted
tst R2
breq L28
X16:
.dbline 301
.dbline 301
movw R16,R28
rcall _UARTgetDataFromTxBuff
tst R16
brne L30
X17:
.dbline 301
.dbline 301
out 0x3f,R10
.dbline 301
ldi R16,1
rjmp L27
L30:
.dbline 301
.dbline 301
.dbline 301
clr R2
sts _g_bIfSerialTransmitCompleted,R2
.dbline 301
ldd R2,y+0
sts 198,R2
.dbline 301
L28:
.dbline 301
.dbline 301
out 0x3f,R10
.dbline 301
.dbline 321
; (
; if (g_bIfSerialTransmitCompleted)
; {
; if (!UARTgetDataFromTxBuff(&cTransmitByte))
; {
; EXIT_SAFE_CODE
; SERIAL_DISABLE_WRITE
; return TRUE;
; }
; else
; {
; SERIAL_ENABLE_WRITE
; }
; g_bIfSerialTransmitCompleted = FALSE;
; UDR_PORT = cTransmitByte;
; }
; )
;
;
; return TRUE;
ldi R16,1
.dbline -2
L27:
.dbline 0 ; func end
adiw R28,1
ld R10,y+
ret
.dbsym r cflags0 10 c
.dbsym l cTransmitByte 0 c
.dbend
.area bss(ram, con, rel)
.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块测试版\Relative_Locate_Module\RD_UseSerialBuff.c
_UARTTxBuff:
.blkb 64
.dbsym s UARTTxBuff _UARTTxBuff A[64:64]c
_UARTRxBuff:
.blkb 32
.dbsym s UARTRxBuff _UARTRxBuff A[32:32]c
; }
; #endif
;
; #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -