passive_encoder.lst

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

LST
1,758
字号
     1A9 BE0F      OUT	0x3F,R0
     1AA 91B9      LD	R27,Y+
     1AB 91A9      LD	R26,Y+
     1AC 9199      LD	R25,Y+
     1AD 9189      LD	R24,Y+
     1AE 9139      LD	R19,Y+
     1AF 9129      LD	R18,Y+
     1B0 9119      LD	R17,Y+
     1B1 9109      LD	R16,Y+
     1B2 9059      LD	R5,Y+
     1B3 9049      LD	R4,Y+
     1B4 9039      LD	R3,Y+
     1B5 9029      LD	R2,Y+
     1B6 9019      LD	R1,Y+
     1B7 9009      LD	R0,Y+
     1B8 9518      RETI
_INT1_ISR:
     1B9 920A      ST	R0,-Y
     1BA 921A      ST	R1,-Y
     1BB 922A      ST	R2,-Y
     1BC 923A      ST	R3,-Y
     1BD 924A      ST	R4,-Y
     1BE 925A      ST	R5,-Y
     1BF 930A      ST	R16,-Y
     1C0 931A      ST	R17,-Y
     1C1 932A      ST	R18,-Y
     1C2 933A      ST	R19,-Y
     1C3 938A      ST	R24,-Y
     1C4 939A      ST	R25,-Y
     1C5 93AA      ST	R26,-Y
     1C6 93BA      ST	R27,-Y
     1C7 B60F      IN	R0,0x3F
     1C8 920A      ST	R0,-Y
(0168) }
(0169) 
(0170) /***********************************************************
(0171) *   函数说明:INT1中断处理程序                             *
(0172) *   输入:    无                                           *
(0173) *   输出:    无                                           *
(0174) *   调用函数:INSERT_INT1_ISR_CODE                         *
(0175) ***********************************************************/
(0176) void INT1_ISR(void) 
(0177) {
(0178)     INSERT_INT1_ISR_CODE
     1C9 9478      BSET	7
     1CA B183      IN	R24,0x03
     1CB 7081      ANDI	R24,1
     1CC B199      IN	R25,0x09
     1CD 9596      LSR	R25
     1CE 9596      LSR	R25
     1CF 9596      LSR	R25
     1D0 7091      ANDI	R25,1
     1D1 1798      CP	R25,R24
     1D2 F4C9      BNE	0x01EC
     1D3 E081      LDI	R24,1
     1D4 E090      LDI	R25,0
     1D5 E0A0      LDI	R26,0
     1D6 E0B0      LDI	R27,0
     1D7 9040 010A LDS	R4,g_lCounterR+2
     1D9 9050 010B LDS	R5,g_lCounterR+3
     1DB 9020 0108 LDS	R2,g_lCounterR
     1DD 9030 0109 LDS	R3,g_lCounterR+1
     1DF 1A28      SUB	R2,R24
     1E0 0A39      SBC	R3,R25
     1E1 0A4A      SBC	R4,R26
     1E2 0A5B      SBC	R5,R27
     1E3 9230 0109 STS	g_lCounterR+1,R3
     1E5 9220 0108 STS	g_lCounterR,R2
     1E7 9250 010B STS	g_lCounterR+3,R5
     1E9 9240 010A STS	g_lCounterR+2,R4
     1EB C018      RJMP	0x0204
     1EC E081      LDI	R24,1
     1ED E090      LDI	R25,0
     1EE E0A0      LDI	R26,0
     1EF E0B0      LDI	R27,0
     1F0 9040 010A LDS	R4,g_lCounterR+2
     1F2 9050 010B LDS	R5,g_lCounterR+3
     1F4 9020 0108 LDS	R2,g_lCounterR
     1F6 9030 0109 LDS	R3,g_lCounterR+1
     1F8 0E28      ADD	R2,R24
     1F9 1E39      ADC	R3,R25
     1FA 1E4A      ADC	R4,R26
     1FB 1E5B      ADC	R5,R27
     1FC 9230 0109 STS	g_lCounterR+1,R3
     1FE 9220 0108 STS	g_lCounterR,R2
     200 9250 010B STS	g_lCounterR+3,R5
     202 9240 010A STS	g_lCounterR+2,R4
     204 9009      LD	R0,Y+
     205 BE0F      OUT	0x3F,R0
     206 91B9      LD	R27,Y+
     207 91A9      LD	R26,Y+
     208 9199      LD	R25,Y+
     209 9189      LD	R24,Y+
     20A 9139      LD	R19,Y+
     20B 9129      LD	R18,Y+
     20C 9119      LD	R17,Y+
     20D 9109      LD	R16,Y+
     20E 9059      LD	R5,Y+
     20F 9049      LD	R4,Y+
     210 9039      LD	R3,Y+
     211 9029      LD	R2,Y+
     212 9019      LD	R1,Y+
     213 9009      LD	R0,Y+
     214 9518      RETI
_PCINT1_ISR:
     215 920A      ST	R0,-Y
     216 921A      ST	R1,-Y
     217 922A      ST	R2,-Y
     218 923A      ST	R3,-Y
     219 924A      ST	R4,-Y
     21A 925A      ST	R5,-Y
     21B 930A      ST	R16,-Y
     21C 931A      ST	R17,-Y
     21D 932A      ST	R18,-Y
     21E 933A      ST	R19,-Y
     21F 938A      ST	R24,-Y
     220 939A      ST	R25,-Y
     221 93AA      ST	R26,-Y
     222 93BA      ST	R27,-Y
     223 B60F      IN	R0,0x3F
     224 920A      ST	R0,-Y
(0179) }
(0180) 
(0181) /***********************************************************
(0182) *   函数说明:PCINT1中断处理程序                           *
(0183) *   输入:    无                                           *
(0184) *   输出:    无                                           *
(0185) *   调用函数:INSERT_PCINT1_ISR_CODE                       *
(0186) ***********************************************************/
(0187) void PCINT1_ISR(void)
(0188) {
(0189)     INSERT_PCINT1_ISR_CODE
     225 9478      BSET	7
     226 B186      IN	R24,0x06
     227 9586      LSR	R24
     228 9586      LSR	R24
     229 9586      LSR	R24
     22A 7081      ANDI	R24,1
     22B B199      IN	R25,0x09
     22C 9596      LSR	R25
     22D 9596      LSR	R25
     22E 7091      ANDI	R25,1
     22F 1798      CP	R25,R24
     230 F4C9      BNE	0x024A
     231 E081      LDI	R24,1
     232 E090      LDI	R25,0
     233 E0A0      LDI	R26,0
     234 E0B0      LDI	R27,0
     235 9040 0106 LDS	R4,g_lCounterL+2
     237 9050 0107 LDS	R5,g_lCounterL+3
     239 9020 0104 LDS	R2,g_lCounterL
     23B 9030 0105 LDS	R3,g_lCounterL+1
     23D 1A28      SUB	R2,R24
     23E 0A39      SBC	R3,R25
     23F 0A4A      SBC	R4,R26
     240 0A5B      SBC	R5,R27
     241 9230 0105 STS	g_lCounterL+1,R3
     243 9220 0104 STS	g_lCounterL,R2
     245 9250 0107 STS	g_lCounterL+3,R5
     247 9240 0106 STS	g_lCounterL+2,R4
     249 C018      RJMP	0x0262
     24A E081      LDI	R24,1
     24B E090      LDI	R25,0
     24C E0A0      LDI	R26,0
     24D E0B0      LDI	R27,0
     24E 9040 0106 LDS	R4,g_lCounterL+2
     250 9050 0107 LDS	R5,g_lCounterL+3
     252 9020 0104 LDS	R2,g_lCounterL
     254 9030 0105 LDS	R3,g_lCounterL+1
     256 0E28      ADD	R2,R24
     257 1E39      ADC	R3,R25
     258 1E4A      ADC	R4,R26
     259 1E5B      ADC	R5,R27
     25A 9230 0105 STS	g_lCounterL+1,R3
     25C 9220 0104 STS	g_lCounterL,R2
     25E 9250 0107 STS	g_lCounterL+3,R5
     260 9240 0106 STS	g_lCounterL+2,R4
     262 9009      LD	R0,Y+
     263 BE0F      OUT	0x3F,R0
     264 91B9      LD	R27,Y+
     265 91A9      LD	R26,Y+
     266 9199      LD	R25,Y+
     267 9189      LD	R24,Y+
     268 9139      LD	R19,Y+
     269 9129      LD	R18,Y+
     26A 9119      LD	R17,Y+
     26B 9109      LD	R16,Y+
     26C 9059      LD	R5,Y+
     26D 9049      LD	R4,Y+
     26E 9039      LD	R3,Y+
     26F 9029      LD	R2,Y+
     270 9019      LD	R1,Y+
     271 9009      LD	R0,Y+
     272 9518      RETI
_PCINT0_ISR:
     273 920A      ST	R0,-Y
     274 921A      ST	R1,-Y
     275 922A      ST	R2,-Y
     276 923A      ST	R3,-Y
     277 924A      ST	R4,-Y
     278 925A      ST	R5,-Y
     279 930A      ST	R16,-Y
     27A 931A      ST	R17,-Y
     27B 932A      ST	R18,-Y
     27C 933A      ST	R19,-Y
     27D 938A      ST	R24,-Y
     27E 939A      ST	R25,-Y
     27F 93AA      ST	R26,-Y
     280 93BA      ST	R27,-Y
     281 B60F      IN	R0,0x3F
     282 920A      ST	R0,-Y
(0190) }
(0191) 
(0192) /***********************************************************
(0193) *   函数说明:PCINT0中断处理程序                           *
(0194) *   输入:    无                                           *
(0195) *   输出:    无                                           *
(0196) *   调用函数:INSERT_PCINT0_ISR_CODE                       *
(0197) ***********************************************************/
(0198) void PCINT0_ISR(void)
(0199) {
(0200)     INSERT_PCINT0_ISR_CODE
     283 9478      BSET	7
     284 B183      IN	R24,0x03
     285 7081      ANDI	R24,1
     286 B199      IN	R25,0x09
     287 9596      LSR	R25
     288 9596      LSR	R25
     289 9596      LSR	R25
     28A 7091      ANDI	R25,1
     28B 1798      CP	R25,R24
     28C F4C9      BNE	0x02A6
     28D E081      LDI	R24,1
     28E E090      LDI	R25,0
     28F E0A0      LDI	R26,0
     290 E0B0      LDI	R27,0
     291 9040 010A LDS	R4,g_lCounterR+2
     293 9050 010B LDS	R5,g_lCounterR+3
     295 9020 0108 LDS	R2,g_lCounterR
     297 9030 0109 LDS	R3,g_lCounterR+1
     299 0E28      ADD	R2,R24
     29A 1E39      ADC	R3,R25
     29B 1E4A      ADC	R4,R26
     29C 1E5B      ADC	R5,R27
     29D 9230 0109 STS	g_lCounterR+1,R3
     29F 9220 0108 STS	g_lCounterR,R2
     2A1 9250 010B STS	g_lCounterR+3,R5
     2A3 9240 010A STS	g_lCounterR+2,R4
     2A5 C018      RJMP	0x02BE
     2A6 E081      LDI	R24,1
     2A7 E090      LDI	R25,0
     2A8 E0A0      LDI	R26,0
     2A9 E0B0      LDI	R27,0
     2AA 9040 010A LDS	R4,g_lCounterR+2
     2AC 9050 010B LDS	R5,g_lCounterR+3
     2AE 9020 0108 LDS	R2,g_lCounterR
     2B0 9030 0109 LDS	R3,g_lCounterR+1
     2B2 1A28      SUB	R2,R24
     2B3 0A39      SBC	R3,R25
     2B4 0A4A      SBC	R4,R26
     2B5 0A5B      SBC	R5,R27
     2B6 9230 0109 STS	g_lCounterR+1,R3
     2B8 9220 0108 STS	g_lCounterR,R2
     2BA 9250 010B STS	g_lCounterR+3,R5
     2BC 9240 010A STS	g_lCounterR+2,R4
     2BE 9009      LD	R0,Y+
     2BF BE0F      OUT	0x3F,R0
     2C0 91B9      LD	R27,Y+
     2C1 91A9      LD	R26,Y+
     2C2 9199      LD	R25,Y+
     2C3 9189      LD	R24,Y+
     2C4 9139      LD	R19,Y+
     2C5 9129      LD	R18,Y+
     2C6 9119      LD	R17,Y+
     2C7 9109      LD	R16,Y+
     2C8 9059      LD	R5,Y+
     2C9 9049      LD	R4,Y+
     2CA 9039      LD	R3,Y+
     2CB 9029      LD	R2,Y+
     2CC 9019      LD	R1,Y+
     2CD 9009      LD	R0,Y+
     2CE 9518      RETI
(0201) }
(0202) 
(0203) /***********************************************************
(0204) *   函数声明:定时器0初始化函数                            *
(0205) *   输入:    无                                           *
(0206) *   输出:    无                                           *
(0207) *   调用函数:无                                           *
(0208) ***********************************************************/
(0209) static void Timer0_INIT(void)
(0210) {
(0211)     TCCR0B = 0x00; //stop
_Timer0_INIT:
HD_Support.c:Timer0_INIT:
     2CF 2422      CLR	R2
     2D0 BC25      OUT	0x25,R2
(0212)     TCNT0 = 0x06; //set count
     2D1 E086      LDI	R24,6
     2D2 BD86      OUT	0x26,R24
(0213)     TCCR0A = 0x00; 
     2D3 BC24      OUT	0x24,R2
(0214)     TCCR0B = 0x03; //start timer
     2D4 E083      LDI	R24,3
     2D5 BD85      OUT	0x25,R24
     2D6 9508      RET
_Timer0_OVF_ISR:
     2D7 920A      ST	R0,-Y
     2D8 921A      ST	R1,-Y
     2D9 922A      ST	R2,-Y
     2DA 923A      ST	R3,-Y
     2DB 924A      ST	R4,-Y
     2DC 925A      ST	R5,-Y
     2DD 926A      ST	R6,-Y
     2DE 927A      ST	R7,-Y
     2DF 928A      ST	R8,-Y
     2E0 929A      ST	R9,-Y
     2E1 930A      ST	R16,-Y
     2E2 931A      ST	R17,-Y
     2E3 932A      ST	R18,-Y
     2E4 933A      ST	R19,-Y
     2E5 938A      ST	R24,-Y
     2E6 939A      ST	R25,-Y
     2E7 93AA      ST	R26,-Y
     2E8 93BA      ST	R27,-Y
     2E9 93EA      ST	R30,-Y
     2EA 93FA      ST	R31,-Y
     2EB B60F      IN	R0,0x3F
     2EC 920A      ST	R0,-Y
(0215) }
(0216) 
(0217) /***********************************************************
(0218) *   函数声明:定时器0溢出中断处理程序                      *
(0219) *   输入:    无                                           *
(0220) *   输出:    无                                           *
(0221) *   调用函数:INSERT_TIMER0_OVF_ISR_CODE                   *
(0222) ***********************************************************/
(0223) void Timer0_OVF_ISR(void)
(0224) {
(0225)     TCNT0 = 0x06;
     2ED E086      LDI	R24,6
     2EE BD86      OUT	0x26,R24
(0226)     INSERT_TIMER0_OVF_ISR_CODE
     2EF 9478      BSET	7
     2F0 DDED      RCALL	_Insert_Timer0_OVF_ISR_Code
     2F1 9009      LD	R0,Y+
     2F2 BE0F      OUT	0x3F,R0
     2F3 91F9      LD	R31,Y+
     2F4 91E9      LD	R30,Y+
     2F5 91B9      LD	R27,Y+
     2F6 91A9      LD	R26,Y+
     2F7 9199      LD	R25,Y+

⌨️ 快捷键说明

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