📄 rd_useserialframe_proc.lis
字号:
.module RD_UseSerialFrame_PROC.c
.area text(rom, con, rel)
0000 .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseSerialFrame_PROC.c
0000 .dbfunc e SFP_NULL_Output_Data_Function _SFP_NULL_Output_Data_Function fc
0000 ; p -> R10,R11
0000 ; cData -> y+2
.even
0000 _SFP_NULL_Output_Data_Function::
0000 1A93 st -y,r17
0002 0A93 st -y,r16
0004 AA92 st -y,R10
0006 BA92 st -y,R11
0008 .dbline -1
0008 .dbline 104
0008 ; /***********************************************************
0008 ; * 函数库说明:串行通信数据帧处理函数函数库 *
0008 ; * 版本: v1.00 *
0008 ; * 作者: 王卓然 *
0008 ; * 创建日期: 2007年4月6日 *
0008 ; * -------------------------------------------------------- *
0008 ; * [支 持 库] *
0008 ; * 支持库名称:LIB_Config.h *
0008 ; * 需要版本: ----- *
0008 ; * 支持库说明:库函数配置声明库 *
0008 ; * *
0008 ; * 支持库名称:RD_MacroAndConst.h *
0008 ; * 需要版本: v0.01 &abv *
0008 ; * 支持库说明:系统常用宏定义库 *
0008 ; * *
0008 ; * 支持库名称:RD_UseSerialFrame_PROC.h *
0008 ; * 需要版本: ----- *
0008 ; * 支持库名称:串行通信数据帧处理函数声明库 *
0008 ; * -------------------------------------------------------- *
0008 ; * [版本更新] *
0008 ; * 修改: *
0008 ; * 修改日期: *
0008 ; * 版本: *
0008 ; * -------------------------------------------------------- *
0008 ; * [版本历史] *
0008 ; * -------------------------------------------------------- *
0008 ; * [使用说明] *
0008 ; ***********************************************************/
0008 ;
0008 ; /********************
0008 ; * 头 文 件 配 置 区 *
0008 ; ********************/
0008 ; # include "RD_MacroAndConst.h"
0008 ; # include "RD_ADT_QUEUE.h"
0008 ; # include "RD_ADT_MSGMap.h"
0008 ; # include "RD_UseSerialFrame_PROC.h"
0008 ; # include "RD_UseBits.h"
0008 ;
0008 ; /********************
0008 ; * 系 统 宏 定 义 *
0008 ; ********************/
0008 ;
0008 ; /*------------------*
0008 ; * 常 数 宏 定 义 *
0008 ; *------------------*/
0008 ; #ifndef SFP_CMD_ERROR
0008 ; # define SFP_CMD_ERROR 0xED
0008 ; #endif
0008 ; #ifndef SFP_ERROR_CMD_ERROR
0008 ; # define SFP_ERROR_CMD_ERROR 0x00
0008 ; #endif
0008 ; #ifndef SFP_ERROR_XOR
0008 ; # define SFP_ERROR_XOR 0x01
0008 ; #endif
0008 ;
0008 ;
0008 ; /*------------------*
0008 ; * 动 作 宏 定 义 *
0008 ; *------------------*/
0008 ; # define SFP_ACTION_FLAG SET_BIT8_FORMAT(cTempActionFlag)
0008 ; # define SFP_STOP_ALL_ACTION cTempActionFlag = NULL;
0008 ; # define SFP_WAIT_FOR_FRAME_HEAD SFP_ACTION_FLAG.BIT0
0008 ; # define SFP_WAIT_FOR_FRAME_SIZE SFP_ACTION_FLAG.BIT1
0008 ; # define SFP_WAIT_FOR_ALL_DATA SFP_ACTION_FLAG.BIT2
0008 ;
0008 ;
0008 ; /********************
0008 ; * 用户变量类型定义 *
0008 ; ********************/
0008 ;
0008 ; /********************
0008 ; * 结构体定义区 *
0008 ; ********************/
0008 ;
0008 ; /********************
0008 ; * 模块函数声明区 *
0008 ; ********************/
0008 ; static void SFP_Check_Frames(SERIAL_FRAME_PROCESS *pSFP);
0008 ;
0008 ; /********************
0008 ; * 全局函数声明区 *
0008 ; ********************/
0008 ; void Serial_Frame_Process(SERIAL_FRAME_PROCESS *pSFP);
0008 ; BOOL SFP_NULL_Output_Data_Function(uint8 cData);
0008 ; BOOL SFP_NULL_Input_Data_Function(uint8 *pData);
0008 ; BOOL SFP_NULL_Peek_Data_Function(uint8 *pData);
0008 ; BOOL SPF_Send_MSG(SERIAL_FRAME_PROCESS *pSFP,
0008 ; uint8 cCMD,uint8 *pMSG,uint8 Length);
0008 ; /********************
0008 ; * 模块变量声明区 *
0008 ; ********************/
0008 ;
0008 ; /********************
0008 ; * 全局变量声明区 *
0008 ; ********************/
0008 ;
0008 ; /***********************************************************
0008 ; * 函数说明:数据输出空函数 *
0008 ; * 输入: 数据 *
0008 ; * 输出: FALSE *
0008 ; * 调用函数:无 *
0008 ; ***********************************************************/
0008 ; BOOL SFP_NULL_Output_Data_Function(uint8 cData)
0008 ; {
0008 .dbline 105
0008 ; uint8 *p = &cData;
0008 CE01 movw R24,R28
000A 0296 adiw R24,2
000C 5C01 movw R10,R24
000E .dbline 107
000E ;
000E ; return FALSE;
000E 0027 clr R16
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 B990 ld R11,y+
0012 A990 ld R10,y+
0014 2296 adiw R28,2
0016 0895 ret
0018 .dbsym r p 10 pc
0018 .dbsym l cData 2 c
0018 .dbend
0018 .dbfunc e SFP_NULL_Input_Data_Function _SFP_NULL_Input_Data_Function fc
0018 ; pData -> R16,R17
.even
0018 _SFP_NULL_Input_Data_Function::
0018 .dbline -1
0018 .dbline 117
0018 ; }
0018 ;
0018 ; /***********************************************************
0018 ; * 函数说明:数据输入空函数 *
0018 ; * 输入: 指针 *
0018 ; * 输出: FALSE *
0018 ; * 调用函数:无 *
0018 ; ***********************************************************/
0018 ; BOOL SFP_NULL_Input_Data_Function(uint8 *pData)
0018 ; {
0018 .dbline 118
0018 ; (*pData) = NULL;
0018 2224 clr R2
001A F801 movw R30,R16
001C 2082 std z+0,R2
001E .dbline 120
001E ;
001E ; return FALSE;
001E 0027 clr R16
0020 .dbline -2
0020 L2:
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r pData 16 pc
0022 .dbend
0022 .dbfunc e SFP_NULL_Peek_Data_Function _SFP_NULL_Peek_Data_Function fc
0022 ; pData -> R16,R17
.even
0022 _SFP_NULL_Peek_Data_Function::
0022 .dbline -1
0022 .dbline 130
0022 ; }
0022 ;
0022 ; /***********************************************************
0022 ; * 函数说明:数据察看空函数 *
0022 ; * 输入: 指针 *
0022 ; * 输出: FALSE *
0022 ; * 调用函数:无 *
0022 ; ***********************************************************/
0022 ; BOOL SFP_NULL_Peek_Data_Function(uint8 *pData)
0022 ; {
0022 .dbline 131
0022 ; (*pData) = NULL;
0022 2224 clr R2
0024 F801 movw R30,R16
0026 2082 std z+0,R2
0028 .dbline 133
0028 ;
0028 ; return FALSE;
0028 0027 clr R16
002A .dbline -2
002A L3:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbsym r pData 16 pc
002C .dbend
002C .dbfunc e Serial_Frame_Process _Serial_Frame_Process fV
002C .dbstruct 0 18 AbstructDataTypeQueue
002C .dbfield 0 pBuffer pc
002C .dbfield 2 nSize i
002C .dbfield 4 nHead i
002C .dbfield 6 nTail i
002C .dbfield 8 nCount i
002C .dbfield 10 fnAddToBuffer pfc
002C .dbfield 12 fnGetFromBuffer pfc
002C .dbfield 14 fnCheckEmpty pfc
002C .dbfield 16 fnPeekFromBuffer pfc
002C .dbend
002C .dbstruct 0 3 MsgMapItem
002C .dbfield 0 cCMD c
002C .dbfield 1 pMsgFunc pfc
002C .dbend
002C .dbstruct 0 3 MsgMap
002C .dbfield 0 cItemCount c
002C .dbfield 1 pMsgItems pS[MsgMapItem]
002C .dbend
002C .dbstruct 0 4 MsgItem
002C .dbfield 0 cCMD c
002C .dbfield 1 cDataLength c
002C .dbfield 2 pData pc
002C .dbend
002C .dbstruct 0 37 SerialFrameProcess
002C .dbfield 0 FrameBuffer S[AbstructDataTypeQueue]
002C .dbfield 18 pMsgMap pS[MsgMap]
002C .dbfield 20 MsgItem S[MsgItem]
002C .dbfield 24 cHeadByte c
002C .dbfield 25 cEndByte c
002C .dbfield 26 cFixLength c
002C .dbfield 27 cAddress c
002C .dbfield 28 InputDataFunc pfc
002C .dbfield 30 OutputDataFunc pfc
002C .dbfield 32 PeekDataFunc pfc
002C .dbfield 34 cActionFlag c
002C .dbfield 35 cXORCheck c
002C .dbfield 36 cFrameSize c
002C .dbend
002C ; cTempData -> y+4
002C ; pQueue -> R22,R23
002C ; cTempActionFlag -> y+3
002C ; pSFP -> R20,R21
.even
002C _Serial_Frame_Process::
002C 00D0 rcall push_xgsetF00C
002E A801 movw R20,R16
0030 2597 sbiw R28,5
0032 .dbline -1
0032 .dbline 144
0032 ; }
0032 ;
0032 ;
0032 ; /***********************************************************
0032 ; * 函数说明:串行通讯数据帧处理函数 *
0032 ; * 输入: 要处理的数据帧结构指针 *
0032 ; * 输出: 无 *
0032 ; * 调用函数:SFP_Check_Frames() *
0032 ; ***********************************************************/
0032 ; void Serial_Frame_Process(SERIAL_FRAME_PROCESS *pSFP)
0032 ; {
0032 .dbline 146
0032 ;
0032 ; uint8 cTempActionFlag = pSFP->cActionFlag;
0032 FA01 movw R30,R20
0034 22A0 ldd R2,z+34
0036 2B82 std y+3,R2
0038 .dbline 147
0038 ; uint8 cTempData = 0;
0038 2224 clr R2
003A 2C82 std y+4,R2
003C .dbline 148
003C ; ADT_QUEUE *pQueue = &(pSFP->FrameBuffer);
003C BF01 movw R22,R30
003E .dbline 151
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -