📄 rd_adt_msgmap.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 + -