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

📄 rd_adt_msgmap.lis

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 LIS
字号:
                        .module RD_ADT_MSGMap.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_ADT_MSGMap.c
 0000                   .dbfunc e MsgMapProcess _MsgMapProcess fc
 0000                   .dbstruct 0 3 MsgMapItem
 0000                   .dbfield 0 cCMD c
 0000                   .dbfield 1 pMsgFunc pfc
 0000                   .dbend
 0000                   .dbstruct 0 3 MsgMap
 0000                   .dbfield 0 cItemCount c
 0000                   .dbfield 1 pMsgItems pS[MsgMapItem]
 0000                   .dbend
 0000                   .dbstruct 0 4 MsgItem
 0000                   .dbfield 0 cCMD c
 0000                   .dbfield 1 cDataLength c
 0000                   .dbfield 2 pData pc
 0000                   .dbend
 0000           ;    pMsgMapItem -> R20,R21
 0000           ;           Reg2 -> R22,R23
 0000           ;           Reg3 -> R22,R23
 0000           ;             n1 -> R10
 0000           ; cMsgItemCount0 -> R14
 0000           ;       pMsgItem -> R12,R13
 0000           ;        pMsgMap -> R22,R23
                        .even
 0000           _MsgMapProcess::
 0000 00D0              rcall push_xgsetF0FC
 0002 6901              movw R12,R18
 0004 B801              movw R22,R16
 0006                   .dbline -1
 0006                   .dbline 78
 0006           ; /***********************************************************
 0006           ; *   函数库说明:抽象数据类型(ADT)消息地图函数库            *
 0006           ; *   版本:    v1.00                                        *
 0006           ; *   作者:    王卓然                                       *
 0006           ; *   创建日期:2007年4月6日                                 *
 0006           ; * -------------------------------------------------------- *
 0006           ; *  [支 持 库]                                              *
 0006           ; *   支持库名称:RD_MacroAndConst.h                         *
 0006           ; *   需要版本:  v0.01 &abv                                 *
 0006           ; *   支持库说明:系统常用宏定义库                           *
 0006           ; *                                                          *
 0006           ; *   支持库名称:RD_ADT_MSGMAP.c                            *
 0006           ; *   需要版本:  -----                                      *
 0006           ; *   支持库名称:抽象数据类型(ADT)消息地图声明库            *
 0006           ; * -------------------------------------------------------- *
 0006           ; *  [版本更新]                                              *
 0006           ; *   修改:                                                 *
 0006           ; *   修改日期:                                             *
 0006           ; *   版本:                                                 *
 0006           ; * -------------------------------------------------------- *
 0006           ; *  [版本历史]                                              *
 0006           ; * -------------------------------------------------------- *
 0006           ; *  [使用说明]                                              *
 0006           ; ***********************************************************/
 0006           ; 
 0006           ; /********************
 0006           ; * 头 文 件 配 置 区 *
 0006           ; ********************/
 0006           ; # include "RD_MacroAndConst.h"
 0006           ; # include "RD_ADT_MSGMap.h"
 0006           ; 
 0006           ; /********************
 0006           ; *   系 统 宏 定 义  *
 0006           ; ********************/
 0006           ; 
 0006           ; /*------------------*
 0006           ; *   常 数 宏 定 义  *
 0006           ; *------------------*/
 0006           ; 
 0006           ; /*------------------*
 0006           ; *   动 作 宏 定 义  *
 0006           ; *------------------*/
 0006           ; 
 0006           ; /********************
 0006           ; *  用户变量类型定义 *
 0006           ; ********************/
 0006           ; 
 0006           ; /********************
 0006           ; *    结构体定义区   *
 0006           ; ********************/
 0006           ; 
 0006           ; /********************
 0006           ; *   模块函数声明区  *
 0006           ; ********************/
 0006           ; 
 0006           ; /********************
 0006           ; *   全局函数声明区  *
 0006           ; ********************/
 0006           ; BOOL MsgMapProcess(MSG_MAP *pMsgMap,MSG_ITEM *pMsgItem);
 0006           ; 
 0006           ; /********************
 0006           ; *   模块变量声明区  *
 0006           ; ********************/
 0006           ; 
 0006           ; /********************
 0006           ; *   全局变量声明区  *
 0006           ; ********************/
 0006           ; 
 0006           ; # include "PF_Config.h"
 0006           ; 
 0006           ; /***********************************************************
 0006           ; *   函数说明:消息地图处理函数                             *
 0006           ; *   输入:    消息地图,要处理的消息                       *
 0006           ; *   输出:    消息是否得到处理                             *
 0006           ; *   调用函数:无                                           *
 0006           ; ***********************************************************/
 0006           ; BOOL MsgMapProcess(MSG_MAP *pMsgMap,MSG_ITEM *pMsgItem)
 0006           ; {
 0006                   .dbline 79
 0006           ;     uint8 n = 0;
 0006                   .dbline 80
 0006           ;     uint8 cMsgItemCount = pMsgMap->cItemCount;
 0006 FB01              movw R30,R22
 0008 E080              ldd R14,z+0
 000A                   .dbline 81
 000A           ;     MSG_MAP_ITEM *pMsgMapItem = pMsgMap->pMsgItems;
 000A 4181              ldd R20,z+1
 000C 5281              ldd R21,z+2
 000E                   .dbline 83
 000E           ; 
 000E           ;     if ((pMsgMap == NULL) || (pMsgItem == NULL))            //强壮性检测
 000E E030              cpi R30,0
 0010 EF07              cpc R30,R31
 0012 21F0              breq L4
 0014           X0:
 0014 CC20              tst R12
 0016 21F4              brne L2
 0018 DD20              tst R13
 001A 11F4              brne L2
 001C           X1:
 001C           L4:
 001C                   .dbline 84
 001C           ;     {
 001C                   .dbline 85
 001C           ;         return FALSE;
 001C 0027              clr R16
 001E 17C0              rjmp L1
 0020           L2:
 0020                   .dbline 88
 0020           ;     }
 0020           ;         
 0020           ;     for (n = 0;n < cMsgItemCount;n++)
 0020 AA24              clr R10
 0022 12C0              rjmp L8
 0024           L5:
 0024                   .dbline 89
 0024           ;     {
 0024                   .dbline 90
 0024           ;         if (pMsgMapItem[n].cCMD == pMsgItem->cCMD)
 0024 83E0              ldi R24,3
 0026 8A9D              mul R24,R10
 0028 B001              movw R22,R0
 002A 640F              add R22,R20
 002C 751F              adc R23,R21
 002E F601              movw R30,R12
 0030 2080              ldd R2,z+0
 0032 FB01              movw R30,R22
 0034 3080              ldd R3,z+0
 0036 3214              cp R3,R2
 0038 31F4              brne L9
 003A           X2:
 003A                   .dbline 91
 003A           ;         {
 003A                   .dbline 92
 003A           ;             return ((*pMsgMapItem[n].pMsgFunc)(pMsgItem));
 003A 8601              movw R16,R12
 003C A181              ldd R26,z+1
 003E B281              ldd R27,z+2
 0040 FD01              movw R30,R26
 0042 00D0              rcall xicall
 0044 04C0              rjmp L1
 0046           L9:
 0046                   .dbline 94
 0046           ;         }
 0046           ;     }
 0046           L6:
 0046                   .dbline 88
 0046 A394              inc R10
 0048           L8:
 0048                   .dbline 88
 0048 AE14              cp R10,R14
 004A 60F3              brlo L5
 004C           X3:
 004C                   .dbline 96
 004C           ;     
 004C           ;     return FALSE;
 004C 0027              clr R16
 004E                   .dbline -2
 004E           L1:
 004E                   .dbline 0 ; func end
 004E 00C0              rjmp pop_xgsetF0FC
 0050                   .dbsym r pMsgMapItem 20 pS[MsgMapItem]
 0050                   .dbsym r Reg2 22 S
 0050                   .dbsym r Reg3 22 pV
 0050                   .dbsym r n1 10 c
 0050                   .dbsym r cMsgItemCount0 14 c
 0050                   .dbsym r pMsgItem 12 pS[MsgItem]
 0050                   .dbsym r pMsgMap 22 pS[MsgMap]
 0050                   .dbend
 0050                   .dbfunc e MSG_NULL_PROC _MSG_NULL_PROC fc
 0050           ;              p -> R10,R11
 0050           ;       pMsgItem -> R16,R17
                        .even
 0050           _MSG_NULL_PROC::
 0050 AA92              st -y,R10
 0052 BA92              st -y,R11
 0054                   .dbline -1
 0054                   .dbline 106
 0054           ; }
 0054           ; 
 0054           ; /***********************************************************
 0054           ; *   函数说明:消息处理空函数                               *
 0054           ; *   输入:    要处理的消息                                 *
 0054           ; *   输出:    恒为FALSE                                    *
 0054           ; *   调用函数:无                                           *
 0054           ; ***********************************************************/
 0054           ; BOOL MSG_NULL_PROC(MSG_ITEM *pMsgItem)
 0054           ; {
 0054                   .dbline 107
 0054           ;     MSG_ITEM *p = pMsgItem;
 0054 5801              movw R10,R16
 0056                   .dbline 109
 0056           ;     
 0056           ;     return FALSE;
 0056 0027              clr R16
 0058                   .dbline -2
 0058           L11:
 0058                   .dbline 0 ; func end
 0058 B990              ld R11,y+
 005A A990              ld R10,y+
 005C 0895              ret
 005E                   .dbsym r p 10 pS[MsgItem]
 005E                   .dbsym r pMsgItem 16 pS[MsgItem]
 005E                   .dbend
 005E           ; }

⌨️ 快捷键说明

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