📄 text1.lst
字号:
029B 9125 LPM R18,Z+
029C 9134 LPM R19,0(Z)
029D E584 LDI R24,0x54
029E E090 LDI R25,0
029F 01F1 MOVW R30,R2
02A0 0FE8 ADD R30,R24
02A1 1FF9 ADC R31,R25
02A2 9105 LPM R16,Z+
02A3 9114 LPM R17,0(Z)
02A4 DF78 RCALL _sound
(0125) i++;
02A5 9543 INC R20
(0126) remote_in = PINB & 0xF0; //再检测,若有键按下,中断播放并返回
02A6 B386 IN R24,0x16
02A7 7F80 ANDI R24,0xF0
02A8 93800062 STS remote_in,R24
(0127) if(remote_in!=0)
02AA 2388 TST R24
02AB F009 BEQ 0x02AD
(0128) return;
02AC C00E RJMP 0x02BB
02AD E084 LDI R24,4
02AE 9F84 MUL R24,R20
02AF 01F0 MOVW R30,R0
02B0 E586 LDI R24,0x56
02B1 E090 LDI R25,0
02B2 0FE8 ADD R30,R24
02B3 1FF9 ADC R31,R25
02B4 9005 LPM R0,Z+
02B5 9014 LPM R1,0(Z)
02B6 01F0 MOVW R30,R0
02B7 30E0 CPI R30,0
02B8 07EF CPC R30,R31
02B9 F6C9 BNE 0x0293
(0129) }
(0130) i=17;
02BA E141 LDI R20,0x11
02BB 940E03E5 CALL pop_gset1
02BD 9508 RET
_play_3:
i --> R20
02BE 940E03E2 CALL push_gset1
(0131)
(0132) }
(0133) void play_3(void)
(0134) {
(0135) unsigned char i=33;
02C0 E241 LDI R20,0x21
(0136) music_init(); //MCU初始化
02C1 DF2C RCALL _music_init
02C2 C01A RJMP 0x02DD
(0137)
(0138) while(music_data[i][1]!=0)//是否终止
(0139) {
(0140) sound(music_data[i][0],music_data[i][1]);
02C3 E084 LDI R24,4
02C4 9F84 MUL R24,R20
02C5 0110 MOVW R2,R0
02C6 E586 LDI R24,0x56
02C7 E090 LDI R25,0
02C8 01F1 MOVW R30,R2
02C9 0FE8 ADD R30,R24
02CA 1FF9 ADC R31,R25
02CB 9125 LPM R18,Z+
02CC 9134 LPM R19,0(Z)
02CD E584 LDI R24,0x54
02CE E090 LDI R25,0
02CF 01F1 MOVW R30,R2
02D0 0FE8 ADD R30,R24
02D1 1FF9 ADC R31,R25
02D2 9105 LPM R16,Z+
02D3 9114 LPM R17,0(Z)
02D4 DF48 RCALL _sound
(0141) i++;
02D5 9543 INC R20
(0142) remote_in = PINB & 0xF0; //再检测,若有键按下,中断播放并返回
02D6 B386 IN R24,0x16
02D7 7F80 ANDI R24,0xF0
02D8 93800062 STS remote_in,R24
(0143) if(remote_in!=0)
02DA 2388 TST R24
02DB F009 BEQ 0x02DD
(0144) return;
02DC C00E RJMP 0x02EB
02DD E084 LDI R24,4
02DE 9F84 MUL R24,R20
02DF 01F0 MOVW R30,R0
02E0 E586 LDI R24,0x56
02E1 E090 LDI R25,0
02E2 0FE8 ADD R30,R24
02E3 1FF9 ADC R31,R25
02E4 9005 LPM R0,Z+
02E5 9014 LPM R1,0(Z)
02E6 01F0 MOVW R30,R0
02E7 30E0 CPI R30,0
02E8 07EF CPC R30,R31
02E9 F6C9 BNE 0x02C3
(0145) }
(0146) i=33;
02EA E241 LDI R20,0x21
02EB 940E03E5 CALL pop_gset1
02ED 9508 RET
_play_4:
i --> R20
02EE 940E03E2 CALL push_gset1
(0147)
(0148) }
(0149) void play_4(void)
(0150) {
(0151) unsigned char i=45;
02F0 E24D LDI R20,0x2D
(0152) music_init(); //MCU初始化
02F1 DEFC RCALL _music_init
02F2 C01B RJMP 0x030E
(0153)
(0154) while(music_data[i][1]!=0)//是否终止
(0155) {
(0156) sound(music_data[i][0],music_data[i][1]);
02F3 E084 LDI R24,4
02F4 9F84 MUL R24,R20
02F5 0110 MOVW R2,R0
02F6 E586 LDI R24,0x56
02F7 E090 LDI R25,0
02F8 01F1 MOVW R30,R2
02F9 0FE8 ADD R30,R24
02FA 1FF9 ADC R31,R25
02FB 9125 LPM R18,Z+
02FC 9134 LPM R19,0(Z)
02FD E584 LDI R24,0x54
02FE E090 LDI R25,0
02FF 01F1 MOVW R30,R2
0300 0FE8 ADD R30,R24
0301 1FF9 ADC R31,R25
0302 9105 LPM R16,Z+
0303 9114 LPM R17,0(Z)
0304 DF18 RCALL _sound
(0157) i++;
0305 9543 INC R20
(0158) remote_in = PINB & 0xF0;
0306 B386 IN R24,0x16
0307 7F80 ANDI R24,0xF0
0308 93800062 STS remote_in,R24
(0159) while(remote_in!=0) //再检测,若有键按下,中断播放并返回
030A 90200062 LDS R2,remote_in
030C 2022 TST R2
030D F471 BNE 0x031C
030E E084 LDI R24,4
030F 9F84 MUL R24,R20
0310 01F0 MOVW R30,R0
0311 E586 LDI R24,0x56
0312 E090 LDI R25,0
0313 0FE8 ADD R30,R24
0314 1FF9 ADC R31,R25
0315 9005 LPM R0,Z+
0316 9014 LPM R1,0(Z)
0317 01F0 MOVW R30,R0
0318 30E0 CPI R30,0
0319 07EF CPC R30,R31
031A F6C1 BNE 0x02F3
(0160) return;
(0161) }
(0162) i=45;
031B E24D LDI R20,0x2D
031C 940E03E5 CALL pop_gset1
031E 9508 RET
(0163)
(0164) }
(0165) /*******************************
(0166) 主程序
(0167) *******************************/
(0168)
(0169) void main(void)
(0170) {//遥控车程序
(0171)
(0172) port_init();//调用端口初始化函数
_main:
031F DDA2 RCALL _port_init
(0173) PORTA = 0xFF;
0320 EF8F LDI R24,0xFF
0321 BB8B OUT 0x1B,R24
(0174) mic_startup();//等待声控启动函数
0322 DE49 RCALL _mic_startup
(0175) PORTA = 0x00;
0323 2422 CLR R2
0324 BA2B OUT 0x1B,R2
(0176) delay_ms(20);
0325 E104 LDI R16,0x14
0326 E010 LDI R17,0
0327 DDB1 RCALL _delay_ms
0328 C038 RJMP 0x0361
(0177) while(1)
(0178) {
(0179) remote_in = PINB & 0xF0;
0329 B386 IN R24,0x16
032A 7F80 ANDI R24,0xF0
032B 93800062 STS remote_in,R24
(0180) switch (remote_in)
032D 2F48 MOV R20,R24
032E 2755 CLR R21
032F 3240 CPI R20,0x20
0330 E0E0 LDI R30,0
0331 075E CPC R21,R30
0332 F119 BEQ 0x0356
0333 E280 LDI R24,0x20
0334 E090 LDI R25,0
0335 1784 CP R24,R20
0336 0795 CPC R25,R21
0337 F064 BLT 0x0344
0338 3040 CPI R20,0
0339 0745 CPC R20,R21
033A F0B1 BEQ 0x0351
033B 3040 CPI R20,0
033C E0E0 LDI R30,0
033D 075E CPC R21,R30
033E F114 BLT 0x0361
033F 3140 CPI R20,0x10
0340 E0E0 LDI R30,0
0341 075E CPC R21,R30
0342 F0C9 BEQ 0x035C
0343 C01D RJMP 0x0361
0344 3440 CPI R20,0x40
0345 E0E0 LDI R30,0
0346 075E CPC R21,R30
0347 F089 BEQ 0x0359
0348 3440 CPI R20,0x40
0349 E0E0 LDI R30,0
034A 075E CPC R21,R30
034B F0AC BLT 0x0361
034C 3840 CPI R20,0x80
034D E0E0 LDI R30,0
034E 075E CPC R21,R30
034F F079 BEQ 0x035F
0350 C010 RJMP 0x0361
(0181) {//检测遥控器是否有键按下
(0182) case 0x00:
(0183) {
(0184) stop(); //停止运动
0351 DDB4 RCALL _stop
(0185) delay_ms(10);
0352 E00A LDI R16,0xA
0353 E010 LDI R17,0
0354 DD84 RCALL _delay_ms
(0186) break;
0355 C00B RJMP 0x0361
(0187) }
(0188) case 0x20:
(0189) { // < A >
(0190) turn_right(); //右转
0356 DD91 RCALL _turn_right
(0191) play_1(); //播放乐曲1
0357 DF06 RCALL _play_1
(0192) break;
0358 C008 RJMP 0x0361
(0193) }
(0194) case 0x40:
(0195) { // < B >
(0196) backward(); //后退
0359 DDA2 RCALL _backward
(0197) play_2(); //播放乐曲2
035A DF33 RCALL _play_2
(0198) break;
035B C005 RJMP 0x0361
(0199) }
(0200) case 0x10:
(0201) {// < C >
(0202) forward(); //前进
035C DDA4 RCALL _forward
(0203) play_3(); //播放乐曲3
035D DF60 RCALL _play_3
(0204) break;
035E C002 RJMP 0x0361
(0205) }
(0206) case 0x80:
(0207) { // < D >
(0208) turn_left(); //左转
035F DD8D RCALL _turn_left
(0209) play_4(); //播放乐曲4
FILE: <library>
0360 DF8D RCALL _play_4
0361 CFC7 RJMP 0x0329
0362 9508 RET
div32u:
0363 94E8 BCLR 6
0364 C001 RJMP 0x0366
mod32u:
0365 9468 BSET 6
0366 D02F RCALL long_div_prolog
0367 24CC CLR R12
0368 C008 RJMP 0x0371
div32s:
0369 94E8 BCLR 6
036A C001 RJMP 0x036C
mod32s:
036B 9468 BSET 6
036C D029 RCALL long_div_prolog
036D FD37 SBRC R19,7
036E D053 RCALL neg_R16_R19
036F FDB7 SBRC R27,7
0370 D05A RCALL neg_R24_R27
0371 2477 CLR R7
0372 2488 CLR R8
0373 2499 CLR R9
0374 24AA CLR R10
0375 24BB CLR R11
0376 D041 RCALL tst_R16_R19
0377 F0C1 BEQ 0x0390
0378 D044 RCALL tst_R24_R27
0379 F0B1 BEQ 0x0390
037A E2E8 LDI R30,0x28
037B 0F00 LSL R16
037C 1F11 ROL R17
037D 1F22 ROL R18
037E 1F33 ROL R19
037F 1C77 ROL R7
0380 1C88 ROL R8
0381 1C99 ROL R9
0382 1CAA ROL R10
0383 1CBB ROL R11
0384 1688 CP R8,R24
0385 0699 CPC R9,R25
0386 06AA CPC R10,R26
0387 06BB CPC R11,R27
0388 F028 BCS 0x038E
0389 1A88 SUB R8,R24
038A 0A99 SBC R9,R25
038B 0AAA SBC R10,R26
038C 0ABB SBC R11,R27
038D 9503 INC R16
038E 95EA DEC R30
038F F759 BNE 0x037B
0390 F426 BRTC 0x0395
0391 2D08 MOV R16,R8
0392 2D19 MOV R17,R9
0393 2D2A MOV R18,R10
0394 2D3B MOV R19,R11
0395 C013 RJMP long_div_epilog
long_div_prolog:
0396 927A ST R7,-Y
0397 928A ST R8,-Y
0398 929A ST R9,-Y
0399 92AA ST R10,-Y
039A 92BA ST R11,-Y
039B 92CA ST R12,-Y
039C 93EA ST R30,-Y
039D 938A ST R24,-Y
039E 939A ST R25,-Y
039F 93AA ST R26,-Y
03A0 93BA ST R27,-Y
03A1 858B LDD R24,Y+11
03A2 859C LDD R25,Y+12
03A3 85AD LDD R26,Y+13
03A4 85BE LDD R27,Y+14
03A5 2EC3 MOV R12,R19
03A6 F00E BRTS 0x03A8
03A7 26CB EOR R12,R27
03A8 9508 RET
long_div_epilog:
03A9 FCC7 SBRC R12,7
03AA D017 RCALL neg_R16_R19
03AB 91B9 LD R27,Y+
03AC 91A9 LD R26,Y+
03AD 9199 LD R25,Y+
03AE 9189 LD R24,Y+
03AF 91E9 LD R30,Y+
03B0 90C9 LD R12,Y+
03B1 90B9 LD R11,Y+
03B2 90A9 LD R10,Y+
03B3 9099 LD R9,Y+
03B4 9089 LD R8,Y+
03B5 9079 LD R7,Y+
03B6 9624 ADIW R28,4
03B7 9508 RET
tst_R16_R19:
03B8 2FE0 MOV R30,R16
03B9 2BE1 OR R30,R17
03BA 2BE2 OR R30,R18
03BB 2BE3 OR R30,R19
03BC 9508 RET
tst_R24_R27:
03BD 2FE8 MOV R30,R24
03BE 2BE9 OR R30,R25
03BF 2BEA OR R30,R26
03C0 2BEB OR R30,R27
03C1 9508 RET
neg_R16_R19:
03C2 9500 COM R16
03C3 9510 COM R17
03C4 9520 COM R18
03C5 9530 COM R19
03C6 5F0F SUBI R16,0xFF
03C7 4F1F SBCI R17,0xFF
03C8 4F2F SBCI R18,0xFF
03C9 4F3F SBCI R19,0xFF
03CA 9508 RET
neg_R24_R27:
03CB 9580 COM R24
03CC 9590 COM R25
03CD 95A0 COM R26
03CE 95B0 COM R27
03CF 5F8F SUBI R24,0xFF
03D0 4F9F SBCI R25,0xFF
03D1 4FAF SBCI R26,0xFF
03D2 4FBF SBCI R27,0xFF
03D3 9508 RET
pop_gset2:
03D4 E0E2 LDI R30,2
03D5 940C03E6 JMP pop
pop_gset4:
03D7 E0E8 LDI R30,0x8
03D8 940C03E6 JMP pop
push_gset5:
03DA 92FA ST R15,-Y
03DB 92EA ST R14,-Y
push_gset4:
03DC 92DA ST R13,-Y
03DD 92CA ST R12,-Y
push_gset3:
03DE 92BA ST R11,-Y
03DF 92AA ST R10,-Y
push_gset2:
03E0 937A ST R23,-Y
03E1 936A ST R22,-Y
push_gset1:
03E2 935A ST R21,-Y
03E3 934A ST R20,-Y
03E4 9508 RET
pop_gset1:
03E5 E0E1 LDI R30,1
pop:
03E6 9149 LD R20,Y+
03E7 9159 LD R21,Y+
03E8 FDE0 SBRC R30,0
03E9 9508 RET
03EA 9169 LD R22,Y+
03EB 9179 LD R23,Y+
03EC FDE1 SBRC R30,1
03ED 9508 RET
03EE 90A9 LD R10,Y+
03EF 90B9 LD R11,Y+
03F0 FDE2 SBRC R30,2
03F1 9508 RET
03F2 90C9 LD R12,Y+
03F3 90D9 LD R13,Y+
03F4 FDE3 SBRC R30,3
03F5 9508 RET
03F6 90E9 LD R14,Y+
03F7 90F9 LD R15,Y+
03F8 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -