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

📄 rd_adt_msgmap.s

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 S
字号:
	.module RD_ADT_MSGMap.c
	.area text(rom, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_ADT_MSGMap.c
	.dbfunc e MsgMapProcess _MsgMapProcess fc
	.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
	.dbstruct 0 4 MsgItem
	.dbfield 0 cCMD c
	.dbfield 1 cDataLength c
	.dbfield 2 pData pc
	.dbend
;    pMsgMapItem -> R20,R21
;           Reg2 -> R22,R23
;           Reg3 -> R22,R23
;             n1 -> R10
; cMsgItemCount0 -> R14
;       pMsgItem -> R12,R13
;        pMsgMap -> R22,R23
	.even
_MsgMapProcess::
	rcall push_xgsetF0FC
	movw R12,R18
	movw R22,R16
	.dbline -1
	.dbline 78
; /***********************************************************
; *   函数库说明:抽象数据类型(ADT)消息地图函数库            *
; *   版本:    v1.00                                        *
; *   作者:    王卓然                                       *
; *   创建日期:2007年4月6日                                 *
; * -------------------------------------------------------- *
; *  [支 持 库]                                              *
; *   支持库名称:RD_MacroAndConst.h                         *
; *   需要版本:  v0.01 &abv                                 *
; *   支持库说明:系统常用宏定义库                           *
; *                                                          *
; *   支持库名称:RD_ADT_MSGMAP.c                            *
; *   需要版本:  -----                                      *
; *   支持库名称:抽象数据类型(ADT)消息地图声明库            *
; * -------------------------------------------------------- *
; *  [版本更新]                                              *
; *   修改:                                                 *
; *   修改日期:                                             *
; *   版本:                                                 *
; * -------------------------------------------------------- *
; *  [版本历史]                                              *
; * -------------------------------------------------------- *
; *  [使用说明]                                              *
; ***********************************************************/
; 
; /********************
; * 头 文 件 配 置 区 *
; ********************/
; # include "RD_MacroAndConst.h"
; # include "RD_ADT_MSGMap.h"
; 
; /********************
; *   系 统 宏 定 义  *
; ********************/
; 
; /*------------------*
; *   常 数 宏 定 义  *
; *------------------*/
; 
; /*------------------*
; *   动 作 宏 定 义  *
; *------------------*/
; 
; /********************
; *  用户变量类型定义 *
; ********************/
; 
; /********************
; *    结构体定义区   *
; ********************/
; 
; /********************
; *   模块函数声明区  *
; ********************/
; 
; /********************
; *   全局函数声明区  *
; ********************/
; BOOL MsgMapProcess(MSG_MAP *pMsgMap,MSG_ITEM *pMsgItem);
; 
; /********************
; *   模块变量声明区  *
; ********************/
; 
; /********************
; *   全局变量声明区  *
; ********************/
; 
; # include "PF_Config.h"
; 
; /***********************************************************
; *   函数说明:消息地图处理函数                             *
; *   输入:    消息地图,要处理的消息                       *
; *   输出:    消息是否得到处理                             *
; *   调用函数:无                                           *
; ***********************************************************/
; BOOL MsgMapProcess(MSG_MAP *pMsgMap,MSG_ITEM *pMsgItem)
; {
	.dbline 79
;     uint8 n = 0;
	.dbline 80
;     uint8 cMsgItemCount = pMsgMap->cItemCount;
	movw R30,R22
	ldd R14,z+0
	.dbline 81
;     MSG_MAP_ITEM *pMsgMapItem = pMsgMap->pMsgItems;
	ldd R20,z+1
	ldd R21,z+2
	.dbline 83
; 
;     if ((pMsgMap == NULL) || (pMsgItem == NULL))            //强壮性检测
	cpi R30,0
	cpc R30,R31
	breq L4
X0:
	tst R12
	brne L2
	tst R13
	brne L2
X1:
L4:
	.dbline 84
;     {
	.dbline 85
;         return FALSE;
	clr R16
	rjmp L1
L2:
	.dbline 88
;     }
;         
;     for (n = 0;n < cMsgItemCount;n++)
	clr R10
	rjmp L8
L5:
	.dbline 89
;     {
	.dbline 90
;         if (pMsgMapItem[n].cCMD == pMsgItem->cCMD)
	ldi R24,3
	mul R24,R10
	movw R22,R0
	add R22,R20
	adc R23,R21
	movw R30,R12
	ldd R2,z+0
	movw R30,R22
	ldd R3,z+0
	cp R3,R2
	brne L9
X2:
	.dbline 91
;         {
	.dbline 92
;             return ((*pMsgMapItem[n].pMsgFunc)(pMsgItem));
	movw R16,R12
	ldd R26,z+1
	ldd R27,z+2
	movw R30,R26
	rcall xicall
	rjmp L1
L9:
	.dbline 94
;         }
;     }
L6:
	.dbline 88
	inc R10
L8:
	.dbline 88
	cp R10,R14
	brlo L5
X3:
	.dbline 96
;     
;     return FALSE;
	clr R16
	.dbline -2
L1:
	.dbline 0 ; func end
	rjmp pop_xgsetF0FC
	.dbsym r pMsgMapItem 20 pS[MsgMapItem]
	.dbsym r Reg2 22 S
	.dbsym r Reg3 22 pV
	.dbsym r n1 10 c
	.dbsym r cMsgItemCount0 14 c
	.dbsym r pMsgItem 12 pS[MsgItem]
	.dbsym r pMsgMap 22 pS[MsgMap]
	.dbend
	.dbfunc e MSG_NULL_PROC _MSG_NULL_PROC fc
;              p -> R10,R11
;       pMsgItem -> R16,R17
	.even
_MSG_NULL_PROC::
	st -y,R10
	st -y,R11
	.dbline -1
	.dbline 106
; }
; 
; /***********************************************************
; *   函数说明:消息处理空函数                               *
; *   输入:    要处理的消息                                 *
; *   输出:    恒为FALSE                                    *
; *   调用函数:无                                           *
; ***********************************************************/
; BOOL MSG_NULL_PROC(MSG_ITEM *pMsgItem)
; {
	.dbline 107
;     MSG_ITEM *p = pMsgItem;
	movw R10,R16
	.dbline 109
;     
;     return FALSE;
	clr R16
	.dbline -2
L11:
	.dbline 0 ; func end
	ld R11,y+
	ld R10,y+
	ret
	.dbsym r p 10 pS[MsgItem]
	.dbsym r pMsgItem 16 pS[MsgItem]
	.dbend
; }

⌨️ 快捷键说明

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