passive_encoder.lst

来自「全场地位系统:小车静止或移动过程中码盘进行全场定位,用的是avr单片机」· LST 代码 · 共 1,758 行 · 第 1/5 页

LST
1,758
字号
__start:
__text_start:
      65 EFCF      LDI	R28,0xFF
      66 E0D4      LDI	R29,4
      67 BFCD      OUT	0x3D,R28
      68 BFDE      OUT	0x3E,R29
      69 50C0      SUBI	R28,0
      6A 40D2      SBCI	R29,2
      6B EA0A      LDI	R16,0xAA
      6C 8308      STD	Y+0,R16
      6D 2400      CLR	R0
      6E E4ED      LDI	R30,0x4D
      6F E0F1      LDI	R31,1
      70 E011      LDI	R17,1
      71 34ED      CPI	R30,0x4D
      72 07F1      CPC	R31,R17
      73 F011      BEQ	0x0076
      74 9201      ST	R0,Z+
      75 CFFB      RJMP	0x0071
      76 8300      STD	Z+0,R16
      77 E7EC      LDI	R30,0x7C
      78 E0F0      LDI	R31,0
      79 E0A0      LDI	R26,0
      7A E0B1      LDI	R27,1
      7B E010      LDI	R17,0
      7C E000      LDI	R16,0
      7D BF0B      OUT	0x3B,R16
      7E 3CE9      CPI	R30,0xC9
      7F 07F1      CPC	R31,R17
      80 F021      BEQ	0x0085
      81 95C8      LPM
      82 9631      ADIW	R30,1
      83 920D      ST	R0,X+
      84 CFF9      RJMP	0x007E
      85 D5AC      RCALL	_main
_exit:
      86 CFFF      RJMP	_exit
