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

📄 communication_lib.s

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module Communication_LIB.c
	.area text(rom, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\Communication_LIB.c
	.dbfunc e MSG_Map_LocateModuleShell_INIT _MSG_Map_LocateModuleShell_INIT fV
	.dbstruct 0 3 MsgMapItem
	.dbfield 0 cCMD c
	.dbfield 1 pMsgFunc pfc
	.dbend
	.dbstruct 0 3 MsgMap
	.dbfield 0 cItemCount c
	.dbfield 1 pMsgItems pS[MsgMapItem]
	.dbend
;        pMsgMap -> R18,R19
;           Reg2 -> R10,R11
;          Reg14 -> R16,R17
;             n3 -> R16
;             n1 -> R16
	.even
_MSG_Map_LocateModuleShell_INIT::
	st -y,R10
	st -y,R11
	.dbline -1
	.dbline 79
; /***********************************************************
; *   函数库说明:模块通讯函数库                             *
; *   版本:                                                 *
; *   作者:                                                 *
; *   创建日期:                                             *
; * -------------------------------------------------------- *
; *  [硬件说明]                                              *
; *   处理器:                                               *
; *   系统时钟:                                             *
; * -------------------------------------------------------- *
; *  [支 持 库]                                              *
; *   库名称:                                               *
; *   需要版本:                                             *
; *   支持库说明:                                           *
; * -------------------------------------------------------- *
; *  [版本更新]                                              *
; *   修改:                                                 *
; *   修改日期:                                             *
; *   版本:                                                 *
; * -------------------------------------------------------- *
; *  [版本历史]                                              *
; * -------------------------------------------------------- *
; *  [使用说明]                                              *
; ***********************************************************/
; 
; /********************
; * 头 文 件 配 置 区 *
; ********************/
; # include "RD_MacroAndConst.h"
; # include "LIB_Config.h"
; # include "PF_Config.h"
; # include "RD_ADT_Queue.h"
; # include "RD_ADT_MSGMap.h"
; # include "RD_UseSerialFrame_PROC.h"
; # include "Communication_LIB.h"
; # include "math.h"
; 
; /********************
; *   系 统 宏 定 义  *
; ********************/
; 
; /*------------------*
; *   常 数 宏 定 义  *
; *------------------*/
; 
; 
; /*------------------*
; *   动 作 宏 定 义  *
; *------------------*/
; 
; /********************
; *  模块结构体定义区 *
; ********************/
; 
; /********************
; *   函 数 声 明 区  *
; ********************/
; void Communication_INIT(void);
; BOOL PROC_Shell(void);
; BOOL Send_MSG(uint8 cCMD,uint8 *pData,uint8 Length);
; /********************
; *   模块函数声明区  *
; ********************/
; static BOOL MSGMap_Set(MSG_ITEM *pMsgItem);
; static BOOL MSGMap_Acknowledge(MSG_ITEM *pMsgItem);
; static BOOL MSGMap_OptionSet(MSG_ITEM *pMsgItem);
; /********************
; *   模块变量声明区  *
; ********************/
; 
; /********************
; *   全局变量声明区  *
; ********************/
; 
; 
; /********************
; *  自定义数据类型区 *
; ********************/
; START_DEFINE_MSG_MAP(LocateModuleShell,2)
	.dbline 79
	.dbline 79
	ldi R18,<_MSGMapLocateModuleShell
	ldi R19,>_MSGMapLocateModuleShell
	.dbline 79
	ldi R24,<_MSGMapLocateModuleShellItemArray
	ldi R25,>_MSGMapLocateModuleShellItemArray
	movw R30,R18
	std z+2,R25
	std z+1,R24
	.dbline 79
	ldi R24,2
	std z+0,R24
	.dbline 79
	clr R16
	rjmp L5
L2:
	.dbline 79
	.dbline 79
	ldi R24,3
	mul R24,R16
	movw R10,R0
	ldi R24,<_MSGMapLocateModuleShellItemArray
	ldi R25,>_MSGMapLocateModuleShellItemArray
	movw R30,R10
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 79
	ldi R24,<_MSGMapLocateModuleShellItemArray+1
	ldi R25,>_MSGMapLocateModuleShellItemArray+1
	movw R30,R10
	add R30,R24
	adc R31,R25
	ldi R24,<PL_MSG_NULL_PROC
	ldi R25,>PL_MSG_NULL_PROC
	std z+1,R25
	std z+0,R24
	.dbline 79
L3:
	.dbline 79
	inc R16
L5:
	.dbline 79
	cpi R16,2
	brlo L2
X0:
	.dbline 79
	clr R16
	.dbline 80
;     ADD_NEW_MSG_MAP_ITEM(COM_CMD_SET,MSGMap_Set)
	movw R30,R18
	ldd R2,z+0
	cp R16,R2
	brsh L7
X1:
	.dbline 80
	.dbline 80
	clr R4
	clr R5
	ldd R2,z+1
	ldd R3,z+2
	movw R30,R4
	add R30,R2
	adc R31,R3
	ldi R24,161
	std z+0,R24
	.dbline 80
	movw R30,R18
	ldd R2,z+1
	ldd R3,z+2
	movw R30,R4
	add R30,R2
	adc R31,R3
	ldi R24,<PL_MSGMap_Set
	ldi R25,>PL_MSGMap_Set
	std z+2,R25
	std z+1,R24
	.dbline 80
	ldi R16,1
	.dbline 80
L7:
	.dbline 81
;     ADD_NEW_MSG_MAP_ITEM(COM_CMD_ACK,MSGMap_Acknowledge)
	movw R30,R18
	ldd R2,z+0
	cp R16,R2
	brsh L9
X2:
	.dbline 81
	.dbline 81
	ldi R24,3
	mul R24,R16
	movw R16,R0
	ldd R2,z+1
	ldd R3,z+2
	movw R30,R16
	add R30,R2
	adc R31,R3
	ldi R24,172
	std z+0,R24
	.dbline 81
	movw R30,R18
	ldd R2,z+1
	ldd R3,z+2
	movw R30,R16
	add R30,R2
	adc R31,R3
	ldi R24,<PL_MSGMap_Acknowledge
	ldi R25,>PL_MSGMap_Acknowledge
	std z+2,R25
	std z+1,R24
	.dbline 81
	.dbline 81
L9:
	.dbline -2
L1:
	.dbline 0 ; func end
	ld R11,y+
	ld R10,y+
	ret
	.dbsym r pMsgMap 18 pS[MsgMap]
	.dbsym r Reg2 10 S
	.dbsym r Reg14 16 S
	.dbsym r n3 16 c
	.dbsym r n1 16 c
	.dbend
	.dbfunc e SFP_LocateModuleShell_INIT _SFP_LocateModuleShell_INIT fV
	.dbstruct 0 18 AbstructDataTypeQueue
	.dbfield 0 pBuffer pc
	.dbfield 2 nSize i
	.dbfield 4 nHead i
	.dbfield 6 nTail i
	.dbfield 8 nCount i
	.dbfield 10 fnAddToBuffer pfc
	.dbfield 12 fnGetFromBuffer pfc
	.dbfield 14 fnCheckEmpty pfc
	.dbfield 16 fnPeekFromBuffer pfc
	.dbend
	.dbstruct 0 4 MsgItem
	.dbfield 0 cCMD c
	.dbfield 1 cDataLength c
	.dbfield 2 pData pc
	.dbend
	.dbstruct 0 37 SerialFrameProcess
	.dbfield 0 FrameBuffer S[AbstructDataTypeQueue]
	.dbfield 18 pMsgMap pS[MsgMap]
	.dbfield 20 MsgItem S[MsgItem]
	.dbfield 24 cHeadByte c
	.dbfield 25 cEndByte c
	.dbfield 26 cFixLength c
	.dbfield 27 cAddress c
	.dbfield 28 InputDataFunc pfc
	.dbfield 30 OutputDataFunc pfc
	.dbfield 32 PeekDataFunc pfc
	.dbfield 34 cActionFlag c
	.dbfield 35 cXORCheck c
	.dbfield 36 cFrameSize c
	.dbend
;           pSFP -> R16,R17
	.even
_SFP_LocateModuleShell_INIT::
	.dbline -1
	.dbline 84
; END_DEFINE_MSG_MAP
; 
; START_DEFINE_SERIAL_FRAME_PROCESS(LocateModuleShell,32,MSG_MAP(LocateModuleShell))
	.dbline 84
	ldi R16,<_SFPLocateModuleShell
	ldi R17,>_SFPLocateModuleShell
	.dbline 84
	ldi R24,<_MSGMapLocateModuleShell
	ldi R25,>_MSGMapLocateModuleShell
	movw R30,R16
	std z+19,R25
	std z+18,R24
	.dbline 84
	.dbline 84
	ldi R24,<_SFPLocateModuleShellBuffer
	ldi R25,>_SFPLocateModuleShellBuffer
	sts _SFPLocateModuleShell+1,R25
	sts _SFPLocateModuleShell,R24
	.dbline 84
	ldi R24,32
	ldi R25,0
	sts _SFPLocateModuleShell+2+1,R25
	sts _SFPLocateModuleShell+2,R24
	.dbline 84
	clr R2
	clr R3
	sts _SFPLocateModuleShell+4+1,R3
	sts _SFPLocateModuleShell+4,R2
	.dbline 84
	sts _SFPLocateModuleShell+6+1,R3
	sts _SFPLocateModuleShell+6,R2
	.dbline 84
	sts _SFPLocateModuleShell+8+1,R3
	sts _SFPLocateModuleShell+8,R2
	.dbline 84
	ldi R24,<PL_ADT_Queue_Add_To_Buffer
	ldi R25,>PL_ADT_Queue_Add_To_Buffer
	sts _SFPLocateModuleShell+10+1,R25
	sts _SFPLocateModuleShell+10,R24
	.dbline 84
	ldi R24,<PL_ADT_Queue_Get_From_Buffer
	ldi R25,>PL_ADT_Queue_Get_From_Buffer
	sts _SFPLocateModuleShell+12+1,R25
	sts _SFPLocateModuleShell+12,R24
	.dbline 84
	ldi R24,<PL_ADT_Queue_Check_Empty
	ldi R25,>PL_ADT_Queue_Check_Empty
	sts _SFPLocateModuleShell+14+1,R25
	sts _SFPLocateModuleShell+14,R24
	.dbline 84
	ldi R24,<PL_ADT_Queue_Peek_From_Buffer
	ldi R25,>PL_ADT_Queue_Peek_From_Buffer
	sts _SFPLocateModuleShell+16+1,R25
	sts _SFPLocateModuleShell+16,R24
	.dbline 84
	.dbline 84
	ldi R24,<_SFPLocateModuleShellMsgItem
	ldi R25,>_SFPLocateModuleShellMsgItem
	std z+23,R25
	std z+22,R24
	.dbline 84
	ldi R24,170
	std z+24,R24
	.dbline 84
	ldi R24,85
	std z+25,R24
	.dbline 84
	std z+26,R2
	.dbline 84
	std z+27,R2
	.dbline 84
	std z+34,R2
	.dbline 84
	std z+35,R2
	.dbline 84
	std z+36,R2
	.dbline 84
	ldi R24,<PL_SFP_NULL_Input_Data_Function
	ldi R25,>PL_SFP_NULL_Input_Data_Function
	std z+29,R25
	std z+28,R24
	.dbline 84
	ldi R24,<PL_SFP_NULL_Output_Data_Function
	ldi R25,>PL_SFP_NULL_Output_Data_Function
	std z+31,R25
	std z+30,R24
	.dbline 84
	ldi R24,<PL_SFP_NULL_Peek_Data_Function
	ldi R25,>PL_SFP_NULL_Peek_Data_Function
	std z+33,R25
	std z+32,R24
	.dbline 85
;     SET_INPUT_DATA_FUNCTION(UARTgetDataFromRxBuff)
	ldi R24,<PL_UARTgetDataFromRxBuff
	ldi R25,>PL_UARTgetDataFromRxBuff
	std z+29,R25
	std z+28,R24
	.dbline 86
;     SET_OUTPUT_DATA_FUNCTION(UARTaddDataToTxBuff)
	ldi R24,<PL_UARTaddDataToTxBuff
	ldi R25,>PL_UARTaddDataToTxBuff
	std z+31,R25
	std z+30,R24
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbsym r pSFP 16 pS[SerialFrameProcess]
	.dbend
	.dbfunc e Send_MSG _Send_MSG fc
;         Length -> y+7
;          pData -> R12,R13
;           cCMD -> R10
	.even
_Send_MSG::
	rcall push_xgset003C
	movw R12,R18
	mov R10,R16
	sbiw R28,3
	.dbline -1
	.dbline 96
; END_DEFINE_SERIAL_FRAME_PROCESS
; 
; /***********************************************************
; *   函数说明:消息发送函数                                 *
; *   输入:    指令,要发送的数据,数据的长度               *
; *   输出:    指令是否发送成功                             *
; *   调用函数:SPF_Send_MSG()                               *
; ***********************************************************/
; BOOL Send_MSG(uint8 cCMD,uint8 *pData,uint8 Length)
; {
	.dbline 97
;     return SPF_Send_MSG
	ldd R0,y+7
	std y+2,R0
	std y+1,R13
	std y+0,R12
	mov R18,R10
	ldi R16,<_SFPLocateModuleShell
	ldi R17,>_SFPLocateModuleShell
	rcall _SPF_Send_MSG
	.dbline -2
L20:
	.dbline 0 ; func end
	adiw R28,3
	rjmp pop_xgset003C
	.dbsym l Length 7 c
	.dbsym r pData 12 pc
	.dbsym r cCMD 10 c
	.dbend
	.dbfunc e Communication_INIT _Communication_INIT fV
	.even
_Communication_INIT::
	.dbline -1
	.dbline 113
;         (
;             &SERIAL_FRAME_PROC(LocateModuleShell),
;             cCMD,
;             pData,
;             Length
;         );
; }
; 
; /***********************************************************
; *   函数说明:通讯层初始化函数                             *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:无                                           *
; ***********************************************************/
; void Communication_INIT(void)
; {
	.dbline 114
;     INIT_MSG_MAP(LocateModuleShell);
	rcall _MSG_Map_LocateModuleShell_INIT
	.dbline 114
	.dbline 115
;     INIT_SERIAL_FRAME_PROCESS(LocateModuleShell);
	.dbline 115
	.dbline -2
L21:
	.dbline 0 ; func end
	rjmp _SFP_LocateModuleShell_INIT
	.dbend
	.dbfunc e PROC_Shell _PROC_Shell fc
	.even
_PROC_Shell::
	.dbline -1
	.dbline 125
; }
; 
; /***********************************************************
; *   函数说明:指令解析进程                                 *
; *   输入:    无                                           *
; *   输出:    是否继续运行                                 *
; *   调用函数:SERIAL_FRAME_PROCESS()                       *
; ***********************************************************/
; BOOL PROC_Shell(void)
; {
	.dbline 126
;     SERIAL_FRAME_PROCESS(LocateModuleShell);
	ldi R16,<_SFPLocateModuleShell
	ldi R17,>_SFPLocateModuleShell
	rcall _Serial_Frame_Process
	.dbline 128
;     
;     return TRUE;
	ldi R16,1
	.dbline -2
L22:
	.dbline 0 ; func end
	ret
	.dbend
	.area lit(rom, con, rel)
L24:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -