📄 music_car.lst
字号:
(0111) 0x46,0x29,0x2a,0x28,0x28,0x26,0x25,0x26,0x26,0x25,0x43,0x43,
(0112) 0x22,0x42,0x26,0x25,0x23,0x22,0x13,0x12,0x41,0x41,0x41,0x41,
(0113) 0x00,0x00
(0114) };
(0115) const unsigned char music_33[]=
(0116) {
(0117) //星语心愿
(0118) 0x36,0x18,0x27,0x26,0x25,0x26,0x43,0x43,0x43,0x26,0x25,0x36,0x18,0x27,0x18,0x17,
(0119) 0x26,0x27,0x48,0x48,0x48,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x49,0x49,0x28,0x27,0x26,
(0120) 0x27,0x45,0x45,0x46,0x48,0x47,0x26,0x25,0x46,0x46,0x46,0x40,0x40,0x40,0x40,0x40,
(0121) 0x36,0x18,0x27,0x26,0x25,0x26,0x26,0x26,0x46,0x46,0x26,0x25,0x36,0x18,0x27,0x18,
(0122) 0x17,0x26,0x27,0x48,0x48,0x48,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x49,0x49,0x28,0x27,
(0123) 0x26,0x27,0x45,0x45,0x46,0x26,0x28,0x47,0x45,0x40,0x26,0x28,0x47,0x45,0x46,0x46,
(0124) 0x46,0x46,0x46,0x46,0x46,0x23,0x25,0x46,0x4a,0x39,0x18,0x27,0x28,0x48,0x48,0x48,
(0125) 0x28,0x27,0x36,0x16,0x45,0x47,0x46,0x46,0x46,0x23,0x25,0x46,0x4a,0x39,0x18,0x27,
(0126) 0x28,0x48,0x48,0x28,0x27,0x36,0x16,0x45,0x27,0x26,0x46,0x46,0x46,0x46,0x46,0x46,
(0127) 0x00,0x00
(0128) };
(0129) const unsigned char music_44[]=
(0130) {
(0131) //上海滩
(0132) 0x2a,0x2c,0x4d,0x4d,0x4d,0x2a,0x2c,0x49,0x49,0x49,0x2a,0x2c,
(0133) 0x2d,0x4f,0x2d,0x4c,0x1d,0x18,0x2a,0x49,0x49,0x49,0x29,0x2a,
(0134) 0x4c,0x4c,0x4c,0x29,0x2a,0x29,0x26,0x4d,0x4d,0x4d,0x26,0x28,
(0135) 0x39,0x1a,0x29,0x27,0x26,0x28,0x45,0x45,0x45,0x2a,0x2c,0x4d,
(0136) 0x4d,0x4d,0x2a,0x2c,0x49,0x49,0x49,0x2a,0x2c,0x2d,0x4f,0x2d,
(0137) 0x4c,0x1d,0x18,0x2a,0x49,0x49,0x49,0x29,0x2a,0x4c,0x4c,0x4c,
(0138) 0x29,0x2a,0x29,0x26,0x4d,0x4d,0x4d,0x26,0x28,0x39,0x1a,0x29,
(0139) 0x27,0x26,0x25,0x48,0x48,0x20,0x2f,0x2f,0x2d,0x4f,0x4f,0x20,
(0140) 0x2d,0x2f,0x2d,0x4c,0x4c,0x4c,0x2c,0x2a,0x6d,0x2c,0x48,0x19,
(0141) 0x18,0x28,0x4a,0x4a,0x20,0x2a,0x2a,0x29,0x4a,0x4a,0x20,0x2f,
(0142) 0x2f,0x2e,0x4d,0x4d,0x4d,0x2a,0x2a,0x69,0x2a,0x2f,0x2e,0x2d,
(0143) 0x2a,0x4c,0x4c,0x4c,
(0144) 0x00,0x00
(0145) };
(0146)
(0147) //TIMER0 initialisation - prescale:1024
(0148) // desired value: 25mSec
(0149) // actual value: 24.960mSec (0.2%)
(0150) void timer0_init(void)
(0151) {
(0152) TCCR0 = 0x00; //stop timer
_timer0_init:
02AF 2422 CLR R2
02B0 BE23 OUT 0x33,R2
(0153) TCNT0 = 0x3D; //set count value
02B1 E38D LDI R24,0x3D
02B2 BF82 OUT 0x32,R24
(0154) TCCR0 = 0x05; //start timer
02B3 E085 LDI R24,5
02B4 BF83 OUT 0x33,R24
(0155) }
02B5 9508 RET
_timer0_ovf_isr:
02B6 D1F5 RCALL push_lset
02B7 D1CF RCALL push_gset1
(0156)
(0157) #pragma interrupt_handler timer0_ovf_isr:iv_TIMER0_OVF
(0158) void timer0_ovf_isr(void)
(0159) {
(0160) TCNT0 = 0x3D; //reload counter value
02B8 E38D LDI R24,0x3D
02B9 BF82 OUT 0x32,R24
(0161) t0_times++;
02BA 91800066 LDS R24,_t0_times
02BC 5F8F SUBI R24,0xFF
02BD 93800066 STS _t0_times,R24
(0162) if(gzsl == 0x88)
02BF 91800067 LDS R24,_gzsl
02C1 3888 CPI R24,0x88
02C2 F509 BNE 0x02E4
(0163) {
(0164) if(t0_times == 10)
02C3 91800066 LDS R24,_t0_times
02C5 308A CPI R24,0xA
02C6 F4E9 BNE 0x02E4
(0165) {
(0166) timers++;
02C7 9180006D LDS R24,_timers
02C9 5F8F SUBI R24,0xFF
02CA 9380006D STS _timers,R24
(0167) t0_times = 0;
02CC 2422 CLR R2
02CD 92200066 STS _t0_times,R2
(0168) pa = led_data[timers];
02CF E388 LDI R24,0x38
02D0 E090 LDI R25,0
02D1 9020006D LDS R2,_timers
02D3 2433 CLR R3
02D4 0E28 ADD R2,R24
02D5 1E39 ADC R3,R25
02D6 2DE2 MOV R30,R2
02D7 2DF3 MOV R31,R3
02D8 95C8 LPM
02D9 92000071 STS _pa,R0
(0169) if(pa==0x0a){timers=0;}
02DB 2D80 MOV R24,R0
02DC 308A CPI R24,0xA
02DD F419 BNE 0x02E1
02DE 2422 CLR R2
02DF 9220006D STS _timers,R2
(0170) PORTA = pa;
02E1 90200071 LDS R2,_pa
02E3 BA2B OUT 0x1B,R2
(0171) }
(0172) }
(0173) if(gzsl == 0x55)
02E4 91800067 LDS R24,_gzsl
02E6 3585 CPI R24,0x55
02E7 F009 BEQ 0x02E9
02E8 C0AF RJMP 0x0398
(0174) {
(0175) if(t0_times == 4) //4*25ms=100ms 扫描一次
02E9 91800066 LDS R24,_t0_times
02EB 3084 CPI R24,4
02EC F009 BEQ 0x02EE
02ED C0AA RJMP 0x0398
(0176) {
(0177) t0_times = 0;
02EE 2422 CLR R2
02EF 92200066 STS _t0_times,R2
(0178) remote_in = PINB & 0x0F;
02F1 B386 IN R24,0x16
02F2 708F ANDI R24,0xF
02F3 9380007D STS _remote_in,R24
(0179) switch (remote_in)
02F5 2F48 MOV R20,R24
02F6 2755 CLR R21
02F7 3041 CPI R20,1
02F8 E0E0 LDI R30,0
02F9 075E CPC R21,R30
02FA F409 BNE 0x02FC
02FB C03C RJMP 0x0338
02FC 3042 CPI R20,2
02FD E0E0 LDI R30,0
02FE 075E CPC R21,R30
02FF F0B9 BEQ 0x0317
0300 3044 CPI R20,4
0301 E0E0 LDI R30,0
0302 075E CPC R21,R30
0303 F029 BEQ 0x0309
0304 3048 CPI R20,0x8
0305 E0E0 LDI R30,0
0306 075E CPC R21,R30
0307 F0E9 BEQ 0x0325
0308 C03C RJMP 0x0345
(0180) {//检测遥控器是否有键按下
(0181) case 0x04: // < A >
(0182) rst_time=0;
0309 2422 CLR R2
030A 2433 CLR R3
030B 92300075 STS _rst_time+1,R3
030D 92200074 STS _rst_time,R2
(0183) sound_add=0;
030F 92300061 STS 0x61,R3
0311 92200060 STS 0x60,R2
(0184) sound_1 = 0x11;
0313 E181 LDI R24,0x11
0314 93800065 STS _sound_1,R24
(0185) break;
0316 C02E RJMP 0x0345
(0186) case 0x02: // < B >
(0187) rst_time=0;
0317 2422 CLR R2
0318 2433 CLR R3
0319 92300075 STS _rst_time+1,R3
031B 92200074 STS _rst_time,R2
(0188) sound_add=0;
031D 92300061 STS 0x61,R3
031F 92200060 STS 0x60,R2
(0189) sound_1 = 0x22;
0321 E282 LDI R24,0x22
0322 93800065 STS _sound_1,R24
(0190) break;
0324 C020 RJMP 0x0345
(0191) case 0x08: // < C >
(0192) rst_time++;
0325 91800074 LDS R24,_rst_time
0327 91900075 LDS R25,_rst_time+1
0329 9601 ADIW R24,1
032A 93900075 STS _rst_time+1,R25
032C 93800074 STS _rst_time,R24
(0193) sound_add=0;
032E 2422 CLR R2
032F 2433 CLR R3
0330 92300061 STS 0x61,R3
0332 92200060 STS 0x60,R2
(0194) sound_1 = 0x33;
0334 E383 LDI R24,0x33
0335 93800065 STS _sound_1,R24
(0195) break;
0337 C00D RJMP 0x0345
(0196) case 0x01: // < D >
(0197) rst_time=0;
0338 2422 CLR R2
0339 2433 CLR R3
033A 92300075 STS _rst_time+1,R3
033C 92200074 STS _rst_time,R2
(0198) sound_add=0;
033E 92300061 STS 0x61,R3
0340 92200060 STS 0x60,R2
(0199) sound_1 = 0x44;
0342 E484 LDI R24,0x44
0343 93800065 STS _sound_1,R24
(0200) break;
(0201) }
(0202) if(sound_1 == 0x11)
0345 91800065 LDS R24,_sound_1
0347 3181 CPI R24,0x11
0348 F469 BNE 0x0356
(0203) {
(0204) temp1 = music_11[sound_add];
0349 EA8E LDI R24,0xAE
034A E090 LDI R25,0
034B 90200060 LDS R2,0x60
034D 90300061 LDS R3,0x61
034F 0E28 ADD R2,R24
0350 1E39 ADC R3,R25
0351 2DE2 MOV R30,R2
0352 2DF3 MOV R31,R3
0353 95C8 LPM
0354 92000072 STS _temp1,R0
(0205) }
(0206) if(sound_1 == 0x22)
0356 91800065 LDS R24,_sound_1
0358 3282 CPI R24,0x22
0359 F469 BNE 0x0367
(0207) {
(0208) temp1 = music_22[sound_add];
035A E580 LDI R24,0x50
035B E091 LDI R25,1
035C 90200060 LDS R2,0x60
035E 90300061 LDS R3,0x61
0360 0E28 ADD R2,R24
0361 1E39 ADC R3,R25
0362 2DE2 MOV R30,R2
0363 2DF3 MOV R31,R3
0364 95C8 LPM
0365 92000072 STS _temp1,R0
(0209) }
(0210) if(sound_1 == 0x33)
0367 91800065 LDS R24,_sound_1
0369 3383 CPI R24,0x33
036A F469 BNE 0x0378
(0211) {
(0212) temp1 = music_33[sound_add];
036B EB80 LDI R24,0xB0
036C E091 LDI R25,1
036D 90200060 LDS R2,0x60
036F 90300061 LDS R3,0x61
0371 0E28 ADD R2,R24
0372 1E39 ADC R3,R25
0373 2DE2 MOV R30,R2
0374 2DF3 MOV R31,R3
0375 95C8 LPM
0376 92000072 STS _temp1,R0
(0213) }
(0214) if(sound_1 == 0x44)
0378 91800065 LDS R24,_sound_1
037A 3484 CPI R24,0x44
037B F469 BNE 0x0389
(0215) {
(0216) temp1 = music_44[sound_add];
037C E482 LDI R24,0x42
037D E092 LDI R25,2
037E 90200060 LDS R2,0x60
0380 90300061 LDS R3,0x61
0382 0E28 ADD R2,R24
0383 1E39 ADC R3,R25
0384 2DE2 MOV R30,R2
0385 2DF3 MOV R31,R3
0386 95C8 LPM
0387 92000072 STS _temp1,R0
(0217) }
(0218) if(sound_1 == 0x88)
0389 91800065 LDS R24,_sound_1
038B 3888 CPI R24,0x88
038C F459 BNE 0x0398
(0219) {
(0220) temp1=EEPROMread((int)&sound[sound_add]);
038D E081 LDI R24,1
038E E090 LDI R25,0
038F 91000060 LDS R16,0x60
0391 91100061 LDS R17,0x61
0393 0F08 ADD R16,R24
0394 1F19 ADC R17,R25
0395 D158 RCALL _EEPROMread
0396 93000072 STS _temp1,R16
(0221) }
(0222) }
(0223) }
(0224) }
0398 D0F1 RCALL pop_gset1
0399 D129 RCALL pop_lset
039A 9518 RETI
(0225)
(0226) void stop_timer0()
(0227) {
(0228) CLI();
_stop_timer0:
039B 94F8 BCLR 7
(0229) TCCR0 = 0x00;//停止timer0
039C 2422 CLR R2
039D BE23 OUT 0x33,R2
(0230) MCUCR = 0x00;
039E BE25 OUT 0x35,R2
(0231) GIMSK = 0x00;
039F BE2B OUT 0x3B,R2
(0232) TIMSK = 0x00;
03A0 BE29 OUT 0x39,R2
(0233) SEI();
03A1 9478 BSET 7
(0234) }
03A2 9508 RET
_timer1_ovf_isr:
03A3 922A ST R2,-Y
03A4 923A ST R3,-Y
03A5 938A ST R24,-Y
03A6 B62F IN R2,0x3F
03A7 922A ST R2,-Y
(0235)
(0236) #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
(0237) void timer1_ovf_isr(void)
(0238) {
(0239) {
(0240) TCNT1=toneconst;
03A8 90200076 LDS R2,_toneconst
03AA 90300077 LDS R3,_toneconst+1
03AC BC3D OUT 0x2D,R3
03AD BC2C OUT 0x2C,R2
(0241) PORTC^=1;
03AE E081 LDI R24,1
03AF B225 IN R2,0x15
03B0 2628 EOR R2,R24
03B1 BA25 OUT 0x15,R2
(0242) }
(0243) }
03B2 9029 LD R2,Y+
03B3 BE2F OUT 0x3F,R2
03B4 9189 LD R24,Y+
03B5 9039 LD R3,Y+
03B6 9029 LD R2,Y+
03B7 9518 RETI
(0244)
(0245) void music_car()
(0246) {//音乐机器人程序
(0247)
(0248) port_init();//调用端口初始化函数
_music_car:
03B8 DDCF RCALL _port_init
(0249)
(0250) work_status = 0x30;//置对应的工作状态标志
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -