📄 model.lst
字号:
__text_start:
__start:
79 EFCF LDI R28,0xFF
7A E0D4 LDI R29,4
7B BFCD OUT 0x3D,R28
7C BFDE OUT 0x3E,R29
7D 50C0 SUBI R28,0
7E 40D1 SBCI R29,1
7F EA0A LDI R16,0xAA
80 8308 STD Y+0,R16
81 2400 CLR R0
82 E5E6 LDI R30,0x56
83 E0F1 LDI R31,1
84 E012 LDI R17,2
85 33E0 CPI R30,0x30
86 07F1 CPC R31,R17
87 F011 BEQ 0x008A
88 9201 ST R0,Z+
89 CFFB RJMP 0x0085
8A 8300 STD Z+0,R16
8B E9EC LDI R30,0x9C
8C E0F0 LDI R31,0
8D E0A0 LDI R26,0
8E E0B1 LDI R27,1
8F E010 LDI R17,0
90 E000 LDI R16,0
91 BF0B OUT 0x3B,R16
92 3FE2 CPI R30,0xF2
93 07F1 CPC R31,R17
94 F021 BEQ 0x0099
95 95C8 LPM
96 9631 ADIW R30,1
97 920D ST R0,X+
98 CFF9 RJMP 0x0092
99 D976 RCALL _main
_exit:
9A CFFF RJMP _exit
_MsgMapProcess:
pMsgMapItem --> R20
Reg2 --> R22
Reg3 --> R22
n1 --> R10
cMsgItemCount0 --> R14
pMsgItem --> R12
pMsgMap --> R22
9B D9C7 RCALL push_xgsetF0FC
9C 0169 MOVW R12,R18
9D 01B8 MOVW R22,R16
FILE: E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_ADT_MSGMap.c
(0001) /***********************************************************
(0002) * 函数库说明:抽象数据类型(ADT)消息地图函数库 *
(0003) * 版本: v1.00 *
(0004) * 作者: 王卓然 *
(0005) * 创建日期:2007年4月6日 *
(0006) * -------------------------------------------------------- *
(0007) * [支 持 库] *
(0008) * 支持库名称:RD_MacroAndConst.h *
(0009) * 需要版本: v0.01 &abv *
(0010) * 支持库说明:系统常用宏定义库 *
(0011) * *
(0012) * 支持库名称:RD_ADT_MSGMAP.c *
(0013) * 需要版本: ----- *
(0014) * 支持库名称:抽象数据类型(ADT)消息地图声明库 *
(0015) * -------------------------------------------------------- *
(0016) * [版本更新] *
(0017) * 修改: *
(0018) * 修改日期: *
(0019) * 版本: *
(0020) * -------------------------------------------------------- *
(0021) * [版本历史] *
(0022) * -------------------------------------------------------- *
(0023) * [使用说明] *
(0024) ***********************************************************/
(0025)
(0026) /********************
(0027) * 头 文 件 配 置 区 *
(0028) ********************/
(0029) # include "RD_MacroAndConst.h"
(0030) # include "RD_ADT_MSGMap.h"
(0031)
(0032) /********************
(0033) * 系 统 宏 定 义 *
(0034) ********************/
(0035)
(0036) /*------------------*
(0037) * 常 数 宏 定 义 *
(0038) *------------------*/
(0039)
(0040) /*------------------*
(0041) * 动 作 宏 定 义 *
(0042) *------------------*/
(0043)
(0044) /********************
(0045) * 用户变量类型定义 *
(0046) ********************/
(0047)
(0048) /********************
(0049) * 结构体定义区 *
(0050) ********************/
(0051)
(0052) /********************
(0053) * 模块函数声明区 *
(0054) ********************/
(0055)
(0056) /********************
(0057) * 全局函数声明区 *
(0058) ********************/
(0059) BOOL MsgMapProcess(MSG_MAP *pMsgMap,MSG_ITEM *pMsgItem);
(0060)
(0061) /********************
(0062) * 模块变量声明区 *
(0063) ********************/
(0064)
(0065) /********************
(0066) * 全局变量声明区 *
(0067) ********************/
(0068)
(0069) # include "PF_Config.h"
(0070)
(0071) /***********************************************************
(0072) * 函数说明:消息地图处理函数 *
(0073) * 输入: 消息地图,要处理的消息 *
(0074) * 输出: 消息是否得到处理 *
(0075) * 调用函数:无 *
(0076) ***********************************************************/
(0077) BOOL MsgMapProcess(MSG_MAP *pMsgMap,MSG_ITEM *pMsgItem)
(0078) {
(0079) uint8 n = 0;
(0080) uint8 cMsgItemCount = pMsgMap->cItemCount;
9E 01FB MOVW R30,R22
9F 80E0 LDD R14,Z+0
(0081) MSG_MAP_ITEM *pMsgMapItem = pMsgMap->pMsgItems;
A0 8141 LDD R20,Z+1
A1 8152 LDD R21,Z+2
(0082)
(0083) if ((pMsgMap == NULL) || (pMsgItem == NULL)) //强壮性检测
A2 30E0 CPI R30,0
A3 07EF CPC R30,R31
A4 F021 BEQ 0x00A9
A5 20CC TST R12
A6 F421 BNE 0x00AB
A7 20DD TST R13
A8 F411 BNE 0x00AB
(0084) {
(0085) return FALSE;
A9 2700 CLR R16
AA C017 RJMP 0x00C2
(0086) }
(0087)
(0088) for (n = 0;n < cMsgItemCount;n++)
AB 24AA CLR R10
AC C012 RJMP 0x00BF
(0089) {
(0090) if (pMsgMapItem[n].cCMD == pMsgItem->cCMD)
AD E083 LDI R24,3
AE 9D8A MUL R24,R10
AF 01B0 MOVW R22,R0
B0 0F64 ADD R22,R20
B1 1F75 ADC R23,R21
B2 01F6 MOVW R30,R12
B3 8020 LDD R2,Z+0
B4 01FB MOVW R30,R22
B5 8030 LDD R3,Z+0
B6 1432 CP R3,R2
B7 F431 BNE 0x00BE
(0091) {
(0092) return ((*pMsgMapItem[n].pMsgFunc)(pMsgItem));
B8 0186 MOVW R16,R12
B9 81A1 LDD R26,Z+1
BA 81B2 LDD R27,Z+2
BB 01FD MOVW R30,R26
BC D9DB RCALL xicall
BD C004 RJMP 0x00C2
BE 94A3 INC R10
BF 14AE CP R10,R14
C0 F360 BCS 0x00AD
(0093) }
(0094) }
(0095)
(0096) return FALSE;
C1 2700 CLR R16
C2 C995 RJMP pop_xgsetF0FC
_MSG_NULL_PROC:
p --> R10
pMsgItem --> R16
C3 92AA ST R10,-Y
C4 92BA ST R11,-Y
(0097) }
(0098)
(0099) /***********************************************************
(0100) * 函数说明:消息处理空函数 *
(0101) * 输入: 要处理的消息 *
(0102) * 输出: 恒为FALSE *
(0103) * 调用函数:无 *
(0104) ***********************************************************/
(0105) BOOL MSG_NULL_PROC(MSG_ITEM *pMsgItem)
(0106) {
(0107) MSG_ITEM *p = pMsgItem;
C5 0158 MOVW R10,R16
(0108)
(0109) return FALSE;
C6 2700 CLR R16
C7 90B9 LD R11,Y+
C8 90A9 LD R10,Y+
C9 9508 RET
_ADT_Queue_Add_To_Buffer:
cflags0 --> R10
pBuffer --> R14
nCount0 --> R20
nHead0 --> Y,+0
nTail0 --> R22
nSize0 --> R12
cData --> R18
pQueue --> R16
CA D998 RCALL push_xgsetF0FC
CB 9722 SBIW R28,2
FILE: E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_ADT_QUEUE.c
(0001) /***********************************************************
(0002) * 函数库说明:抽象数据类型(ADT)队列函数库 *
(0003) * 版本: v1.01 *
(0004) * 作者: 王卓然 *
(0005) * 创建日期: 2007年3月23日 *
(0006) * -------------------------------------------------------- *
(0007) * [支 持 库] *
(0008) * 支持库名称:RD_MacroAndConst.h *
(0009) * 需要版本: v0.01 &abv *
(0010) * 支持库说明:系统常用宏定义库 *
(0011) * *
(0012) * 支持库名称:RD_ADT_QUEUE.h *
(0013) * 需要版本: ----- *
(0014) * 支持库说明:抽象数据类型(ADT)队列声明库 *
(0015) * -------------------------------------------------------- *
(0016) * [版本更新] *
(0017) * 修改: 王卓然 *
(0018) * 修改日期: 2007年4月17日 *
(0019) * 版本: v1.01 *
(0020) * -------------------------------------------------------- *
(0021) * [版本历史] *
(0022) * v1.00 该版本提供了基本的抽象数据类型队列的结构定 *
(0023) * 义,以及默认的环形队列处理函数。 *
(0024) * v1.01 增加了队列空判断函数,和队列首数据预览函数 *
(0025) * -------------------------------------------------------- *
(0026) * [使用说明] *
(0027) ***********************************************************/
(0028)
(0029) /********************
(0030) * 头 文 件 配 置 区 *
(0031) ********************/
(0032) # include "RD_MacroAndConst.h"
(0033) # include "RD_ADT_QUEUE.h"
(0034)
(0035) /********************
(0036) * 系 统 宏 定 义 *
(0037) ********************/
(0038)
(0039) /*------------------*
(0040) * 常 数 宏 定 义 *
(0041) *------------------*/
(0042)
(0043) /*------------------*
(0044) * 动 作 宏 定 义 *
(0045) *------------------*/
(0046)
(0047) /********************
(0048) * 结构体定义区 *
(0049) ********************/
(0050)
(0051) /********************
(0052) * 模块函数声明区 *
(0053) ********************/
(0054)
(0055) /********************
(0056) * 全局函数声明区 *
(0057) ********************/
(0058) BOOL ADT_Queue_Add_To_Buffer(ADT_QUEUE *pQueue,uint8 cData);
(0059) BOOL ADT_Queue_Get_From_Buffer(ADT_QUEUE *pQueue,uint8 *pData);
(0060) BOOL ADT_Queue_Check_Empty(ADT_QUEUE *pQueue);
(0061) BOOL ADT_Queue_Peek_From_Buffer(ADT_QUEUE *pQueue,uint8 *pData);
(0062)
(0063) /********************
(0064) * 模块变量声明区 *
(0065) ********************/
(0066)
(0067) /********************
(0068) * 全局变量声明区 *
(0069) ********************/
(0070) # include "PF_Config.h"
(0071)
(0072) /***********************************************************
(0073) * 函数说明:抽象数据类型队列,系统默认队列缓冲添加函数 *
(0074) * 输入: 要添加到缓冲区的数据 *
(0075) * 输出: 添加是否成功 *
(0076) * 调用函数:无 *
(0077) ***********************************************************/
(0078) BOOL ADT_Queue_Add_To_Buffer(ADT_QUEUE *pQueue,uint8 cData)
(0079) {
(0080) uint8 *pBuffer;
(0081) uint nSize;
(0082) uint nTail;
(0083) uint nHead;
(0084) uint nCount;
(0085)
(0086) //PORTG ^= BIT(PG3);
(0087) SAFE_CODE_PERFORMANCE //原子操作
CC B6AF IN R10,0x3F
CD 94F8 BCLR 7
CE 01F8 MOVW R30,R16
CF 80E0 LDD R14,Z+0
D0 80F1 LDD R15,Z+1
D1 80C2 LDD R12,Z+2
D2 80D3 LDD R13,Z+3
D3 20EE TST R14
D4 F411 BNE 0x00D7
D5 20FF TST R15
D6 F021 BEQ 0x00DB
D7 20CC TST R12
D8 F429 BNE 0x00DE
D9 20DD TST R13
DA F419 BNE 0x00DE
DB 9478 BSET 7
DC 2700 CLR R16
DD C027 RJMP 0x0105
DE 01F8 MOVW R30,R16
DF 8166 LDD R22,Z+6
E0 8177 LDD R23,Z+7
E1 8024 LDD R2,Z+4
E2 8035 LDD R3,Z+5
E3 8239 STD Y+1,R3
E4 8228 STD Y+0,R2
E5 8540 LDD R20,Z+8
E6 8551 LDD R21,Z+9
E7 0101 MOVW R0,R2
E8 1562 CP R22,R2
E9 0573 CPC R23,R3
EA F431 BNE 0x00F1
EB 154C CP R20,R12
EC 055D CPC R21,R13
ED F419 BNE 0x00F1
EE 9478 BSET 7
EF 2700 CLR R16
F0 C014 RJMP 0x0105
F1 01FB MOVW R30,R22
F2 0DEE ADD R30,R14
F3 1DFF ADC R31,R15
F4 8320 STD Z+0,R18
F5 5F6F SUBI R22,0xFF
F6 4F7F SBCI R23,0xFF
F7 5F4F SUBI R20,0xFF
F8 4F5F SBCI R21,0xFF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -