?? diy0206_4.lst
字號:
(0132) 0x45,0x41,0x21,0x22,0x43,0x25,0x23,0x42,0x20,0x23,0x45,0x45,
(0133) 0x25,0x25,0x26,0x25,0x23,0x45,0x25,0x26,0x25,0x28,0x26,0x45,
(0134) 0x45,0x41,0x25,0x23,0x22,0x21,0x42,0x23,0x65,0x25,0x22,0x43,
(0135) 0x41,0x41,0x41,0x20,0x25,0x4a,0x29,0x28,0x26,0x25,0x45,0x26,
(0136) 0x46,0x25,0x36,0x18,0x2a,0x28,0x49,0x49,0x49,0x20,0x25,0x4a,
(0137) 0x39,0x18,0x26,0x25,0x45,0x26,0x46,0x25,0x46,0x2a,0x29,0x49,
(0138) 0x49,0x49,0x49,0x4a,0x39,0x18,0x26,0x25,0x45,0x48,0x26,0x25,
(0139) 0x23,0x22,0x41,0x40,0x22,0x23,0x45,0x45,0x45,0x45,0x40,0x25,
(0140) 0x26,0x48,0x48,0x48,
(0141) 0x00,0x00
(0142) };
(0143) const unsigned char music_22[]=
(0144) {//走進新時代
(0145) 0x68,0x26,0x25,0x23,0x22,0x13,0x12,0x41,0x41,0x41,0x23,0x25,
(0146) 0x28,0x48,0x28,0x29,0x2a,0x29,0x26,0x45,0x45,0x45,0x45,0x68,
(0147) 0x29,0x29,0x28,0x26,0x25,0x46,0x46,0x46,0x25,0x26,
(0148) 0x29,0x43,0x25,0x22,0x23,0x22,0x21,0x42,0x42,0x42,0x42,0x63,
(0149) 0x25,0x26,0x25,0x26,0x25,0x23,0x22,0x13,0x12,0x41,0x23,0x25,
(0150) 0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x29,0x46,0x46,0x46,0x46,
(0151) 0x46,0x29,0x2a,0x28,0x28,0x26,0x25,0x26,0x26,0x25,0x43,0x43,
(0152) 0x22,0x42,0x26,0x25,0x23,0x22,0x13,0x12,0x41,0x41,0x41,0x41,
(0153) 0x00,0x00
(0154) };
(0155) const unsigned char music_33[]=
(0156) {
(0157) //星語心愿
(0158) 0x36,0x18,0x27,0x26,0x25,0x26,0x43,0x43,0x43,0x26,0x25,0x36,0x18,0x27,0x18,0x17,
(0159) 0x26,0x27,0x48,0x48,0x48,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x49,0x49,0x28,0x27,0x26,
(0160) 0x27,0x45,0x45,0x46,0x48,0x47,0x26,0x25,0x46,0x46,0x46,0x40,0x40,0x40,0x40,0x40,
(0161) 0x36,0x18,0x27,0x26,0x25,0x26,0x26,0x26,0x46,0x46,0x26,0x25,0x36,0x18,0x27,0x18,
(0162) 0x17,0x26,0x27,0x48,0x48,0x48,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x49,0x49,0x28,0x27,
(0163) 0x26,0x27,0x45,0x45,0x46,0x26,0x28,0x47,0x45,0x40,0x26,0x28,0x47,0x45,0x46,0x46,
(0164) 0x46,0x46,0x46,0x46,0x46,0x23,0x25,0x46,0x4a,0x39,0x18,0x27,0x28,0x48,0x48,0x48,
(0165) 0x28,0x27,0x36,0x16,0x45,0x47,0x46,0x46,0x46,0x23,0x25,0x46,0x4a,0x39,0x18,0x27,
(0166) 0x28,0x48,0x48,0x28,0x27,0x36,0x16,0x45,0x27,0x26,0x46,0x46,0x46,0x46,0x46,0x46,
(0167) 0x00,0x00
(0168) };
(0169) const unsigned char music_44[]=
(0170) {
(0171) //上海灘
(0172) 0x2a,0x2c,0x4d,0x4d,0x4d,0x2a,0x2c,0x49,0x49,0x49,0x2a,0x2c,
(0173) 0x2d,0x4f,0x2d,0x4c,0x1d,0x18,0x2a,0x49,0x49,0x49,0x29,0x2a,
(0174) 0x4c,0x4c,0x4c,0x29,0x2a,0x29,0x26,0x4d,0x4d,0x4d,0x26,0x28,
(0175) 0x39,0x1a,0x29,0x27,0x26,0x28,0x45,0x45,0x45,0x2a,0x2c,0x4d,
(0176) 0x4d,0x4d,0x2a,0x2c,0x49,0x49,0x49,0x2a,0x2c,0x2d,0x4f,0x2d,
(0177) 0x4c,0x1d,0x18,0x2a,0x49,0x49,0x49,0x29,0x2a,0x4c,0x4c,0x4c,
(0178) 0x29,0x2a,0x29,0x26,0x4d,0x4d,0x4d,0x26,0x28,0x39,0x1a,0x29,
(0179) 0x27,0x26,0x25,0x48,0x48,0x20,0x2f,0x2f,0x2d,0x4f,0x4f,0x20,
(0180) 0x2d,0x2f,0x2d,0x4c,0x4c,0x4c,0x2c,0x2a,0x6d,0x2c,0x48,0x19,
(0181) 0x18,0x28,0x4a,0x4a,0x20,0x2a,0x2a,0x29,0x4a,0x4a,0x20,0x2f,
(0182) 0x2f,0x2e,0x4d,0x4d,0x4d,0x2a,0x2a,0x69,0x2a,0x2f,0x2e,0x2d,
(0183) 0x2a,0x4c,0x4c,0x4c,
(0184) 0x00,0x00
(0185) };
(0186) const unsigned char sound_none[]={0x28,0x27,0x36,0x16,0x45,0x47,0x46,0x46,0x46,0x23,0x25,0x46,0x4a,0x39,0x18,0x27,
(0187) 0x28,0x48,0x48,0x28,0x27,0x36,0x16,0x45,0x27,0x26,0x46,0x46,0x46,0x46,0x46,0x46,0x00,0x00};
(0188) const unsigned char sound_right[]={0x23,0x25,0x46,0x4a,0x39,0x18,0x27,0x28,0x48,0x48,0x48,
(0189) 0x28,0x27,0x36,0x16,0x45,0x47,0x46,0x46,0x46,0x00,0x00};
(0190) const unsigned char sound_back[]={0x2a,0x2c,0x4d,0x4d,0x4d,0x2a,0x2c,0x49,0x49,0x49,0x2a,0x2c,0x2d,0x4f,
(0191) 0x2d,0x4c,0x1d,0x18,0x2a,0x49,0x49,0x49,0x00,0x00};
(0192) const unsigned char sound_stop[]={0x23,0x24,0x25,0x44,0x45,0x24,0x23,0x22,0x42,0x40,0x40,0x23,0x22,0x21,0x41,0x28,
(0193) 0x48,0x23,0x25,0x45,0x40,0x40,0x00,0x00};
(0194) const unsigned char sound_left[]={0x68,0x26,0x25,0x23,0x22,0x13,0x12,0x41,0x41,0x41,0x23,0x25,
(0195) 0x28,0x48,0x28,0x29,0x2a,0x29,0x26,0x45,0x45,0x45,0x00,0x00};
(0196)
(0197) //Watchdog initialisation
(0198) // prescale: 1024K cycles
(0199) void watchdog_init(void)
(0200) {
(0201) WDR(); //this prevents a timout on enabling
_watchdog_init:
02F5 95A8 WDR
(0202) WDTCR = 0x0E; //WATCHDOG ENABLED - dont forget WDR
02F6 E08E LDI R24,0xE
02F7 BD81 OUT P21,R24
(0203) }
02F8 9508 RET
(0204)
(0205) //TIMER0 initialisation - prescale:1024
(0206) // desired value: 25mSec
(0207) // actual value: 24.960mSec (0.2%)
(0208) void timer0_init(void)
(0209) {
(0210) TCCR0 = 0x00; //stop timer
_timer0_init:
02F9 2422 CLR R2
02FA BE23 OUT P33,R2
(0211) TCNT0 = 0x3D; //set count value
02FB E38D LDI R24,0x3D
02FC BF82 OUT P32,R24
(0212) TCCR0 = 0x05; //start timer
02FD E085 LDI R24,5
02FE BF83 OUT P33,R24
(0213) }
02FF 9508 RET
_timer0_ovf_isr:
0300 D5D2 RCALL push_lset
0301 D5A9 RCALL push_gset1
(0214)
(0215) #pragma interrupt_handler timer0_ovf_isr:iv_TIMER0_OVF
(0216) void timer0_ovf_isr(void)
(0217) {
(0218) TCNT0 = 0x3D; //reload counter value
0302 E38D LDI R24,0x3D
0303 BF82 OUT P32,R24
(0219) t0_times++;
0304 91800066 LDS R24,_t0_times
0306 5F8F SUBI R24,0xFF
0307 93800066 STS _t0_times,R24
(0220) remote_in = PINB & 0xF0;
0309 B386 IN R24,P16
030A 7F80 ANDI R24,0xF0
030B 9380006E STS _remote_in,R24
(0221) switch (remote_in)
030D 2F48 MOV R20,R24
030E 2755 CLR R21
030F 3240 CPI R20,0x20
0310 E0E0 LDI R30,0
0311 075E CPC R21,R30
0312 F129 BEQ 0x0338
0313 E280 LDI R24,0x20
0314 E090 LDI R25,0
0315 1784 CP R24,R20
0316 0795 CPC R25,R21
0317 F064 BLT 0x0324
0318 3040 CPI R20,0
0319 0745 CPC R20,R21
031A F0B1 BEQ 0x0331
031B 3040 CPI R20,0
031C E0E0 LDI R30,0
031D 075E CPC R21,R30
031E F1BC BLT 0x0356
031F 3140 CPI R20,0x10
0320 E0E0 LDI R30,0
0321 075E CPC R21,R30
0322 F119 BEQ 0x0346
0323 C032 RJMP 0x0356
0324 3440 CPI R20,0x40
0325 E0E0 LDI R30,0
0326 075E CPC R21,R30
0327 F0B9 BEQ 0x033F
0328 3440 CPI R20,0x40
0329 E0E0 LDI R30,0
032A 075E CPC R21,R30
032B F154 BLT 0x0356
032C 3840 CPI R20,0x80
032D E0E0 LDI R30,0
032E 075E CPC R21,R30
032F F101 BEQ 0x0350
0330 C025 RJMP 0x0356
(0222) {//檢測遙控器是否有鍵按下
(0223) case 0x00: // none
(0224) rst_time=0;
0331 2422 CLR R2
0332 2433 CLR R3
0333 92300076 STS _rst_time+1,R3
0335 92200075 STS _rst_time,R2
(0225) break;
0337 C01E RJMP 0x0356
(0226) case 0x20: // < A >
(0227) rst_time=0;
0338 2422 CLR R2
0339 2433 CLR R3
033A 92300076 STS _rst_time+1,R3
033C 92200075 STS _rst_time,R2
(0228) break;
033E C017 RJMP 0x0356
(0229) case 0x40: // < B >
(0230) rst_time=0;
033F 2422 CLR R2
0340 2433 CLR R3
0341 92300076 STS _rst_time+1,R3
0343 92200075 STS _rst_time,R2
(0231) break;
0345 C010 RJMP 0x0356
(0232) case 0x10: // < C >
(0233) rst_time++;
0346 91800075 LDS R24,_rst_time
0348 91900076 LDS R25,_rst_time+1
034A 9601 ADIW R24,1
034B 93900076 STS _rst_time+1,R25
034D 93800075 STS _rst_time,R24
(0234) break;
034F C006 RJMP 0x0356
(0235) case 0x80: // < D >
(0236) rst_time=0;
0350 2422 CLR R2
0351 2433 CLR R3
0352 92300076 STS _rst_time+1,R3
0354 92200075 STS _rst_time,R2
(0237) break;
(0238) }
(0239) if(rst_time > 400) // 400*25ms=10s,+1s 看門狗復位
0356 E980 LDI R24,0x90
0357 E091 LDI R25,1
0358 90200075 LDS R2,_rst_time
035A 90300076 LDS R3,_rst_time+1
035C 1582 CP R24,R2
035D 0593 CPC R25,R3
035E F420 BCC 0x0363
(0240) {
(0241) PORTA = 0xff;
035F EF8F LDI R24,0xFF
0360 BB8B OUT P1B,R24
(0242) watchdog_init();
0361 DF93 RCALL _watchdog_init
(0243) while(1);
0362 CFFF RJMP 0x0362
(0244) }
(0245) if(gzsl == 0x88)
0363 91800067 LDS R24,_gzsl
0365 3888 CPI R24,0x88
0366 F509 BNE 0x0388
(0246) {
(0247) if(t0_times == 10)
0367 91800066 LDS R24,_t0_times
0369 308A CPI R24,0xA
036A F4E9 BNE 0x0388
(0248) {
(0249) timers++;
036B 9180006D LDS R24,_timers
036D 5F8F SUBI R24,0xFF
036E 9380006D STS _timers,R24
(0250) t0_times = 0;
0370 2422 CLR R2
0371 92200066 STS _t0_times,R2
(0251) pa = led_data[timers];
0373 E480 LDI R24,0x40
0374 E090 LDI R25,0
0375 9020006D LDS R2,_timers
0377 2433 CLR R3
0378 0E28 ADD R2,R24
0379 1E39 ADC R3,R25
037A 2DE2 MOV R30,R2
037B 2DF3 MOV R31,R3
037C 95C8 LPM
037D 92000072 STS _pa,R0
(0252) if(pa==0x0a){timers=0;}
037F 2D80 MOV R24,R0
0380 308A CPI R24,0xA
0381 F419 BNE 0x0385
0382 2422 CLR R2
0383 9220006D STS _timers,R2
(0253) PORTA = pa;
0385 90200072 LDS R2,_pa
0387 BA2B OUT P1B,R2
(0254) }
(0255) }
(0256) if(gzsl == 0x33)
0388 91800067 LDS R24,_gzsl
038A 3383 CPI R24,0x33
038B F009 BEQ 0x038D
038C C08C RJMP 0x0419
(0257) {
(0258) sw_touch();
038D DE85 RCALL _sw_touch
(0259) if(t0_times == 8) //8*25ms=200ms
038E 91800066 LDS R24,_t0_times
0390 3088 CPI R24,0x8
0391 F009 BEQ 0x0393
0392 C086 RJMP 0x0419
(0260) {
(0261) t0_times = 0;
0393 2422 CLR R2
0394 92200066 STS _t0_times,R2
(0262) remote_in = PINB & 0xF0;
0396 B386 IN R24,P16
0397 7F80 ANDI R24,0xF0
0398 9380006E STS _remote_in,R24
(0263) sound_1 = remote_in;
039A 2E28 MOV R2,R24
039B 92200065 STS _sound_1,R2
(0264) if(sound_2 != sound_1)
039D 90300064 LDS R3,_sound_2
039F 1638 CP R3,R24
03A0 F051 BEQ 0x03AB
(0265) {sound_add=0;sound_2 = sound_1;}
03A1 2422 CLR R2
03A2 2433 CLR R3
03A3 92300061 STS 0x61,R3
03A5 92200060 STS 0x60,R2
03A7 90200065 LDS R2,_sound_1
03A9 92200064 STS _sound_2,R2
(0266) switch (remote_in)
03AB 9140006E LDS R20,_remote_in
03AD 2755 CLR R21
03AE 3240 CPI R20,0x20
03AF E0E0 LDI R30,0
03B0 075E CPC R21,R30
03B1 F161 BEQ 0x03DE
03B2 E280 LDI R24,0x20
03B3 E090 LDI R25,0
03B4 1784 CP R24,R20
03B5 0795 CPC R25,R21
03B6 F074 BLT 0x03C5
03B7 3040 CPI R20,0
03B8 0745 CPC R20,R21
03B9 F0D1 BEQ 0x03D4
03BA 3040 CPI R20,0
03BB E0E0 LDI R30,0
03BC 075E CPC R21,R30
03BD F40C BGE 0x03BF
03BE C05A RJMP 0x0419
03BF 3140 CPI R20,0x10
03C0 E0E0 LDI R30,0
03C1 075E CPC R21,R30
03C2 F409 BNE 0x03C4
03C3 C038 RJMP 0x03FC
03C4 C054 RJMP 0x0419
03C5 3440 CPI R20,0x40
03C6 E0E0 LDI R30,0
03C7 075E CPC R21,R30
03C8 F121 BEQ 0x03ED
03C9 3440 CPI R20,0x40
03CA E0E0 LDI R30,0
03CB 075E CPC R21,R30
03CC F40C BGE 0x03CE
03CD C04B RJMP 0x0419
03CE 3840 CPI R20,0x80
03CF E0E0 LDI R30,0
03D0 075E CPC R21,R30
03D1 F409 BNE 0x03D3
03D2 C038 RJMP 0x040B
03D3 C045 RJMP 0x0419
(0267) {//檢測遙控器是否有鍵按下
(0268) case 0x00:
(0269) forward(); //前行
03D4 DE35 RCALL _forward
(0270) sound_add=0x00;
03D5 2422 CLR R2
03D6 2433 CLR R3
03D7 92300061 STS 0x61,R3
03D9 92200060 STS 0x60,R2
(0271) temp1=0x00;
03DB 92200073 STS _temp1,R2
(0272) break;
03DD C03B RJMP 0x0419
(0273) case 0x20: // < A >
(0274) turn_right(); //右轉
03DE DE12 RCALL _turn_right
(0275) temp1=sound_right[sound_add];
03DF EF86 LDI R24,0xF6
03E0 E092 LDI R25,2
03E1 90200060 LDS R2,0x60
03E3 90300061 LDS R3,0x61
03E5 0E28 ADD R2,R24
03E6 1E39 ADC R3,R25
03E7 2DE2 MOV R30,R2
03E8 2DF3 MOV R31,R3
03E9 95C8 LPM
03EA 92000073 STS _temp1,R0
(0276) break;
03EC C02C RJMP 0x0419
(0277) case 0x40: // < B >
(0278) backward(); //后退
03ED DE17 RCALL _backward
(0279) temp1=sound_back[sound_add];
03EE E08C LDI R24,0xC
03EF E093 LDI R25,3
03F0 90200060 LDS R2,0x60
03F2 90300061 LDS R3,0x61
03F4 0E28 ADD R2,R24
03F5 1E39 ADC R3,R25
03F6 2DE2 MOV R30,R2
03F7 2DF3 MOV R31,R3
03F8 95C8 LPM
03F9 92000073 STS _temp1,R0
(0280) break;
03FB C01D RJMP 0x0419
(0281) case 0x10: // < C >
(0282) stop(); //停止運動
03FC DE12 RCALL _stop
(0283) temp1=sound_stop[sound_add];
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -