📄 music_car.lst
字号:
03B9 E380 LDI R24,0x30
03BA 9380007F STS _work_status,R24
(0251)
(0252) music_rst:
(0253) PORTA = 0x0F;
03BC E08F LDI R24,0xF
03BD BB8B OUT 0x1B,R24
(0254)
(0255) gzsl=0x88;timers=0;t0_times=0;
03BE E888 LDI R24,0x88
03BF 93800067 STS _gzsl,R24
03C1 2422 CLR R2
03C2 9220006D STS _timers,R2
03C4 92200066 STS _t0_times,R2
(0256) CLI(); //disable all interrupts
03C6 94F8 BCLR 7
(0257) timer0_init();
03C7 DEE7 RCALL _timer0_init
(0258)
(0259) MCUCR = 0x00;
03C8 2422 CLR R2
03C9 BE25 OUT 0x35,R2
(0260) GIMSK = 0x00;
03CA BE2B OUT 0x3B,R2
(0261) TIMSK|=(1<<TOIE0);
03CB B789 IN R24,0x39
03CC 6082 ORI R24,2
03CD BF89 OUT 0x39,R24
(0262) SEI(); //re-enable interrupts
03CE 9478 BSET 7
(0263)
(0264) mic_startup();//等待声控启动函数
03CF DE68 RCALL _mic_startup
(0265)
(0266) gzsl=0x55;t0_times=0;sound_1 = 0x88;
03D0 E585 LDI R24,0x55
03D1 93800067 STS _gzsl,R24
03D3 2422 CLR R2
03D4 92200066 STS _t0_times,R2
03D6 E888 LDI R24,0x88
03D7 93800065 STS _sound_1,R24
(0267) TCCR1A = 0x00;
03D9 BC2F OUT 0x2F,R2
(0268) TCCR1B =(1<<CS11);//8分频
03DA E082 LDI R24,2
03DB BD8E OUT 0x2E,R24
(0269) n01:
(0270) temp=temp1 = 0;
03DC 2422 CLR R2
03DD 92200072 STS _temp1,R2
03DF 92200073 STS _temp,R2
(0271) sound_add = 0;
03E1 2433 CLR R3
03E2 92300061 STS 0x61,R3
03E4 92200060 STS 0x60,R2
03E6 C095 RJMP 0x047C
(0272) while(temp1!=0)
(0273) {
(0274) temp=temp1;
03E7 90200072 LDS R2,_temp1
03E9 92200073 STS _temp,R2
(0275) temp&=0x0f;
03EB 2D82 MOV R24,R2
03EC 708F ANDI R24,0xF
03ED 93800073 STS _temp,R24
(0276) //PA口为音乐灯
(0277) if(temp==1 || temp==2 || temp==3 || temp==4){PORTA = 0xfe;}
03EF 3081 CPI R24,1
03F0 F031 BEQ 0x03F7
03F1 3082 CPI R24,2
03F2 F021 BEQ 0x03F7
03F3 3083 CPI R24,3
03F4 F011 BEQ 0x03F7
03F5 3084 CPI R24,4
03F6 F411 BNE 0x03F9
03F7 EF8E LDI R24,0xFE
03F8 BB8B OUT 0x1B,R24
(0278) if(temp==5 || temp==6){PORTA = 0xfc;}
03F9 91800073 LDS R24,_temp
03FB 3085 CPI R24,5
03FC F011 BEQ 0x03FF
03FD 3086 CPI R24,6
03FE F411 BNE 0x0401
03FF EF8C LDI R24,0xFC
0400 BB8B OUT 0x1B,R24
(0279) if(temp==7 || temp==8 ){PORTA = 0xf8;}
0401 91800073 LDS R24,_temp
0403 3087 CPI R24,7
0404 F011 BEQ 0x0407
0405 3088 CPI R24,0x8
0406 F411 BNE 0x0409
0407 EF88 LDI R24,0xF8
0408 BB8B OUT 0x1B,R24
(0280) if(temp==9){PORTA = 0xf0;}
0409 91800073 LDS R24,_temp
040B 3089 CPI R24,0x9
040C F411 BNE 0x040F
040D EF80 LDI R24,0xF0
040E BB8B OUT 0x1B,R24
(0281) if(temp==10){PORTA = 0xe0;}
040F 91800073 LDS R24,_temp
0411 308A CPI R24,0xA
0412 F411 BNE 0x0415
0413 EE80 LDI R24,0xE0
0414 BB8B OUT 0x1B,R24
(0282) if(temp==11){PORTA = 0xc0;}
0415 91800073 LDS R24,_temp
0417 308B CPI R24,0xB
0418 F411 BNE 0x041B
0419 EC80 LDI R24,0xC0
041A BB8B OUT 0x1B,R24
(0283) if(temp==12){PORTA = 0x80;}
041B 91800073 LDS R24,_temp
041D 308C CPI R24,0xC
041E F411 BNE 0x0421
041F E880 LDI R24,0x80
0420 BB8B OUT 0x1B,R24
(0284) if(temp==13||temp==14 || temp==15){PORTA = 0x00;}
0421 91800073 LDS R24,_temp
0423 308D CPI R24,0xD
0424 F021 BEQ 0x0429
0425 308E CPI R24,0xE
0426 F011 BEQ 0x0429
0427 308F CPI R24,0xF
0428 F411 BNE 0x042B
0429 2422 CLR R2
042A BA2B OUT 0x1B,R2
(0285)
(0286) if(temp!=0)
042B 90200073 LDS R2,_temp
042D 2022 TST R2
042E F0B9 BEQ 0x0446
(0287) {
(0288) TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
042F B789 IN R24,0x39
0430 6880 ORI R24,0x80
0431 BF89 OUT 0x39,R24
(0289) temp--;
0432 2D82 MOV R24,R2
0433 5081 SUBI R24,1
0434 93800073 STS _temp,R24
(0290) toneconst=TONETABLE[temp];
0436 E18A LDI R24,0x1A
0437 E090 LDI R25,0
0438 91000073 LDS R16,_temp
043A 2711 CLR R17
043B 0F00 LSL R16
043C 1F11 ROL R17
043D 0F08 ADD R16,R24
043E 1F19 ADC R17,R25
043F D05E RCALL lpm16
0440 93100077 STS _toneconst+1,R17
0442 93000076 STS _toneconst,R16
(0291) TCNT1=toneconst;
0444 BD1D OUT 0x2D,R17
0445 BD0C OUT 0x2C,R16
(0292) }
(0293) temp=temp1;
0446 90200072 LDS R2,_temp1
0448 92200073 STS _temp,R2
(0294) temp>>=4;
044A 2D82 MOV R24,R2
044B 9582 SWAP R24
044C 708F ANDI R24,0xF
044D 93800073 STS _temp,R24
(0295) temp&=0x0f;
044F 708F ANDI R24,0xF
0450 93800073 STS _temp,R24
(0296) delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
0452 2F28 MOV R18,R24
0453 2733 CLR R19
0454 E801 LDI R16,0x81
0455 E010 LDI R17,0
0456 D083 RCALL mpy16s
0457 DD48 RCALL _delay_ms
(0297) TIMSK&=~(1<<TOIE1);
0458 B789 IN R24,0x39
0459 778F ANDI R24,0x7F
045A BF89 OUT 0x39,R24
(0298) sound_add++;
045B 91800060 LDS R24,0x60
045D 91900061 LDS R25,0x61
045F 9601 ADIW R24,1
0460 93900061 STS 0x61,R25
0462 93800060 STS 0x60,R24
(0299)
(0300) if(rst_time > 40)
0464 E288 LDI R24,0x28
0465 E090 LDI R25,0
0466 90200074 LDS R2,_rst_time
0468 90300075 LDS R3,_rst_time+1
046A 1582 CP R24,R2
046B 0593 CPC R25,R3
046C F478 BCC 0x047C
(0301) {//当按住< C > 键的持续时间超过10S,遥控机器人复位,等待声控重起运行
(0302) rst_time=0;
046D 2422 CLR R2
046E 2433 CLR R3
046F 92300075 STS _rst_time+1,R3
0471 92200074 STS _rst_time,R2
(0303) sound_1 = 0x55;
0473 E585 LDI R24,0x55
0474 93800065 STS _sound_1,R24
(0304) PORTA = 0x0f;
0476 E08F LDI R24,0xF
0477 BB8B OUT 0x1B,R24
(0305) delay_ms(1000);
0478 EE08 LDI R16,0xE8
0479 E013 LDI R17,3
047A DD25 RCALL _delay_ms
(0306) goto music_rst;
047B CF40 RJMP 0x03BC
047C 90200072 LDS R2,_temp1
047E 2022 TST R2
047F F009 BEQ 0x0481
0480 CF66 RJMP 0x03E7
(0307) }
(0308) }
(0309) sound_1 = 0x88;
0481 E888 LDI R24,0x88
0482 93800065 STS _sound_1,R24
(0310) goto n01;
0484 CF57 RJMP 0x03DC
0485 9508 RET
(0311) }
(0312)
(0313) void main()
(0314) {
(0315) music_car();
(0316) }
FILE: <library>
_main:
0486 CF31 RJMP _music_car
push_gset1:
0487 935A ST R21,-Y
0488 934A ST R20,-Y
0489 9508 RET
pop_gset1:
048A E0E1 LDI R30,1
pop:
048B 9149 LD R20,Y+
048C 9159 LD R21,Y+
048D FDE0 SBRC R30,0
048E 9508 RET
048F 9169 LD R22,Y+
0490 9179 LD R23,Y+
0491 FDE1 SBRC R30,1
0492 9508 RET
0493 90A9 LD R10,Y+
0494 90B9 LD R11,Y+
0495 FDE2 SBRC R30,2
0496 9508 RET
0497 90C9 LD R12,Y+
0498 90D9 LD R13,Y+
0499 FDE3 SBRC R30,3
049A 9508 RET
049B 90E9 LD R14,Y+
049C 90F9 LD R15,Y+
049D 9508 RET
lpm16:
049E 93EA ST R30,-Y
049F 93FA ST R31,-Y
04A0 920A ST R0,-Y
04A1 2FE0 MOV R30,R16
04A2 2FF1 MOV R31,R17
04A3 95C8 LPM
04A4 2D00 MOV R16,R0
04A5 9631 ADIW R30,1
04A6 95C8 LPM
04A7 2D10 MOV R17,R0
04A8 9009 LD R0,Y+
04A9 91F9 LD R31,Y+
04AA 91E9 LD R30,Y+
04AB 9508 RET
push_lset:
04AC 93FA ST R31,-Y
04AD 93EA ST R30,-Y
04AE 93BA ST R27,-Y
04AF 93AA ST R26,-Y
04B0 939A ST R25,-Y
04B1 938A ST R24,-Y
04B2 933A ST R19,-Y
04B3 932A ST R18,-Y
04B4 931A ST R17,-Y
04B5 930A ST R16,-Y
04B6 929A ST R9,-Y
04B7 928A ST R8,-Y
04B8 927A ST R7,-Y
04B9 926A ST R6,-Y
04BA 925A ST R5,-Y
04BB 924A ST R4,-Y
04BC 923A ST R3,-Y
04BD 922A ST R2,-Y
04BE 921A ST R1,-Y
04BF 920A ST R0,-Y
04C0 B60F IN R0,0x3F
04C1 920A ST R0,-Y
04C2 9508 RET
pop_lset:
04C3 9009 LD R0,Y+
04C4 BE0F OUT 0x3F,R0
04C5 9009 LD R0,Y+
04C6 9019 LD R1,Y+
04C7 9029 LD R2,Y+
04C8 9039 LD R3,Y+
04C9 9049 LD R4,Y+
04CA 9059 LD R5,Y+
04CB 9069 LD R6,Y+
04CC 9079 LD R7,Y+
04CD 9089 LD R8,Y+
04CE 9099 LD R9,Y+
04CF 9109 LD R16,Y+
04D0 9119 LD R17,Y+
04D1 9129 LD R18,Y+
04D2 9139 LD R19,Y+
04D3 9189 LD R24,Y+
04D4 9199 LD R25,Y+
04D5 91A9 LD R26,Y+
04D6 91B9 LD R27,Y+
04D7 91E9 LD R30,Y+
04D8 91F9 LD R31,Y+
04D9 9508 RET
mpy16s:
04DA 920A ST R0,-Y
04DB 921A ST R1,-Y
04DC 2400 CLR R0
04DD 2411 CLR R1
04DE 3000 CPI R16,0
04DF 0701 CPC R16,R17
04E0 F041 BEQ 0x04E9
04E1 9516 LSR R17
04E2 9507 ROR R16
04E3 F410 BCC 0x04E6
04E4 0E02 ADD R0,R18
04E5 1E13 ADC R1,R19
04E6 0F22 LSL R18
04E7 1F33 ROL R19
04E8 CFF5 RJMP 0x04DE
04E9 2D00 MOV R16,R0
04EA 2D11 MOV R17,R1
04EB 9019 LD R1,Y+
04EC 9009 LD R0,Y+
04ED 9508 RET
_EEPROMread:
04EE 99E1 SBIC 0x1C,1
04EF CFFE RJMP _EEPROMread
04F0 BB0E OUT 0x1E,R16
04F1 BB1F OUT 0x1F,R17
04F2 9AE0 SBI 0x1C,0
04F3 B30D IN R16,0x1D
04F4 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -