📄 sl3010_4.lst
字号:
(0299) }
(0300) }
(0301) if(gzsl == 0x22)
0408 91800067 LDS R24,_gzsl
040A 3282 CPI R24,0x22
040B F489 BNE 0x041D
(0302) {
(0303) if(t0_times == delay_time2) //delay_time2*25ms
040C 90200078 LDS R2,_delay_time2
040E 90300079 LDS R3,_delay_time2+1
0410 90400066 LDS R4,_t0_times
0412 2455 CLR R5
0413 1442 CP R4,R2
0414 0453 CPC R5,R3
0415 F439 BNE 0x041D
(0304) {
(0305) t0_times = 0;
0416 2422 CLR R2
0417 92200066 STS _t0_times,R2
(0306) gzsl = 0x11;
0419 E181 LDI R24,0x11
041A 93800067 STS _gzsl,R24
(0307) turn_right();
041C DDD1 RCALL _turn_right
(0308) }
(0309) }
(0310) if(gzsl == 0x44)
041D 91800067 LDS R24,_gzsl
041F 3484 CPI R24,0x44
0420 F009 BEQ 0x0422
0421 C06A RJMP 0x048C
(0311) {
(0312) sw_touch();
0422 DDED RCALL _sw_touch
(0313) pc = PINC & 0xE0;
0423 B383 IN R24,0x13
0424 7E80 ANDI R24,0xE0
0425 9380006F STS _pc,R24
(0314) if(pc == 0xE0)
0427 3E80 CPI R24,0xE0
0428 F491 BNE 0x043B
(0315) {
(0316) stop();
0429 DDE2 RCALL _stop
(0317) t0_times = 0;timers = 0x22;
042A 2422 CLR R2
042B 92200066 STS _t0_times,R2
042D E282 LDI R24,0x22
042E 9380006D STS _timers,R24
(0318) temp1=EEPROMread((int)&sound[sound_add]);
0430 E081 LDI R24,1
0431 E090 LDI R25,0
0432 91000060 LDS R16,0x60
0434 91100061 LDS R17,0x61
0436 0F08 ADD R16,R24
0437 1F19 ADC R17,R25
0438 D49E RCALL _EEPROMread
0439 93000072 STS _temp1,R16
(0319) }
(0320) if(pc == 0x40 || pc == 0x80 || pc == 0x20 || pc == 0xc0 || pc == 0x60)
043B 9180006F LDS R24,_pc
043D 3480 CPI R24,0x40
043E F041 BEQ 0x0447
043F 3880 CPI R24,0x80
0440 F031 BEQ 0x0447
0441 3280 CPI R24,0x20
0442 F021 BEQ 0x0447
0443 3C80 CPI R24,0xC0
0444 F011 BEQ 0x0447
0445 3680 CPI R24,0x60
0446 F431 BNE 0x044D
(0321) {
(0322) timers=0x55;
0447 E585 LDI R24,0x55
0448 9380006D STS _timers,R24
(0323) t0_times = 0;
044A 2422 CLR R2
044B 92200066 STS _t0_times,R2
(0324) }
(0325) if(timers == 0x55)
044D 9180006D LDS R24,_timers
044F 3585 CPI R24,0x55
0450 F589 BNE 0x0482
(0326) {
(0327) if(t0_times < 16) //16*25ms=400ms
0451 91800066 LDS R24,_t0_times
0453 3180 CPI R24,0x10
0454 F470 BCC 0x0463
(0328) {
(0329) backward();
0455 DDAC RCALL _backward
(0330) temp1=sound_back[sound_add];
0456 E084 LDI R24,4
0457 E093 LDI R25,3
0458 90200060 LDS R2,0x60
045A 90300061 LDS R3,0x61
045C 0E28 ADD R2,R24
045D 1E39 ADC R3,R25
045E 2DE2 MOV R30,R2
045F 2DF3 MOV R31,R3
0460 95C8 LPM
0461 92000072 STS _temp1,R0
(0331) }
(0332) if(t0_times > 16 && t0_times < 24) //8*25ms=200ms
0463 E180 LDI R24,0x10
0464 90200066 LDS R2,_t0_times
0466 1582 CP R24,R2
0467 F488 BCC 0x0479
0468 2D82 MOV R24,R2
0469 3188 CPI R24,0x18
046A F470 BCC 0x0479
(0333) {
(0334) turn_left();
046B DD87 RCALL _turn_left
(0335) temp1=sound_back[sound_add];
046C E084 LDI R24,4
046D E093 LDI R25,3
046E 90200060 LDS R2,0x60
0470 90300061 LDS R3,0x61
0472 0E28 ADD R2,R24
0473 1E39 ADC R3,R25
0474 2DE2 MOV R30,R2
0475 2DF3 MOV R31,R3
0476 95C8 LPM
0477 92000072 STS _temp1,R0
(0336) }
(0337) if(t0_times == 24)
0479 91800066 LDS R24,_t0_times
047B 3188 CPI R24,0x18
047C F429 BNE 0x0482
(0338) {
(0339) timers = 0;
047D 2422 CLR R2
047E 9220006D STS _timers,R2
(0340) t0_times = 0;
0480 92200066 STS _t0_times,R2
(0341) }
(0342) }
(0343) if(timers != 0x55 && timers != 0x22)
0482 9180006D LDS R24,_timers
0484 3585 CPI R24,0x55
0485 F031 BEQ 0x048C
0486 3282 CPI R24,0x22
0487 F021 BEQ 0x048C
(0344) {
(0345) forward();
0488 DD7E RCALL _forward
(0346) temp1 = 0;
0489 2422 CLR R2
048A 92200072 STS _temp1,R2
(0347) }
(0348) }
(0349) if(gzsl == 0x55)
048C 91800067 LDS R24,_gzsl
048E 3585 CPI R24,0x55
048F F009 BEQ 0x0491
0490 C099 RJMP 0x052A
(0350) {
(0351) if(t0_times == 4) //4*25ms=100ms 扫描一次
0491 91800066 LDS R24,_t0_times
0493 3084 CPI R24,4
0494 F009 BEQ 0x0496
0495 C094 RJMP 0x052A
(0352) {
(0353) t0_times = 0;
0496 2422 CLR R2
0497 92200066 STS _t0_times,R2
(0354) remote_in = PINB & 0x0F;
0499 B386 IN R24,0x16
049A 708F ANDI R24,0xF
049B 9380007D STS _remote_in,R24
(0355) switch (remote_in)
049D 2F48 MOV R20,R24
049E 2755 CLR R21
049F 3041 CPI R20,1
04A0 E0E0 LDI R30,0
04A1 075E CPC R21,R30
04A2 F159 BEQ 0x04CE
04A3 3042 CPI R20,2
04A4 E0E0 LDI R30,0
04A5 075E CPC R21,R30
04A6 F099 BEQ 0x04BA
04A7 3044 CPI R20,4
04A8 E0E0 LDI R30,0
04A9 075E CPC R21,R30
04AA F029 BEQ 0x04B0
04AB 3048 CPI R20,0x8
04AC E0E0 LDI R30,0
04AD 075E CPC R21,R30
04AE F0A9 BEQ 0x04C4
04AF C027 RJMP 0x04D7
(0356) {//检测遥控器是否有键按下
(0357) case 0x04: // < A >
(0358) sound_add=0;
04B0 2422 CLR R2
04B1 2433 CLR R3
04B2 92300061 STS 0x61,R3
04B4 92200060 STS 0x60,R2
(0359) sound_1 = 0x11;
04B6 E181 LDI R24,0x11
04B7 93800065 STS _sound_1,R24
(0360) break;
04B9 C01D RJMP 0x04D7
(0361) case 0x02: // < B >
(0362) sound_add=0;
04BA 2422 CLR R2
04BB 2433 CLR R3
04BC 92300061 STS 0x61,R3
04BE 92200060 STS 0x60,R2
(0363) sound_1 = 0x22;
04C0 E282 LDI R24,0x22
04C1 93800065 STS _sound_1,R24
(0364) break;
04C3 C013 RJMP 0x04D7
(0365) case 0x08: // < C >
(0366) sound_add=0;
04C4 2422 CLR R2
04C5 2433 CLR R3
04C6 92300061 STS 0x61,R3
04C8 92200060 STS 0x60,R2
(0367) sound_1 = 0x33;
04CA E383 LDI R24,0x33
04CB 93800065 STS _sound_1,R24
(0368) break;
04CD C009 RJMP 0x04D7
(0369) case 0x01: // < D >
(0370) sound_add=0;
04CE 2422 CLR R2
04CF 2433 CLR R3
04D0 92300061 STS 0x61,R3
04D2 92200060 STS 0x60,R2
(0371) sound_1 = 0x44;
04D4 E484 LDI R24,0x44
04D5 93800065 STS _sound_1,R24
(0372) break;
(0373) }
(0374) if(sound_1 == 0x11)
04D7 91800065 LDS R24,_sound_1
04D9 3181 CPI R24,0x11
04DA F469 BNE 0x04E8
(0375) {
(0376) temp1 = music_11[sound_add];
04DB EA8E LDI R24,0xAE
04DC E090 LDI R25,0
04DD 90200060 LDS R2,0x60
04DF 90300061 LDS R3,0x61
04E1 0E28 ADD R2,R24
04E2 1E39 ADC R3,R25
04E3 2DE2 MOV R30,R2
04E4 2DF3 MOV R31,R3
04E5 95C8 LPM
04E6 92000072 STS _temp1,R0
(0377) }
(0378) if(sound_1 == 0x22)
04E8 91800065 LDS R24,_sound_1
04EA 3282 CPI R24,0x22
04EB F469 BNE 0x04F9
(0379) {
(0380) temp1 = music_22[sound_add];
04EC E580 LDI R24,0x50
04ED E091 LDI R25,1
04EE 90200060 LDS R2,0x60
04F0 90300061 LDS R3,0x61
04F2 0E28 ADD R2,R24
04F3 1E39 ADC R3,R25
04F4 2DE2 MOV R30,R2
04F5 2DF3 MOV R31,R3
04F6 95C8 LPM
04F7 92000072 STS _temp1,R0
(0381) }
(0382) if(sound_1 == 0x33)
04F9 91800065 LDS R24,_sound_1
04FB 3383 CPI R24,0x33
04FC F469 BNE 0x050A
(0383) {
(0384) temp1 = music_33[sound_add];
04FD EB80 LDI R24,0xB0
04FE E091 LDI R25,1
04FF 90200060 LDS R2,0x60
0501 90300061 LDS R3,0x61
0503 0E28 ADD R2,R24
0504 1E39 ADC R3,R25
0505 2DE2 MOV R30,R2
0506 2DF3 MOV R31,R3
0507 95C8 LPM
0508 92000072 STS _temp1,R0
(0385) }
(0386) if(sound_1 == 0x44)
050A 91800065 LDS R24,_sound_1
050C 3484 CPI R24,0x44
050D F469 BNE 0x051B
(0387) {
(0388) temp1 = music_44[sound_add];
050E E482 LDI R24,0x42
050F E092 LDI R25,2
0510 90200060 LDS R2,0x60
0512 90300061 LDS R3,0x61
0514 0E28 ADD R2,R24
0515 1E39 ADC R3,R25
0516 2DE2 MOV R30,R2
0517 2DF3 MOV R31,R3
0518 95C8 LPM
0519 92000072 STS _temp1,R0
(0389) }
(0390) if(sound_1 == 0x88)
051B 91800065 LDS R24,_sound_1
051D 3888 CPI R24,0x88
051E F459 BNE 0x052A
(0391) {
(0392) temp1=EEPROMread((int)&sound[sound_add]);
051F E081 LDI R24,1
0520 E090 LDI R25,0
0521 91000060 LDS R16,0x60
0523 91100061 LDS R17,0x61
0525 0F08 ADD R16,R24
0526 1F19 ADC R17,R25
0527 D3AF RCALL _EEPROMread
0528 93000072 STS _temp1,R16
(0393) }
(0394) }
(0395) }
(0396) }
052A D348 RCALL pop_gset1
052B D380 RCALL pop_lset
052C 9518 RETI
(0397)
(0398) void stop_timer0()
(0399) {
(0400) CLI();
_stop_timer0:
052D 94F8 BCLR 7
(0401) TCCR0 = 0x00;//停止timer0
052E 2422 CLR R2
052F BE23 OUT 0x33,R2
(0402) MCUCR = 0x00;
0530 BE25 OUT 0x35,R2
(0403) GIMSK = 0x00;
0531 BE2B OUT 0x3B,R2
(0404) TIMSK = 0x00;
0532 BE29 OUT 0x39,R2
(0405) SEI();
0533 9478 BSET 7
(0406) }
0534 9508 RET
_timer1_ovf_isr:
0535 922A ST R2,-Y
0536 923A ST R3,-Y
0537 938A ST R24,-Y
0538 B62F IN R2,0x3F
0539 922A ST R2,-Y
(0407)
(0408) /*******************************************/
(0409) /* 电子音乐演示程序 */
(0410) /*******************************************/
(0411) //使用说明:音乐输出端口:PORTC.0,音乐数据存放
(0412) //于AT90S8515 的EEPROM存贮器中。
(0413) // 可以用并口下载软件写入新的音乐文件
(0414)
(0415) //声控起动音乐机器人程序,未起动时,PA口的8 LED 呈广告灯效果(霓虹灯)
(0416) //声控起动后,机器人开始演奏音乐
(0417) //按遥控器上不同的键后可改变机器人演奏的乐曲。
(0418)
(0419) #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
(0420) void timer1_ovf_isr(void)
(0421) {
(0422) TCNT1=toneconst;
053A 90200076 LDS R2,_toneconst
053C 90300077 LDS R3,_toneconst+1
053E BC3D OUT 0x2D,R3
053F BC2C OUT 0x2C,R2
(0423) PORTC^=1;
0540 E081 LDI R24,1
0541 B225 IN R2,0x15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -