📄 motor.lst
字号:
0302 E010 LDI R17,0
0303 DEC1 RCALL _USARTInit
(0184) TCNT1=00; //定时器1初始化
0304 2422 CLR R2
0305 2433 CLR R3
0306 BC3D OUT 0x2D,R3
0307 BC2C OUT 0x2C,R2
(0185) TCCR1B=0x06;
0308 E086 LDI R24,6
0309 BD8E OUT 0x2E,R24
(0186) DDRB=0x0F; //I/O口初始化
030A E08F LDI R24,0xF
030B BB87 OUT 0x17,R24
(0187) DDRD=0xC0;
030C EC80 LDI R24,0xC0
030D BB81 OUT 0x11,R24
(0188) TIMSK=0x40; //中断初始化
030E E480 LDI R24,0x40
030F BF89 OUT 0x39,R24
(0189) OCR2 = 0x0F; //PWM初始化
0310 E08F LDI R24,0xF
0311 BD83 OUT 0x23,R24
(0190) TCCR2=0x72;
0312 E782 LDI R24,0x72
0313 BD85 OUT 0x25,R24
(0191) PORTB=PORTB&0xFC|0x01;
0314 B388 IN R24,0x18
0315 7F8C ANDI R24,0xFC
0316 6081 ORI R24,1
0317 BB88 OUT 0x18,R24
(0192) PORTD=PORTD&0x3F|0x80;
0318 B382 IN R24,0x12
0319 738F ANDI R24,0x3F
031A 6880 ORI R24,0x80
031B BB82 OUT 0x12,R24
(0193) SEI();
031C 9478 BSET 7
(0194) do{} while(1); //等待中断
031D CFFF RJMP 0x031D
(0195) }
031E 9508 RET
_UART_RXC:
i --> R20
031F D097 RCALL push_lset
0320 D056 RCALL push_gset1
(0196)
(0197) //***************************串行接收中断服务程序******************//
(0198) #pragma interrupt_handler UART_RXC:12
(0199) void UART_RXC(void)
(0200) {char i=0;
0321 2744 CLR R20
(0201) CLI();
0322 94F8 BCLR 7
(0202) Data[0]=UDR;
0323 B02C IN R2,0x0C
0324 92200077 STS _Data,R2
(0203) if(Data[0]==0x55) //起始位检测
0326 2D82 MOV R24,R2
0327 3585 CPI R24,0x55
0328 F4C1 BNE 0x0341
(0204) {do
(0205) {while(!(USR&(1<<RXC)));
0329 9B5F SBIS 0x0B,7
032A CFFE RJMP 0x0329
(0206) i++;
032B 9543 INC R20
(0207) Data[i]=UDR;
032C E787 LDI R24,0x77
032D E090 LDI R25,0
032E 2FE4 MOV R30,R20
032F 27FF CLR R31
0330 0FE8 ADD R30,R24
0331 1FF9 ADC R31,R25
0332 B02C IN R2,0x0C
0333 8220 STD Z+0,R2
(0208) if(i==9)
0334 3049 CPI R20,0x9
0335 F409 BNE 0x0337
(0209) break;} while(1);
0336 C001 RJMP 0x0338
0337 CFF1 RJMP 0x0329
(0210) if((Data[8]==0xFE)&&(Data[9]==0xFF)) //检测结束位
0338 9180007F LDS R24,0x7F
033A 3F8E CPI R24,0xFE
033B F429 BNE 0x0341
033C 91800080 LDS R24,0x80
033E 3F8F CPI R24,0xFF
033F F409 BNE 0x0341
(0211) Datadisposal();}
0340 DF87 RCALL _Datadisposal
(0212) SEI();
0341 9478 BSET 7
(0213) }
0342 D037 RCALL pop_gset1
0343 D08A RCALL pop_lset
0344 9518 RETI
_TIM2_OVF:
0345 D071 RCALL push_lset
0346 9722 SBIW R28,2
(0214)
(0215) //***************************定时器2中断服务程序*******************//
(0216) #pragma interrupt_handler TIM2_OVF:5
(0217) void TIM2_OVF(void)
(0218) {CLI();
0347 94F8 BCLR 7
(0219) EEPROMReadBytes(0x000C,&itime,2);//读采样次数
0348 E082 LDI R24,2
0349 E090 LDI R25,0
034A 8399 STD Y+1,R25
034B 8388 STD Y+0,R24
034C E62D LDI R18,0x6D
034D E030 LDI R19,0
034E E00C LDI R16,0xC
034F E010 LDI R17,0
0350 D0AA RCALL _EEPROMReadBytes
(0220) a++;
0351 91800073 LDS R24,_a
0353 91900074 LDS R25,_a+1
0355 9601 ADIW R24,1
0356 93900074 STS _a+1,R25
0358 93800073 STS _a,R24
(0221) if(a==itime) //时间窗口判断,
035A 9020006D LDS R2,_itime
035C 9030006E LDS R3,_itime+1
035E 1582 CP R24,R2
035F 0593 CPC R25,R3
0360 F439 BNE 0x0368
(0222) {a = 0;
0361 2422 CLR R2
0362 2433 CLR R3
0363 92300074 STS _a+1,R3
0365 92200073 STS _a,R2
(0223) PIDB();}
0367 DD3B RCALL _PIDB
(0224) SEI();
0368 9478 BSET 7
(0225) }
FILE: <library>
0369 9622 ADIW R28,2
036A D063 RCALL pop_lset
036B 9518 RETI
push_arg4:
036C 933A ST R19,-Y
036D 932A ST R18,-Y
push_arg2:
036E 931A ST R17,-Y
036F 930A ST R16,-Y
0370 9508 RET
pop_gset2:
0371 E0E2 LDI R30,2
0372 C008 RJMP pop
pop_gset4:
0373 E0E8 LDI R30,0x8
0374 C006 RJMP pop
pop_gset5:
0375 27EE CLR R30
0376 C004 RJMP pop
push_gset1:
0377 935A ST R21,-Y
0378 934A ST R20,-Y
0379 9508 RET
pop_gset1:
037A E0E1 LDI R30,1
pop:
037B 9149 LD R20,Y+
037C 9159 LD R21,Y+
037D FDE0 SBRC R30,0
037E 9508 RET
037F 9169 LD R22,Y+
0380 9179 LD R23,Y+
0381 FDE1 SBRC R30,1
0382 9508 RET
0383 90A9 LD R10,Y+
0384 90B9 LD R11,Y+
0385 FDE2 SBRC R30,2
0386 9508 RET
0387 90C9 LD R12,Y+
0388 90D9 LD R13,Y+
0389 FDE3 SBRC R30,3
038A 9508 RET
038B 90E9 LD R14,Y+
038C 90F9 LD R15,Y+
038D 9508 RET
push_gset2:
038E 937A ST R23,-Y
038F 936A ST R22,-Y
0390 CFE6 RJMP push_gset1
push_gset3:
0391 92BA ST R11,-Y
0392 92AA ST R10,-Y
0393 CFFA RJMP push_gset2
push_gset4:
0394 92DA ST R13,-Y
0395 92CA ST R12,-Y
0396 CFFA RJMP push_gset3
push_gset5:
0397 92FA ST R15,-Y
0398 92EA ST R14,-Y
0399 CFFA RJMP push_gset4
neg32:
039A 9500 COM R16
039B 9510 COM R17
039C 9520 COM R18
039D 9530 COM R19
039E 5F0F SUBI R16,0xFF
039F 4F1F SBCI R17,0xFF
03A0 4F2F SBCI R18,0xFF
03A1 4F3F SBCI R19,0xFF
03A2 9508 RET
lpm32:
03A3 93EA ST R30,-Y
03A4 93FA ST R31,-Y
03A5 920A ST R0,-Y
03A6 2FE0 MOV R30,R16
03A7 2FF1 MOV R31,R17
03A8 95C8 LPM
03A9 2D00 MOV R16,R0
03AA 9631 ADIW R30,1
03AB 95C8 LPM
03AC 2D10 MOV R17,R0
03AD 9631 ADIW R30,1
03AE 95C8 LPM
03AF 2D20 MOV R18,R0
03B0 9631 ADIW R30,1
03B1 95C8 LPM
03B2 2D30 MOV R19,R0
03B3 9009 LD R0,Y+
03B4 91F9 LD R31,Y+
03B5 91E9 LD R30,Y+
03B6 9508 RET
push_lset:
03B7 93FA ST R31,-Y
03B8 93EA ST R30,-Y
03B9 93BA ST R27,-Y
03BA 93AA ST R26,-Y
03BB 939A ST R25,-Y
03BC 938A ST R24,-Y
03BD 933A ST R19,-Y
03BE 932A ST R18,-Y
03BF 931A ST R17,-Y
03C0 930A ST R16,-Y
03C1 929A ST R9,-Y
03C2 928A ST R8,-Y
03C3 927A ST R7,-Y
03C4 926A ST R6,-Y
03C5 925A ST R5,-Y
03C6 924A ST R4,-Y
03C7 923A ST R3,-Y
03C8 922A ST R2,-Y
03C9 921A ST R1,-Y
03CA 920A ST R0,-Y
03CB B60F IN R0,0x3F
03CC 920A ST R0,-Y
03CD 9508 RET
pop_lset:
03CE 9009 LD R0,Y+
03CF BE0F OUT 0x3F,R0
03D0 9009 LD R0,Y+
03D1 9019 LD R1,Y+
03D2 9029 LD R2,Y+
03D3 9039 LD R3,Y+
03D4 9049 LD R4,Y+
03D5 9059 LD R5,Y+
03D6 9069 LD R6,Y+
03D7 9079 LD R7,Y+
03D8 9089 LD R8,Y+
03D9 9099 LD R9,Y+
03DA 9109 LD R16,Y+
03DB 9119 LD R17,Y+
03DC 9129 LD R18,Y+
03DD 9139 LD R19,Y+
03DE 9189 LD R24,Y+
03DF 9199 LD R25,Y+
03E0 91A9 LD R26,Y+
03E1 91B9 LD R27,Y+
03E2 91E9 LD R30,Y+
03E3 91F9 LD R31,Y+
03E4 9508 RET
_EEPROMread:
03E5 99E1 SBIC 0x1C,1
03E6 CFFE RJMP _EEPROMread
03E7 BB1F OUT 0x1F,R17
03E8 BB0E OUT 0x1E,R16
03E9 9AE0 SBI 0x1C,0
03EA B30D IN R16,0x1D
03EB 9508 RET
_EEPROMwrite:
03EC DF8A RCALL push_gset1
03ED 99E1 SBIC 0x1C,1
03EE CFFE RJMP 0x03ED
03EF BB1F OUT 0x1F,R17
03F0 BB0E OUT 0x1E,R16
03F1 BB2D OUT 0x1D,R18
03F2 B74F IN R20,0x3F
03F3 94F8 BCLR 7
03F4 9AE2 SBI 0x1C,2
03F5 9AE1 SBI 0x1C,1
03F6 BF4F OUT 0x3F,R20
03F7 2700 CLR R16
03F8 2711 CLR R17
03F9 DF80 RCALL pop_gset1
03FA 9508 RET
_EEPROMReadBytes:
03FB DF98 RCALL push_gset4
03FC 2EC2 MOV R12,R18
03FD 2ED3 MOV R13,R19
03FE 2EA0 MOV R10,R16
03FF 2EB1 MOV R11,R17
0400 8568 LDD R22,Y+8
0401 8579 LDD R23,Y+9
0402 2D4C MOV R20,R12
0403 2D5D MOV R21,R13
0404 C00D RJMP 0x0412
0405 2D0A MOV R16,R10
0406 2D1B MOV R17,R11
0407 DFDD RCALL _EEPROMread
0408 2FE4 MOV R30,R20
0409 2FF5 MOV R31,R21
040A 8300 STD Z+0,R16
040B 2D8A MOV R24,R10
040C 2D9B MOV R25,R11
040D 9601 ADIW R24,1
040E 2EA8 MOV R10,R24
040F 2EB9 MOV R11,R25
0410 5F4F SUBI R20,0xFF
0411 4F5F SBCI R21,0xFF
0412 2E26 MOV R2,R22
0413 2E37 MOV R3,R23
0414 5061 SUBI R22,1
0415 4070 SBCI R23,0
0416 2022 TST R2
0417 F769 BNE 0x0405
0418 2033 TST R3
0419 F759 BNE 0x0405
041A DF58 RCALL pop_gset4
041B 9508 RET
_EEPROMWriteBytes:
041C DF77 RCALL push_gset4
041D 2EC2 MOV R12,R18
041E 2ED3 MOV R13,R19
041F 2EA0 MOV R10,R16
0420 2EB1 MOV R11,R17
0421 8568 LDD R22,Y+8
0422 8579 LDD R23,Y+9
0423 2D4C MOV R20,R12
0424 2D5D MOV R21,R13
0425 C00D RJMP 0x0433
0426 2FE4 MOV R30,R20
0427 2FF5 MOV R31,R21
0428 8120 LDD R18,Z+0
0429 2D0A MOV R16,R10
042A 2D1B MOV R17,R11
042B DFC0 RCALL _EEPROMwrite
042C 2D8A MOV R24,R10
042D 2D9B MOV R25,R11
042E 9601 ADIW R24,1
042F 2EA8 MOV R10,R24
0430 2EB9 MOV R11,R25
0431 5F4F SUBI R20,0xFF
0432 4F5F SBCI R21,0xFF
0433 2E26 MOV R2,R22
0434 2E37 MOV R3,R23
0435 5061 SUBI R22,1
0436 4070 SBCI R23,0
0437 2022 TST R2
0438 F769 BNE 0x0426
0439 2033 TST R3
043A F759 BNE 0x0426
043B DF37 RCALL pop_gset4
043C 9508 RET
fp2int:
043D D179 RCALL savfacc1
043E D00F RCALL FTOI
043F 2F02 MOV R16,R18
0440 2F13 MOV R17,R19
0441 FD87 SBRC R24,7
0442 C001 RJMP nojump1
0443 C176 RJMP restorefacc1
nojump1:
0444 9510 COM R17
0445 9501 NEG R16
0446 4F1F SBCI R17,0xFF
0447 C172 RJMP restorefacc1
fp2long:
0448 D16E RCALL savfacc1
0449 D006 RCALL FTOL
044A FF87 SBRS R24,7
044B C001 RJMP nojump2
044C DF4D RCALL neg32
nojump2:
044D C16C RJMP restorefacc1
FTOI:
044E E0BE LDI R27,0xE
044F C001 RJMP 0x0451
FTOL:
0450 E1BE LDI R27,0x1E
0451 D16B RCALL unpackfacc1
0452 F059 BEQ 0x045E
0453 1BB3 SUB R27,R19
0454 F009 BEQ 0x0456
0455 F45A BPL 0x0461
0456 2388 TST R24
0457 F01A BMI 0x045B
0458 E010 LDI R17,0
0459 E20E LDI R16,0x2E
045A CF48 RJMP lpm32
045B E010 LDI R17,0
045C E304 LDI R16,0x34
045D CF45 RJMP lpm32
045E E010 LDI R17,0
045F E302 LDI R16,0x32
0460 CF42 RJMP lpm32
0461 9533 INC R19
0462 F3DA BMI 0x045E
0463 E030 LDI R19,0
0464 50B8 SUBI R27,0x8
0465 F452 BPL 0x0470
0466 5FB8 SUBI R27,0xF8
0467 2F32 MOV R19,R18
0468 2F21 MOV R18,R17
0469 2F10 MOV R17,R16
046A E800 LDI R16,0x80
046B C006 RJMP 0x0472
046C 2F01 MOV R16,R17
046D 2F12 MOV R17,R18
046E E020 LDI R18,0
046F 50B8 SUBI R27,0x8
0470 30B8 CPI R27,0x8
0471 F7D0 BCC 0x046C
0472 23BB TST R27
0473 F031 BEQ 0x047A
0474 9536 LSR R19
0475 9527 ROR R18
0476 9517 ROR R17
0477 9507 ROR R16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -