⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rd_useserialbuff.s

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 S
📖 第 1 页 / 共 2 页
字号:
	.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 + -