📄 rd_usedlocate_lib.lis
字号:
.module RD_UseDLocate_LIB.c
.area text(rom, con, rel)
0000 .dbfile E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\RD_UseDLocate_LIB.c
.area data(ram, con, rel)
0000 .dbfile E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\RD_UseDLocate_LIB.c
0000 _g_fLastAngle::
0000 .blkb 4
.area idata
0000 00000000 .word 0x0,0x0
.area data(ram, con, rel)
0004 .dbfile E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\RD_UseDLocate_LIB.c
0004 _g_fX::
0004 .blkb 4
.area idata
0004 00000000 .word 0x0,0x0
.area data(ram, con, rel)
0008 .dbfile E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\RD_UseDLocate_LIB.c
0008 _g_fY::
0008 .blkb 4
.area idata
0008 00000000 .word 0x0,0x0
.area data(ram, con, rel)
000C .dbfile E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\RD_UseDLocate_LIB.c
.area text(rom, con, rel)
0000 .dbfile E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\RD_UseDLocate_LIB.c
0000 .dbfunc e Get_Absolute_Angle _Get_Absolute_Angle fD
.even
0000 _Get_Absolute_Angle::
0000 00D0 rcall push_xgsetF000
0002 .dbline -1
0002 .dbline 118
0002 ; /***********************************************************
0002 ; * 函数库说明:差分定位数值计算函数库 *
0002 ; * 版本: v1.00beta *
0002 ; * 作者: 王卓然 *
0002 ; * 创建日期: 2008年3月29日 *
0002 ; * -------------------------------------------------------- *
0002 ; * [支 持 库] *
0002 ; * 支持库名称: *
0002 ; * 需要版本: *
0002 ; * 支持库说明: *
0002 ; * -------------------------------------------------------- *
0002 ; * [版本更新] *
0002 ; * 修改: *
0002 ; * 修改日期: *
0002 ; * 版本: *
0002 ; * -------------------------------------------------------- *
0002 ; * [版本历史] *
0002 ; * -------------------------------------------------------- *
0002 ; * [使用说明] *
0002 ; ***********************************************************/
0002 ;
0002 ; /********************
0002 ; * 头 文 件 配 置 区 *
0002 ; ********************/
0002 ; # include "RD_MacroAndConst.h"
0002 ; # include "DL_Config.h"
0002 ; # include "RD_UseDLocate_LIB.h"
0002 ; # include "PF_Config.h"
0002 ; # include "Math.h"
0002 ;
0002 ; /********************
0002 ; * 系 统 宏 定 义 *
0002 ; ********************/
0002 ;
0002 ; /*------------------*
0002 ; * 常 数 宏 定 义 *
0002 ; *------------------*/
0002 ;
0002 ; //轮子直径
0002 ; #ifndef WHEEL_D_L
0002 ; #error No define WHEEL_D_L!
0002 ; #endif
0002 ; #ifndef WHEEL_D_R
0002 ; #error No define WHEEL_D_R!
0002 ; #endif
0002 ;
0002 ; //轮间距
0002 ; #ifndef D_BTW_WHEEL
0002 ; #error No define D_BTW_WHEEL
0002 ; #endif
0002 ;
0002 ; //每圈线精度
0002 ; #ifndef N_L
0002 ; #error No define N_L
0002 ; #endif
0002 ; #ifndef N_R
0002 ; #error No define N_R
0002 ; #endif
0002 ;
0002 ; //码盘倍频数
0002 ; #ifndef MULTIPLE
0002 ; #error No define MULTIPLE
0002 ; #endif
0002 ;
0002 ; //计数器 到 弧长
0002 ; # define K_L ((PI * (WHEEL_D_L)) / ((MULTIPLE) * (N_L)))
0002 ; # define K_R ((PI * (WHEEL_D_R)) / ((MULTIPLE) * (N_R)))
0002 ;
0002 ;
0002 ;
0002 ;
0002 ; /*------------------*
0002 ; * 动 作 宏 定 义 *
0002 ; *------------------*/
0002 ;
0002 ; /********************
0002 ; * 自定义类型声明区 *
0002 ; ********************/
0002 ;
0002 ; /********************
0002 ; * 模块结构体定义区 *
0002 ; ********************/
0002 ;
0002 ; /********************
0002 ; * 函 数 声 明 区 *
0002 ; ********************/
0002 ; float Get_Absolute_Angle(void);
0002 ; float fMod(float fNumberA,float fNumberB);
0002 ; BOOL PROC_Difference_Locate(void);
0002 ;
0002 ; /********************
0002 ; * 模块函数声明区 *
0002 ; ********************/
0002 ;
0002 ; /********************
0002 ; * 模块变量声明区 *
0002 ; ********************/
0002 ;
0002 ; /********************
0002 ; * 全局变量声明区 *
0002 ; ********************/
0002 ; float g_fLastAngle = 0.0;
0002 ; float g_fX = 0.0;
0002 ; float g_fY = 0.0;
0002 ;
0002 ; /********************
0002 ; * 全局变量声引用区 *
0002 ; ********************/
0002 ; extern BOOL g_bRunFlagB;
0002 ;
0002 ; /***********************************************************
0002 ; * 函数说明:获取当前绝对角度函数 *
0002 ; * 输入: 无 *
0002 ; * 输出: 角度值 *
0002 ; * 调用函数:无 *
0002 ; ***********************************************************/
0002 ; float Get_Absolute_Angle(void)
0002 ; {
0002 .dbline 120
0002 ; return
0002 ; (
0002 00E0 ldi R16,<L2
0004 10E0 ldi R17,>L2
0006 00D0 rcall lpm32
0008 1801 movw R2,R16
000A 2901 movw R4,R18
000C 00E0 ldi R16,<L3
000E 10E0 ldi R17,>L3
0010 00D0 rcall lpm32
0012 3801 movw R6,R16
0014 4901 movw R8,R18
0016 20910200 lds R18,_g_lCounterR+2
001A 30910300 lds R19,_g_lCounterR+2+1
001E 00910000 lds R16,_g_lCounterR
0022 10910100 lds R17,_g_lCounterR+1
0026 00D0 rcall long2fp
0028 3A93 st -y,R19
002A 2A93 st -y,R18
002C 1A93 st -y,R17
002E 0A93 st -y,R16
0030 8301 movw R16,R6
0032 9401 movw R18,R8
0034 00D0 rcall fpmule2
0036 3801 movw R6,R16
0038 4901 movw R8,R18
003A 00E0 ldi R16,<L4
003C 10E0 ldi R17,>L4
003E 00D0 rcall lpm32
0040 A801 movw R20,R16
0042 B901 movw R22,R18
0044 20910200 lds R18,_g_lCounterL+2
0048 30910300 lds R19,_g_lCounterL+2+1
004C 00910000 lds R16,_g_lCounterL
0050 10910100 lds R17,_g_lCounterL+1
0054 00D0 rcall long2fp
0056 3A93 st -y,R19
0058 2A93 st -y,R18
005A 1A93 st -y,R17
005C 0A93 st -y,R16
005E 8A01 movw R16,R20
0060 9B01 movw R18,R22
0062 00D0 rcall fpmule2x
0064 8301 movw R16,R6
0066 9401 movw R18,R8
0068 00D0 rcall fpsub2x
006A 8101 movw R16,R2
006C 9201 movw R18,R4
006E 00D0 rcall fpmule2
0070 .dbline -2
0070 L1:
0070 .dbline 0 ; func end
0070 00C0 rjmp pop_xgsetF000
0072 .dbend
0072 .dbfunc e Get_Relative_Angle _Get_Relative_Angle fD
0072 ; lDCR -> y+8
0072 ; lDCL -> y+4
.even
0072 _Get_Relative_Angle::
0072 00D0 rcall push_arg4
0074 00D0 rcall push_xgsetF000
0076 .dbline -1
0076 .dbline 133
0076 ; (float)g_lCounterR * (float)K_R
0076 ; - (float)g_lCounterL * (float)K_L
0076 ; ) * (1.0 / (float)D_BTW_WHEEL);
0076 ; }
0076 ;
0076 ; /***********************************************************
0076 ; * 函数说明:获取当前相对角度函数 *
0076 ; * 输入: 左编码器微分量,右编码器微分量 *
0076 ; * 输出: 角度值(弧度) *
0076 ; * 调用函数:无 *
0076 ; ***********************************************************/
0076 ; float Get_Relative_Angle(INT32 lDCL,INT32 lDCR)
0076 ; {
0076 .dbline 134
0076 ; if (lDCL == lDCR)
0076 2884 ldd R2,y+8
0078 3984 ldd R3,y+9
007A 4A84 ldd R4,y+10
007C 5B84 ldd R5,y+11
007E 6C80 ldd R6,y+4
0080 7D80 ldd R7,y+5
0082 8E80 ldd R8,y+6
0084 9F80 ldd R9,y+7
0086 6214 cp R6,R2
0088 7304 cpc R7,R3
008A 8404 cpc R8,R4
008C 9504 cpc R9,R5
008E 21F4 brne L6
0090 X0:
0090 .dbline 135
0090 ; {
0090 .dbline 136
0090 ; return 0.0;
0090 00E0 ldi R16,<L8
0092 10E0 ldi R17,>L8
0094 00D0 rcall lpm32
0096 2FC0 rjmp L5
0098 L6:
0098 .dbline 140
0098 ; }
0098 ;
0098 ; return
0098 ; (
0098 00E0 ldi R16,<L2
009A 10E0 ldi R17,>L2
009C 00D0 rcall lpm32
009E 1801 movw R2,R16
00A0 2901 movw R4,R18
00A2 00E0 ldi R16,<L3
00A4 10E0 ldi R17,>L3
00A6 00D0 rcall lpm32
00A8 3801 movw R6,R16
00AA 4901 movw R8,R18
00AC 0885 ldd R16,y+8
00AE 1985 ldd R17,y+9
00B0 2A85 ldd R18,y+10
00B2 3B85 ldd R19,y+11
00B4 00D0 rcall long2fp
00B6 3A93 st -y,R19
00B8 2A93 st -y,R18
00BA 1A93 st -y,R17
00BC 0A93 st -y,R16
00BE 8301 movw R16,R6
00C0 9401 movw R18,R8
00C2 00D0 rcall fpmule2
00C4 3801 movw R6,R16
00C6 4901 movw R8,R18
00C8 00E0 ldi R16,<L4
00CA 10E0 ldi R17,>L4
00CC 00D0 rcall lpm32
00CE A801 movw R20,R16
00D0 B901 movw R22,R18
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -