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

📄 rd_usedlocate_lib.lis

📁 全场地位系统:小车静止或移动过程中码盘进行全场定位,用的是avr单片机
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .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 + -