passive_encoder.lst
来自「全场地位系统:小车静止或移动过程中码盘进行全场定位,用的是avr单片机」· LST 代码 · 共 1,758 行 · 第 1/5 页
LST
1,758 行
2F8 9189 LD R24,Y+
2F9 9139 LD R19,Y+
2FA 9129 LD R18,Y+
2FB 9119 LD R17,Y+
2FC 9109 LD R16,Y+
2FD 9099 LD R9,Y+
2FE 9089 LD R8,Y+
2FF 9079 LD R7,Y+
300 9069 LD R6,Y+
301 9059 LD R5,Y+
302 9049 LD R4,Y+
303 9039 LD R3,Y+
304 9029 LD R2,Y+
305 9019 LD R1,Y+
306 9009 LD R0,Y+
307 9518 RETI
(0227) }
(0228)
(0229) /***********************************************************
(0230) * 函数说明:SPI初始化函数 *
(0231) * 输入: 无 *
(0232) * 输出: 无 *
(0233) * 调用函数:无 *
(0234) ***********************************************************/
(0235) static void SPI_INIT(void)
(0236) {
(0237) SPCR = 0xFE; //setup SPI
HD_Support.c:SPI_INIT:
_SPI_INIT:
308 EF8E LDI R24,0xFE
309 BD8C OUT 0x2C,R24
(0238) SPSR = 0x00; //setup SPI
30A 2422 CLR R2
30B BC2D OUT 0x2D,R2
30C 9508 RET
_SPI_STC_ISR:
30D 922A ST R2,-Y
30E 938A ST R24,-Y
30F 939A ST R25,-Y
310 93EA ST R30,-Y
311 93FA ST R31,-Y
312 B62F IN R2,0x3F
313 922A ST R2,-Y
(0239) }
(0240)
(0241) /***********************************************************
(0242) * 函数说明:SPI发送完成中断 *
(0243) * 输入: 无 *
(0244) * 输出: 无 *
(0245) * 调用函数:INSERT_SPI_STC_ISR_CODE *
(0246) ***********************************************************/
(0247) void SPI_STC_ISR(void)
(0248) {
(0249) INSERT_SPI_STC_ISR_CODE
314 9478 BSET 7
315 E285 LDI R24,0x25
316 E091 LDI R25,1
317 91E0 0136 LDS R30,g_chSPICounter
319 27FF CLR R31
31A 0FE8 ADD R30,R24
31B 1FF9 ADC R31,R25
31C B42E IN R2,0x2E
31D 8220 STD Z+0,R2
31E 9180 0136 LDS R24,g_chSPICounter
320 5F8F SUBI R24,0xFF
321 9380 0136 STS g_chSPICounter,R24
323 3181 CPI R24,0x11
324 F439 BNE 0x032C
325 2422 CLR R2
326 9220 0136 STS g_chSPICounter,R2
328 B185 IN R24,0x05
329 6084 ORI R24,4
32A B985 OUT 0x05,R24
32B C009 RJMP 0x0335
32C E184 LDI R24,0x14
32D E091 LDI R25,1
32E 91E0 0136 LDS R30,g_chSPICounter
330 27FF CLR R31
331 0FE8 ADD R30,R24
332 1FF9 ADC R31,R25
333 8020 LDD R2,Z+0
334 BC2E OUT 0x2E,R2
335 9029 LD R2,Y+
336 BE2F OUT 0x3F,R2
337 91F9 LD R31,Y+
338 91E9 LD R30,Y+
339 9199 LD R25,Y+
33A 9189 LD R24,Y+
33B 9029 LD R2,Y+
33C 9518 RETI
FILE: E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\PF_Config.c
(0001) /***********************************************************
(0002) * 函数库说明:硬件平台配置函数库 *
(0003) * 版本: *
(0004) * 作者: *
(0005) * 创建日期: *
(0006) * -------------------------------------------------------- *
(0007) * [硬件说明] *
(0008) * 处理器: *
(0009) * 系统时钟: *
(0010) * -------------------------------------------------------- *
(0011) * [支 持 库] *
(0012) * 库名称: PF_Config.h *
(0013) * 需要版本: ----- *
(0014) * 支持库说明:硬件平台配置声明库 *
(0015) * -------------------------------------------------------- *
(0016) * [版本更新] *
(0017) * 修改: *
(0018) * 修改日期: *
(0019) * 版本: *
(0020) * -------------------------------------------------------- *
(0021) * [版本历史] *
(0022) * -------------------------------------------------------- *
(0023) * [使用说明] *
(0024) ***********************************************************/
(0025)
(0026) /********************
(0027) * 头 文 件 配 置 区 *
(0028) ********************/
(0029) # include "PF_Config.h"
(0030)
(0031) /********************
(0032) * 系 统 宏 定 义 *
(0033) ********************/
(0034)
(0035) /*------------------*
(0036) * 常 数 宏 定 义 *
(0037) *------------------*/
(0038)
(0039) /*------------------*
(0040) * 动 作 宏 定 义 *
(0041) *------------------*/
(0042)
(0043) /********************
(0044) * 模块结构体定义区 *
(0045) ********************/
(0046)
(0047) /********************
(0048) * 函 数 声 明 区 *
(0049) ********************/
(0050) void Platform_INIT(void);
(0051)
(0052) /********************
(0053) * 模块函数声明区 *
(0054) ********************/
(0055)
(0056) /********************
(0057) * 模块变量声明区 *
(0058) ********************/
(0059)
(0060) /********************
(0061) * 全局变量声明区 *
(0062) ********************/
(0063)
(0064) /***********************************************************
(0065) * 函数说明:系统初始化函数 *
(0066) * 输入: 无 *
(0067) * 输出: 无 *
(0068) * 调用函数:Device_INIT() Driver_INIT() *
(0069) ***********************************************************/
(0070) void Platform_INIT(void)
(0071) {
(0072) CLI();
_Platform_INIT:
33D 94F8 BCLR 7
(0073)
(0074) Device_INIT();
33E DDDD RCALL _Device_INIT
(0075) Driver_INIT();
33F DD48 RCALL _Driver_INIT
(0076)
(0077) //*在这里插入你的系统环境变量初始化代码*//
(0078)
(0079) SEI();
340 9478 BSET 7
341 9508 RET
_Get_Absolute_Angle:
342 D33F RCALL push_xgsetF000
FILE: E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\RD_UseDLocate_LIB.c
(0001) /***********************************************************
(0002) * 函数库说明:差分定位数值计算函数库 *
(0003) * 版本: v1.00beta *
(0004) * 作者: 王卓然 *
(0005) * 创建日期: 2008年3月29日 *
(0006) * -------------------------------------------------------- *
(0007) * [支 持 库] *
(0008) * 支持库名称: *
(0009) * 需要版本: *
(0010) * 支持库说明: *
(0011) * -------------------------------------------------------- *
(0012) * [版本更新] *
(0013) * 修改: *
(0014) * 修改日期: *
(0015) * 版本: *
(0016) * -------------------------------------------------------- *
(0017) * [版本历史] *
(0018) * -------------------------------------------------------- *
(0019) * [使用说明] *
(0020) ***********************************************************/
(0021)
(0022) /********************
(0023) * 头 文 件 配 置 区 *
(0024) ********************/
(0025) # include "RD_MacroAndConst.h"
(0026) # include "DL_Config.h"
(0027) # include "RD_UseDLocate_LIB.h"
(0028) # include "PF_Config.h"
(0029) # include "Math.h"
(0030)
(0031) /********************
(0032) * 系 统 宏 定 义 *
(0033) ********************/
(0034)
(0035) /*------------------*
(0036) * 常 数 宏 定 义 *
(0037) *------------------*/
(0038)
(0039) //轮子直径
(0040) #ifndef WHEEL_D_L
(0041) #error No define WHEEL_D_L!
(0042) #endif
(0043) #ifndef WHEEL_D_R
(0044) #error No define WHEEL_D_R!
(0045) #endif
(0046)
(0047) //轮间距
(0048) #ifndef D_BTW_WHEEL
(0049) #error No define D_BTW_WHEEL
(0050) #endif
(0051)
(0052) //每圈线精度
(0053) #ifndef N_L
(0054) #error No define N_L
(0055) #endif
(0056) #ifndef N_R
(0057) #error No define N_R
(0058) #endif
(0059)
(0060) //码盘倍频数
(0061) #ifndef MULTIPLE
(0062) #error No define MULTIPLE
(0063) #endif
(0064)
(0065) //计数器 到 弧长
(0066) # define K_L ((PI * (WHEEL_D_L)) / ((MULTIPLE) * (N_L)))
(0067) # define K_R ((PI * (WHEEL_D_R)) / ((MULTIPLE) * (N_R)))
(0068)
(0069)
(0070)
(0071)
(0072) /*------------------*
(0073) * 动 作 宏 定 义 *
(0074) *------------------*/
(0075)
(0076) /********************
(0077) * 自定义类型声明区 *
(0078) ********************/
(0079)
(0080) /********************
(0081) * 模块结构体定义区 *
(0082) ********************/
(0083)
(0084) /********************
(0085) * 函 数 声 明 区 *
(0086) ********************/
(0087) float Get_Absolute_Angle(void);
(0088) float fMod(float fNumberA,float fNumberB);
(0089) BOOL PROC_Difference_Locate(void);
(0090)
(0091) /********************
(0092) * 模块函数声明区 *
(0093) ********************/
(0094)
(0095) /********************
(0096) * 模块变量声明区 *
(0097) ********************/
(0098)
(0099) /********************
(0100) * 全局变量声明区 *
(0101) ********************/
(0102) float g_fLastAngle = 0.0;
(0103) float g_fX = 0.0;
(0104) float g_fY = 0.0;
(0105)
(0106) /********************
(0107) * 全局变量声引用区 *
(0108) ********************/
(0109) extern BOOL g_bRunFlagB;
(0110)
(0111) /***********************************************************
(0112) * 函数说明:获取当前绝对角度函数 *
(0113) * 输入: 无 *
(0114) * 输出: 角度值 *
(0115) * 调用函数:无 *
(0116) ***********************************************************/
(0117) float Get_Absolute_Angle(void)
(0118) {
(0119) return
(0120) (
343 E500 LDI R16,0x50
344 E010 LDI R17,0
345 D35D RCALL lpm32
346 0118 MOVW R2,R16
347 0129 MOVW R4,R18
348 E40C LDI R16,0x4C
349 E010 LDI R17,0
34A D358 RCALL lpm32
34B 0138 MOVW R6,R16
34C 0149 MOVW R8,R18
34D 9120 010A LDS R18,g_lCounterR+2
34F 9130 010B LDS R19,g_lCounterR+3
351 9100 0108 LDS R16,g_lCounterR
353 9110 0109 LDS R17,g_lCounterR+1
355 D443 RCALL long2fp
356 933A ST R19,-Y
357 932A ST R18,-Y
358 931A ST R17,-Y
359 930A ST R16,-Y
35A 0183 MOVW R16,R6
35B 0194 MOVW R18,R8
35C D629 RCALL fpmule2
35D 0138 MOVW R6,R16
35E 0149 MOVW R8,R18
35F E408 LDI R16,0x48
360 E010 LDI R17,0
361 D341 RCALL lpm32
362 01A8 MOVW R20,R16
363 01B9 MOVW R22,R18
364 9120 0106 LDS R18,g_lCounterL+2
366 9130 0107 LDS R19,g_lCounterL+3
368 9100 0104 LDS R16,g_lCounterL
36A 9110 0105 LDS R17,g_lCounterL+1
36C D42C RCALL long2fp
36D 933A ST R19,-Y
36E 932A ST R18,-Y
36F 931A ST R17,-Y
370 930A ST R16,-Y
371 018A MOVW R16,R20
372 019B MOVW R18,R22
373 D61C RCALL fpmule2x
374 0183 MOVW R16,R6
375 0194 MOVW R18,R8
376 D3DE RCALL fpsub2x
377 0181 MOVW R16,R2
378 0192 MOVW R18,R4
379 D60C RCALL fpmule2
37A C30C RJMP pop_xgsetF000
_Get_Relative_Angle:
lDCR --> Y,+8
lDCL --> Y,+4
37B D2C8 RCALL push_arg4
37C D305 RCALL push_xgsetF000
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?