FILE: E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\LIB_Config.c
(0001) /***********************************************************
(0002) *   声明库说明:库函数配置库                               *
(0003) *   版本:                                                 *
(0004) *   作者:                                                 *
(0005) *   创建日期:                                             *
(0006) * -------------------------------------------------------- *
(0007) *  [硬件说明]                                              *
(0008) *   处理器:                                               *
(0009) *   系统时钟:                                             *
(0010) * -------------------------------------------------------- *
(0011) *  [支 持 库]                                              *
(0012) *   支持库名称:LIB_Config.h                               *
(0013) *   需要版本:  -----                                      *
(0014) *   支持库说明:库函数配置声明库                           *
(0015) * -------------------------------------------------------- *
(0016) *  [版本更新]                                              *
(0017) *   修改:                                                 *
(0018) *   修改日期:                                             *
(0019) *   版本:                                                 *
(0020) * -------------------------------------------------------- *
(0021) *  [版本历史]                                              *
(0022) * -------------------------------------------------------- *
(0023) *  [使用说明]                                              *
(0024) ***********************************************************/
(0025) 
(0026) /********************
(0027) * 头 文 件 配 置 区 *
(0028) ********************/
(0029) # include "LIB_Config.h"
(0030) 
(0031) /********************
(0032) *   系 统 宏 定 义  *
(0033) ********************/
(0034) 
(0035) /*------------------*
(0036) *   常 数 宏 定 义  *
(0037) *------------------*/
(0038) 
(0039) /*------------------*
(0040) *   动 作 宏 定 义  *
(0041) *------------------*/
(0042) 
(0043) /********************
(0044) *  自定义类型声明区 *
(0045) ********************/
(0046) 
(0047) /********************
(0048) *  模块结构体定义区 *
(0049) ********************/
(0050) 
(0051) /********************
(0052) *   函 数 声 明 区  *
(0053) ********************/
(0054) void LIB_INIT(void);
(0055) 
(0056) /********************
(0057) *   模块函数声明区  *
(0058) ********************/
(0059) 
(0060) /********************
(0061) *   模块变量声明区  *
(0062) ********************/
(0063) 
(0064) /********************
(0065) *   全局变量声明区  *
(0066) ********************/
(0067) 
(0068) /***********************************************************
(0069) *   函数说明:库函数初始化函数                             *
(0070) *   输入:    无                                           *
(0071) *   输出:    无                                           *
(0072) *   调用函数:无                                           *
(0073) ***********************************************************/
(0074) void LIB_INIT(void)
(0075) {
_LIB_INIT:
      87 9508      RET
FILE: E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\EX_Support.c
(0001) /***********************************************************
(0002) *   函数库说明:底层硬件初始化驱动函数库                   *
(0003) *   版本:                                                 *
(0004) *   作者:                                                 *
(0005) *   创建日期:                                             *
(0006) * -------------------------------------------------------- *
(0007) *  [硬件说明]                                              *
(0008) *   处理器:                                               *
(0009) *   系统时钟:                                             *
(0010) * -------------------------------------------------------- *
(0011) *  [支 持 库]                                              *
(0012) *   支持库名称:HD_Support.h                               *
(0013) *   需要版本:  -----                                      *
(0014) *   支持库说明:底层硬件初始化声明库                       *
(0015) *                                                          *
(0016) *   支持库名称:EX_Support.h                               *
(0017) *   需要版本:  -----                                      *
(0018) *   支持库说明:底层硬件初始化驱动声明库                   *
(0019) *                                                          *
(0020) *   支持库名称:PF_Config.h                                *
(0021) *   需要版本:  -----                                      *
(0022) *   支持库说明:硬件平台配置声明库                         *
(0023) * -------------------------------------------------------- *
(0024) *  [版本更新]                                              *
(0025) *   修改:                                                 *
(0026) *   修改日期:                                             *
(0027) *   版本:                                                 *
(0028) * -------------------------------------------------------- *
(0029) *  [版本历史]                                              *
(0030) * -------------------------------------------------------- *
(0031) *  [使用说明]                                              *
(0032) ***********************************************************/
(0033) 
(0034) /********************
(0035) * 头 文 件 配 置 区 *
(0036) ********************/
(0037) # include "PF_Config.h"
(0038) # include "Ex_Support.h"
(0039) # include "LIB_Config.h"
(0040) # include "DL_Config.h"
(0041) 
(0042) /********************
(0043) *   系 统 宏 定 义  *
(0044) ********************/
(0045) 
(0046) /*------------------*
(0047) *   常 数 宏 定 义  *
(0048) *------------------*/
(0049) 
(0050) /*------------------*
(0051) *   动 作 宏 定 义  *
(0052) *------------------*/
(0053) # pragma ctask Insert_Timer0_OVF_ISR_Code
(0054) 
(0055) /********************
(0056) *  模块结构体定义区 *
(0057) ********************/
(0058) 
(0059) /********************
(0060) *   函 数 声 明 区  *
(0061) ********************/
(0062) void Insert_Timer0_OVF_ISR_Code(void);
(0063) void Driver_INIT(void);
(0064) void Delay_MS(uint16 wTime);
(0065) BOOL PROC_Send_Frame(void);
(0066) 
(0067) /********************
(0068) *   模块函数声明区  *
(0069) ********************/
(0070) 
(0071) 
(0072) 
(0073) /********************
(0074) *   模块变量声明区  *
(0075) ********************/
(0076) static uint16 s_wSystemDelayTimerCounter = 0;
(0077) 
(0078) 
(0079) /********************
(0080) *   全局变量声明区  *
(0081) ********************/
(0082) uint16 g_wSystemTimer = 0;
(0083) INT32 g_lCounterL = 0;
(0084) INT32 g_lCounterR = 0;
(0085) INT32 g_lCounterLImage = 0;
(0086) INT32 g_lCounterRImage = 0;
(0087) 
(0088) BYTE g_chSendBuffer[17] = 
(0089)                 {
(0090)                     0xAA,17,0xAC,
(0091)                     0,0,0,0,0,0,0,0,0,0,0,0,
(0092)                     0,0x55
(0093)                 };
(0094) BYTE g_chReceiveBuffer[17] = {0};
(0095) BYTE g_chSPICounter = 0;
(0096) 
(0097) /********************
(0098) *  全局变量声引用区 *
(0099) ********************/
(0100) extern BOOL g_bRunFlagA;
(0101) 
(0102) /***********************************************************
(0103) *   函数说明:软件驱动初始化函数                           *
(0104) *   输入:    无                                           *
(0105) *   输出:    无                                           *
(0106) *   调用函数:无                                           *
(0107) ***********************************************************/
(0108) void Driver_INIT(void)
(0109) {
_Driver_INIT:
      88 9508      RET
(0110)     //*在这里插入你的各类软件驱动初始化代码*//
(0111) }
(0112) 
(0113) /***********************************************************
(0114) *   函数说明:数据包发送函数                               *
(0115) *   输入:    无                                           *
(0116) *   输出:    FALSE                                        *
(0117) *   调用函数:无                                           *
(0118) ***********************************************************/
(0119) BOOL PROC_Send_Frame(void)
(0120) {
(0121)     if (g_chSPICounter)
_PROC_Send_Frame:
  n1                   --> R18
  chXOR0               --> R16
      89 9020 0136 LDS	R2,g_chSPICounter
      8B 2022      TST	R2
      8C F011      BEQ	0x008F
(0122)     {
(0123)         return TRUE;
      8D E001      LDI	R16,1
      8E C041      RJMP	0x00D0
(0124)     }
(0125)     //处理数据
(0126)     TYPE_CONVERSION(&g_chSendBuffer[3],float) = g_fX;
      8F 9040 013D LDS	R4,g_fX+2
      91 9050 013E LDS	R5,g_fX+3
      93 9020 013B LDS	R2,g_fX
      95 9030 013C LDS	R3,g_fX+1
      97 E1E7      LDI	R30,0x17
      98 E0F1      LDI	R31,1
      99 8220      STD	Z+0,R2
      9A 8231      STD	Z+1,R3
      9B 8242      STD	Z+2,R4
      9C 8253      STD	Z+3,R5
(0127)     TYPE_CONVERSION(&g_chSendBuffer[7],float) = g_fY;
      9D 9040 0141 LDS	R4,g_fY+2
      9F 9050 0142 LDS	R5,g_fY+3
      A1 9020 013F LDS	R2,g_fY
      A3 9030 0140 LDS	R3,g_fY+1
      A5 E1EB      LDI	R30,0x1B
      A6 E0F1      LDI	R31,1
      A7 8220      STD	Z+0,R2
      A8 8231      STD	Z+1,R3
      A9 8242      STD	Z+2,R4
      AA 8253      STD	Z+3,R5
(0128)     TYPE_CONVERSION(&g_chSendBuffer[11],float) = g_fLastAngle;
      AB 9040 0139 LDS	R4,g_fLastAngle+2
      AD 9050 013A LDS	R5,g_fLastAngle+3
      AF 9020 0137 LDS	R2,g_fLastAngle
      B1 9030 0138 LDS	R3,g_fLastAngle+1
      B3 E1EF      LDI	R30,0x1F
      B4 E0F1      LDI	R31,1
      B5 8220      STD	Z+0,R2
      B6 8231      STD	Z+1,R3
      B7 8242      STD	Z+2,R4
      B8 8253      STD	Z+3,R5
(0129)     
(0130)     {
(0131)         UINT8 n = 0;
(0132)         BYTE chXOR = 0;
      B9 2700      CLR	R16
(0133)         
(0134)         for(n = 1;n < 15;n++)
      BA E021      LDI	R18,1
      BB C009      RJMP	0x00C5
(0135)         {
(0136)             chXOR ^= g_chSendBuffer[n];
      BC E184      LDI	R24,0x14
      BD E091      LDI	R25,1
      BE 2FE2      MOV	R30,R18
      BF 27FF      CLR	R31
      C0 0FE8      ADD	R30,R24
      C1 1FF9      ADC	R31,R25
      C2 8020      LDD	R2,Z+0
      C3 2502      EOR	R16,R2
      C4 9523      INC	R18
      C5 302F      CPI	R18,0xF
      C6 F3A8      BCS	0x00BC
(0137)         }
(0138)         
(0139)         g_chSendBuffer[15] = chXOR;
      C7 9300 0123 STS	0x0123,R16
(0140)     }
(0141)     
(0142)     //开始发送数据
(0143)     SPI_SS = LOW;
      C9 B185      IN	R24,0x05
      CA 7F8B      ANDI	R24,0xFB
      CB B985      OUT	0x05,R24
(0144)     SPDR = g_chSendBuffer[0];
      CC 9020 0114 LDS	R2,g_chSendBuffer
      CE BC2E      OUT	0x2E,R2
(0145)     
(0146)     return FALSE;
      CF 2700      CLR	R16
      D0 9508      RET
(0147) }
(0148) 
(0149) /***********************************************************
(0150) *   函数说明:系统毫秒延时函数                             *
(0151) *   输入:    需要延时的时间长度                           *
(0152) *   输出:    无                                           *
(0153) *   调用函数:无                                           *
(0154) ***********************************************************/
(0155) void Delay_MS(uint16 wTime)
(0156) {
(0157)     s_wSystemDelayTimerCounter = wTime;
_Delay_MS:
  wTime                --> R16
      D1 9310 0101 STS	0x0101,R17
      D3 9300 0100 STS	0x0100,R16
(0158)     
(0159)     while(s_wSystemDelayTimerCounter);
      D5 9020 0100 LDS	R2,0x0100
      D7 9030 0101 LDS	R3,0x0101
      D9 2022      TST	R2
      DA F7D1      BNE	0x00D5
      DB 2033      TST	R3
      DC F7C1      BNE	0x00D5
      DD 9508      RET
(0160) }
(0161) 
(0162) /***********************************************************
(0163) *   函数说明:定时器0中断处理程序代码插入函数              *

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?