passive_encoder.lst

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

LST
1,758
字号
(0164) *   输入:    无                                           *
(0165) *   输出:    无                                           *
(0166) *   调用函数:无                                           *
(0167) ***********************************************************/
(0168) void Insert_Timer0_OVF_ISR_Code(void)
(0169) {
(0170)     g_wSystemTimer++;
_Insert_Timer0_OVF_ISR_Code:
  cflags0              --> R16
      DE 9180 0102 LDS	R24,g_wSystemTimer
      E0 9190 0103 LDS	R25,g_wSystemTimer+1
      E2 9601      ADIW	R24,1
      E3 9390 0103 STS	g_wSystemTimer+1,R25
      E5 9380 0102 STS	g_wSystemTimer,R24
(0171) 
(0172)     if (s_wSystemDelayTimerCounter)
      E7 9020 0100 LDS	R2,0x0100
      E9 9030 0101 LDS	R3,0x0101
      EB 2022      TST	R2
      EC F411      BNE	0x00EF
      ED 2033      TST	R3
      EE F031      BEQ	0x00F5
(0173)     {
(0174)         s_wSystemDelayTimerCounter--;
      EF 01C1      MOVW	R24,R2
      F0 9701      SBIW	R24,1
      F1 9390 0101 STS	0x0101,R25
      F3 9380 0100 STS	0x0100,R24
(0175)     }
(0176)     
(0177)     SAFE_CODE_PERFORMANCE
      F5 B70F      IN	R16,0x3F
      F6 94F8      BCLR	7
      F7 9040 0106 LDS	R4,g_lCounterL+2
      F9 9050 0107 LDS	R5,g_lCounterL+3
      FB 9020 0104 LDS	R2,g_lCounterL
      FD 9030 0105 LDS	R3,g_lCounterL+1
      FF 9230 010D STS	g_lCounterLImage+1,R3
     101 9220 010C STS	g_lCounterLImage,R2
     103 9250 010F STS	g_lCounterLImage+3,R5
     105 9240 010E STS	g_lCounterLImage+2,R4
     107 9040 010A LDS	R4,g_lCounterR+2
     109 9050 010B LDS	R5,g_lCounterR+3
     10B 9020 0108 LDS	R2,g_lCounterR
     10D 9030 0109 LDS	R3,g_lCounterR+1
     10F 9230 0111 STS	g_lCounterRImage+1,R3
     111 9220 0110 STS	g_lCounterRImage,R2
     113 9250 0113 STS	g_lCounterRImage+3,R5
     115 9240 0112 STS	g_lCounterRImage+2,R4
     117 BF0F      OUT	0x3F,R16
(0178)     (
(0179)         g_lCounterLImage = g_lCounterL;
(0180)         g_lCounterRImage = g_lCounterR;
(0181)     )
(0182)     g_bRunFlagA = TRUE;
     118 E081      LDI	R24,1
     119 9380 014B STS	g_bRunFlagA,R24
     11B 9508      RET
FILE: E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\HD_Support.c
(0001) /***********************************************************
(0002) *   函数库说明:底层硬件初始化函数库                       *
(0003) *   版本:                                                 *
(0004) *   作者:                                                 *
(0005) *   创建日期:                                             *
(0006) * -------------------------------------------------------- *
(0007) *  [硬件说明]                                              *
(0008) *   处理器:                                               *
(0009) *   系统时钟:                                             *
(0010) * -------------------------------------------------------- *
(0011) *  [支 持 库]                                              *
(0012) *   支持库名称:HD_Support.h                               *
(0013) *   需要版本:  -----                                      *
(0014) *   支持库说明:底层硬件初始化声明库                       *
(0015) *                                                          *
(0016) *   支持库名称:PF_Config.h                                *
(0017) *   需要版本:  -----                                      *
(0018) *   支持库说明:硬件平台配置声明库                         *
(0019) * -------------------------------------------------------- *
(0020) *  [版本更新]                                              *
(0021) *   修改:                                                 *
(0022) *   修改日期:                                             *
(0023) *   版本:                                                 *
(0024) * -------------------------------------------------------- *
(0025) *  [版本历史]                                              *
(0026) * -------------------------------------------------------- *
(0027) *  [使用说明]                                              *
(0028) ***********************************************************/
(0029) 
(0030) /********************
(0031) * 头 文 件 配 置 区 *
(0032) ********************/
(0033) # include "PF_Config.h"
(0034) # include "HD_Support.h"
(0035) 
(0036) /********************
(0037) *   系 统 宏 定 义  *
(0038) ********************/
(0039) # pragma interrupt_handler Timer0_OVF_ISR:iv_TIMER0_OVF
(0040) # pragma interrupt_handler INT0_ISR:iv_INT0
(0041) # pragma interrupt_handler INT1_ISR:iv_INT1
(0042) # pragma interrupt_handler PCINT0_ISR:iv_PCINT0
(0043) # pragma interrupt_handler PCINT1_ISR:iv_PCINT1
(0044) # pragma interrupt_handler SPI_STC_ISR:iv_SPI_STC
(0045) /*------------------*
(0046) *   常 数 宏 定 义  *
(0047) *------------------*/
(0048) 
(0049) /*------------------*
(0050) *   动 作 宏 定 义  *
(0051) *------------------*/
(0052) #ifndef INSERT_TIMER0_OVF_ISR_CODE
(0053)     # define INSERT_TIMER0_OVF_ISR_CODE
(0054) #endif
(0055) 
(0056) #ifndef INSERT_INT0_ISR_CODE
(0057)     # define INSERT_INT0_ISR_CODE
(0058) #endif
(0059) 
(0060) #ifndef INSERT_INT1_ISR_CODE
(0061)     # define INSERT_INT1_ISR_CODE
(0062) #endif
(0063) 
(0064) #ifndef INSERT_PCINT0_ISR_CODE
(0065)     # define  INSERT_PCINT0_ISR_CODE
(0066) #endif
(0067) 
(0068) #ifndef INSERT_PCINT1_ISR_CODE
(0069)     # define  INSERT_PCINT1_ISR_CODE
(0070) #endif
(0071) 
(0072) #ifndef INSERT_SPI_STC_ISR_CODE
(0073)     # define  INSERT_SPI_STC_ISR_CODE
(0074) #endif
(0075) /********************
(0076) *  模块结构体定义区 *
(0077) ********************/
(0078) 
(0079) /********************
(0080) *   函 数 声 明 区  *
(0081) ********************/
(0082) void Device_INIT(void);
(0083) 
(0084) /********************
(0085) *   模块函数声明区  *
(0086) ********************/
(0087) static void Port_INIT(void);
(0088) static void Timer0_INIT(void);
(0089) static void Extend_INT_INIT(void);
(0090) static void SPI_INIT(void);
(0091) 
(0092) /********************
(0093) *   模块变量声明区  *
(0094) ********************/
(0095) 
(0096) /********************
(0097) *   全局变量声明区  *
(0098) ********************/
(0099) 
(0100) 
(0101) /***********************************************************
(0102) *   函数说明:系统硬件初始化函数                           *
(0103) *   输入:    无                                           *
(0104) *   输出:    无                                           *
(0105) *   调用函数:Port_INIT()   Timer0_INIT()                  *
(0106) ***********************************************************/
(0107) void Device_INIT(void)
(0108) {
(0109)     Port_INIT();
_Device_INIT:
     11C D007      RCALL	HD_Support.c:Port_INIT
(0110)     Timer0_INIT();
     11D D1B1      RCALL	_Timer0_INIT
(0111)     SPI_INIT();
     11E D1E9      RCALL	HD_Support.c:SPI_INIT
(0112)     Extend_INT_INIT();
     11F D02D      RCALL	HD_Support.c:Extend_INT_INIT
(0113)     
(0114)     TIMSK0 = BIT(TOIE0);                                    //启动定时期0溢出中断资源
     120 E081      LDI	R24,1
     121 9380 006E STS	0x006E,R24
     123 9508      RET
(0115) }
(0116) 
(0117) /***********************************************************
(0118) *   函数说明:系统端口初始化函数                           *
(0119) *   输入:    无                                           *
(0120) *   输出:    无                                           *
(0121) *   调用函数:无                                           *
(0122) ***********************************************************/
(0123) static void Port_INIT(void)
(0124) {
(0125)     //LCDSP027
(0126)     DDR_PD1 = PDIR_OUT;_PD1 = HIGH;
HD_Support.c:Port_INIT:
_Port_INIT:
     124 B18A      IN	R24,0x0A
     125 6082      ORI	R24,2
     126 B98A      OUT	0x0A,R24
     127 B18B      IN	R24,0x0B
     128 6082      ORI	R24,2
     129 B98B      OUT	0x0B,R24
(0127)     DDR_PD0 = PDIR_OUT;_PD0 = HIGH;
     12A B18A      IN	R24,0x0A
     12B 6081      ORI	R24,1
     12C B98A      OUT	0x0A,R24
     12D B18B      IN	R24,0x0B
     12E 6081      ORI	R24,1
     12F B98B      OUT	0x0B,R24
(0128)     
(0129)     //外部中断
(0130)     DDR_PD2 = PDIR_IN; _PD2 = HIGH;                         //开启上拉电阻
     130 B18A      IN	R24,0x0A
     131 7F8B      ANDI	R24,0xFB
     132 B98A      OUT	0x0A,R24
     133 B18B      IN	R24,0x0B
     134 6084      ORI	R24,4
     135 B98B      OUT	0x0B,R24
(0131)     DDR_PC3 = PDIR_IN; _PC3 = HIGH;                         //开启上拉电阻
     136 B187      IN	R24,0x07
     137 7F87      ANDI	R24,0xF7
     138 B987      OUT	0x07,R24
     139 B188      IN	R24,0x08
     13A 6088      ORI	R24,0x8
     13B B988      OUT	0x08,R24
(0132)     
(0133)     DDR_PD3 = PDIR_IN; _PD3 = HIGH;                         //开启上拉电阻
     13C B18A      IN	R24,0x0A
     13D 7F87      ANDI	R24,0xF7
     13E B98A      OUT	0x0A,R24
     13F B18B      IN	R24,0x0B
     140 6088      ORI	R24,0x8
     141 B98B      OUT	0x0B,R24
(0134)     DDR_PB0 = PDIR_IN; _PB0 = HIGH;                         //开启上拉电阻
     142 B184      IN	R24,0x04
     143 7F8E      ANDI	R24,0xFE
     144 B984      OUT	0x04,R24
     145 B185      IN	R24,0x05
     146 6081      ORI	R24,1
     147 B985      OUT	0x05,R24
(0135)     
(0136)     //SPI初始化
(0137)     DDRB |= BIT(PB5)|BIT(PB3)|BIT(PB2);
     148 B184      IN	R24,0x04
     149 628C      ORI	R24,0x2C
     14A B984      OUT	0x04,R24
(0138)     PORTB |= BIT(PB2);
     14B 9A2A      SBI	0x05,2
     14C 9508      RET
(0139) }
(0140) 
(0141) /***********************************************************
(0142) *   函数说明:外中断初始化函数                             *
(0143) *   输入:    无                                           *
(0144) *   输出:    无                                           *
(0145) *   调用函数:无                                           *
(0146) ***********************************************************/
(0147) static void Extend_INT_INIT(void)
(0148) {
(0149)     //INT0  INT1
(0150)     EICRA = BIT(ISC10)|BIT(ISC00);                          //任意电平变化
HD_Support.c:Extend_INT_INIT:
_Extend_INT_INIT:
     14D E085      LDI	R24,5
     14E 9380 0069 STS	0x0069,R24
(0151)     EIMSK = BIT(INT1)|BIT(INT0);                            //中断使能
     150 E083      LDI	R24,3
     151 BB8D      OUT	0x1D,R24
(0152)     
(0153)     //Pin Change Int
(0154)     PCICR  = BIT(PCIE0)|BIT(PCIE1);
     152 9380 0068 STS	0x0068,R24
(0155)     PCMSK1 = BIT(PCINT11);
     154 E088      LDI	R24,0x8
     155 9380 006C STS	0x006C,R24
(0156)     PCMSK0 = BIT(PCINT0);
     157 E081      LDI	R24,1
     158 9380 006B STS	0x006B,R24
     15A 9508      RET
_INT0_ISR:
     15B 920A      ST	R0,-Y
     15C 921A      ST	R1,-Y
     15D 922A      ST	R2,-Y
     15E 923A      ST	R3,-Y
     15F 924A      ST	R4,-Y
     160 925A      ST	R5,-Y
     161 930A      ST	R16,-Y
     162 931A      ST	R17,-Y
     163 932A      ST	R18,-Y
     164 933A      ST	R19,-Y
     165 938A      ST	R24,-Y
     166 939A      ST	R25,-Y
     167 93AA      ST	R26,-Y
     168 93BA      ST	R27,-Y
     169 B60F      IN	R0,0x3F
     16A 920A      ST	R0,-Y
(0157) }
(0158) 
(0159) /***********************************************************
(0160) *   函数说明:INT0中断处理程序                             *
(0161) *   输入:    无                                           *
(0162) *   输出:    无                                           *
(0163) *   调用函数:INSERT_INT0_ISR_CODE                         *
(0164) ***********************************************************/
(0165) void INT0_ISR(void) 
(0166) {
(0167)     INSERT_INT0_ISR_CODE
     16B 9478      BSET	7
     16C B186      IN	R24,0x06
     16D 9586      LSR	R24
     16E 9586      LSR	R24
     16F 9586      LSR	R24
     170 7081      ANDI	R24,1
     171 B199      IN	R25,0x09
     172 9596      LSR	R25
     173 9596      LSR	R25
     174 7091      ANDI	R25,1
     175 1798      CP	R25,R24
     176 F4C9      BNE	0x0190
     177 E081      LDI	R24,1
     178 E090      LDI	R25,0
     179 E0A0      LDI	R26,0
     17A E0B0      LDI	R27,0
     17B 9040 0106 LDS	R4,g_lCounterL+2
     17D 9050 0107 LDS	R5,g_lCounterL+3
     17F 9020 0104 LDS	R2,g_lCounterL
     181 9030 0105 LDS	R3,g_lCounterL+1
     183 0E28      ADD	R2,R24
     184 1E39      ADC	R3,R25
     185 1E4A      ADC	R4,R26
     186 1E5B      ADC	R5,R27
     187 9230 0105 STS	g_lCounterL+1,R3
     189 9220 0104 STS	g_lCounterL,R2
     18B 9250 0107 STS	g_lCounterL+3,R5
     18D 9240 0106 STS	g_lCounterL+2,R4
     18F C018      RJMP	0x01A8
     190 E081      LDI	R24,1
     191 E090      LDI	R25,0
     192 E0A0      LDI	R26,0
     193 E0B0      LDI	R27,0
     194 9040 0106 LDS	R4,g_lCounterL+2
     196 9050 0107 LDS	R5,g_lCounterL+3
     198 9020 0104 LDS	R2,g_lCounterL
     19A 9030 0105 LDS	R3,g_lCounterL+1
     19C 1A28      SUB	R2,R24
     19D 0A39      SBC	R3,R25
     19E 0A4A      SBC	R4,R26
     19F 0A5B      SBC	R5,R27
     1A0 9230 0105 STS	g_lCounterL+1,R3
     1A2 9220 0104 STS	g_lCounterL,R2
     1A4 9250 0107 STS	g_lCounterL+3,R5
     1A6 9240 0106 STS	g_lCounterL+2,R4
     1A8 9009      LD	R0,Y+

⌨️ 快捷键说明

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