?? 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:
02F1 95A8 WDR
(0202) WDTCR = 0x0E; //WATCHDOG ENABLED - dont forget WDR
02F2 E08E LDI R24,0xE
02F3 BD81 OUT P21,R24
(0203) }
02F4 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:
02F5 2422 CLR R2
02F6 BE23 OUT P33,R2
(0211) TCNT0 = 0x3D; //set count value
02F7 E38D LDI R24,0x3D
02F8 BF82 OUT P32,R24
(0212) TCCR0 = 0x05; //start timer
02F9 E085 LDI R24,5
02FA BF83 OUT P33,R24
(0213) }
02FB 9508 RET
_timer0_ovf_isr:
02FC D5D2 RCALL push_lset
02FD 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
02FE E38D LDI R24,0x3D
02FF BF82 OUT P32,R24
(0219) t0_times++;
0300 91800066 LDS R24,_t0_times
0302 5F8F SUBI R24,0xFF
0303 93800066 STS _t0_times,R24
(0220) remote_in = PINB & 0xF0;
0305 B386 IN R24,P16
0306 7F80 ANDI R24,0xF0
0307 9380006E STS _remote_in,R24
(0221) switch (remote_in)
0309 2F48 MOV R20,R24
030A 2755 CLR R21
030B 3240 CPI R20,0x20
030C E0E0 LDI R30,0
030D 075E CPC R21,R30
030E F129 BEQ 0x0334
030F E280 LDI R24,0x20
0310 E090 LDI R25,0
0311 1784 CP R24,R20
0312 0795 CPC R25,R21
0313 F064 BLT 0x0320
0314 3040 CPI R20,0
0315 0745 CPC R20,R21
0316 F0B1 BEQ 0x032D
0317 3040 CPI R20,0
0318 E0E0 LDI R30,0
0319 075E CPC R21,R30
031A F1BC BLT 0x0352
031B 3140 CPI R20,0x10
031C E0E0 LDI R30,0
031D 075E CPC R21,R30
031E F119 BEQ 0x0342
031F C032 RJMP 0x0352
0320 3440 CPI R20,0x40
0321 E0E0 LDI R30,0
0322 075E CPC R21,R30
0323 F0B9 BEQ 0x033B
0324 3440 CPI R20,0x40
0325 E0E0 LDI R30,0
0326 075E CPC R21,R30
0327 F154 BLT 0x0352
0328 3840 CPI R20,0x80
0329 E0E0 LDI R30,0
032A 075E CPC R21,R30
032B F101 BEQ 0x034C
032C C025 RJMP 0x0352
(0222) {//檢測遙控器是否有鍵按下
(0223) case 0x00: // none
(0224) rst_time=0;
032D 2422 CLR R2
032E 2433 CLR R3
032F 92300076 STS _rst_time+1,R3
0331 92200075 STS _rst_time,R2
(0225) break;
0333 C01E RJMP 0x0352
(0226) case 0x20: // < A >
(0227) rst_time=0;
0334 2422 CLR R2
0335 2433 CLR R3
0336 92300076 STS _rst_time+1,R3
0338 92200075 STS _rst_time,R2
(0228) break;
033A C017 RJMP 0x0352
(0229) case 0x40: // < B >
(0230) rst_time=0;
033B 2422 CLR R2
033C 2433 CLR R3
033D 92300076 STS _rst_time+1,R3
033F 92200075 STS _rst_time,R2
(0231) break;
0341 C010 RJMP 0x0352
(0232) case 0x10: // < C >
(0233) rst_time++;
0342 91800075 LDS R24,_rst_time
0344 91900076 LDS R25,_rst_time+1
0346 9601 ADIW R24,1
0347 93900076 STS _rst_time+1,R25
0349 93800075 STS _rst_time,R24
(0234) break;
034B C006 RJMP 0x0352
(0235) case 0x80: // < D >
(0236) rst_time=0;
034C 2422 CLR R2
034D 2433 CLR R3
034E 92300076 STS _rst_time+1,R3
0350 92200075 STS _rst_time,R2
(0237) break;
(0238) }
(0239) if(rst_time > 400) // 400*25ms=10s,+1s 看門狗復位
0352 E980 LDI R24,0x90
0353 E091 LDI R25,1
0354 90200075 LDS R2,_rst_time
0356 90300076 LDS R3,_rst_time+1
0358 1582 CP R24,R2
0359 0593 CPC R25,R3
035A F420 BCC 0x035F
(0240) {
(0241) PORTA = 0xff;
035B EF8F LDI R24,0xFF
035C BB8B OUT P1B,R24
(0242) watchdog_init();
035D DF93 RCALL _watchdog_init
(0243) while(1);
035E CFFF RJMP 0x035E
(0244) }
(0245) if(gzsl == 0x88)
035F 91800067 LDS R24,_gzsl
0361 3888 CPI R24,0x88
0362 F509 BNE 0x0384
(0246) {
(0247) if(t0_times == 10)
0363 91800066 LDS R24,_t0_times
0365 308A CPI R24,0xA
0366 F4E9 BNE 0x0384
(0248) {
(0249) timers++;
0367 9180006D LDS R24,_timers
0369 5F8F SUBI R24,0xFF
036A 9380006D STS _timers,R24
(0250) t0_times = 0;
036C 2422 CLR R2
036D 92200066 STS _t0_times,R2
(0251) pa = led_data[timers];
036F E388 LDI R24,0x38
0370 E090 LDI R25,0
0371 9020006D LDS R2,_timers
0373 2433 CLR R3
0374 0E28 ADD R2,R24
0375 1E39 ADC R3,R25
0376 2DE2 MOV R30,R2
0377 2DF3 MOV R31,R3
0378 95C8 LPM
0379 92000072 STS _pa,R0
(0252) if(pa==0x0a){timers=0;}
037B 2D80 MOV R24,R0
037C 308A CPI R24,0xA
037D F419 BNE 0x0381
037E 2422 CLR R2
037F 9220006D STS _timers,R2
(0253) PORTA = pa;
0381 90200072 LDS R2,_pa
0383 BA2B OUT P1B,R2
(0254) }
(0255) }
(0256) if(gzsl == 0x33)
0384 91800067 LDS R24,_gzsl
0386 3383 CPI R24,0x33
0387 F009 BEQ 0x0389
0388 C08C RJMP 0x0415
(0257) {
(0258) sw_touch();
0389 DE85 RCALL _sw_touch
(0259) if(t0_times == 8) //8*25ms=200ms
038A 91800066 LDS R24,_t0_times
038C 3088 CPI R24,0x8
038D F009 BEQ 0x038F
038E C086 RJMP 0x0415
(0260) {
(0261) t0_times = 0;
038F 2422 CLR R2
0390 92200066 STS _t0_times,R2
(0262) remote_in = PINB & 0xF0;
0392 B386 IN R24,P16
0393 7F80 ANDI R24,0xF0
0394 9380006E STS _remote_in,R24
(0263) sound_1 = remote_in;
0396 2E28 MOV R2,R24
0397 92200065 STS _sound_1,R2
(0264) if(sound_2 != sound_1)
0399 90300064 LDS R3,_sound_2
039B 1638 CP R3,R24
039C F051 BEQ 0x03A7
(0265) {sound_add=0;sound_2 = sound_1;}
039D 2422 CLR R2
039E 2433 CLR R3
039F 92300061 STS 0x61,R3
03A1 92200060 STS 0x60,R2
03A3 90200065 LDS R2,_sound_1
03A5 92200064 STS _sound_2,R2
(0266) switch (remote_in)
03A7 9140006E LDS R20,_remote_in
03A9 2755 CLR R21
03AA 3240 CPI R20,0x20
03AB E0E0 LDI R30,0
03AC 075E CPC R21,R30
03AD F161 BEQ 0x03DA
03AE E280 LDI R24,0x20
03AF E090 LDI R25,0
03B0 1784 CP R24,R20
03B1 0795 CPC R25,R21
03B2 F074 BLT 0x03C1
03B3 3040 CPI R20,0
03B4 0745 CPC R20,R21
03B5 F0D1 BEQ 0x03D0
03B6 3040 CPI R20,0
03B7 E0E0 LDI R30,0
03B8 075E CPC R21,R30
03B9 F40C BGE 0x03BB
03BA C05A RJMP 0x0415
03BB 3140 CPI R20,0x10
03BC E0E0 LDI R30,0
03BD 075E CPC R21,R30
03BE F409 BNE 0x03C0
03BF C038 RJMP 0x03F8
03C0 C054 RJMP 0x0415
03C1 3440 CPI R20,0x40
03C2 E0E0 LDI R30,0
03C3 075E CPC R21,R30
03C4 F121 BEQ 0x03E9
03C5 3440 CPI R20,0x40
03C6 E0E0 LDI R30,0
03C7 075E CPC R21,R30
03C8 F40C BGE 0x03CA
03C9 C04B RJMP 0x0415
03CA 3840 CPI R20,0x80
03CB E0E0 LDI R30,0
03CC 075E CPC R21,R30
03CD F409 BNE 0x03CF
03CE C038 RJMP 0x0407
03CF C045 RJMP 0x0415
(0267) {//檢測遙控器是否有鍵按下
(0268) case 0x00:
(0269) forward(); //前行
03D0 DE35 RCALL _forward
(0270) sound_add=0x00;
03D1 2422 CLR R2
03D2 2433 CLR R3
03D3 92300061 STS 0x61,R3
03D5 92200060 STS 0x60,R2
(0271) temp1=0x00;
03D7 92200073 STS _temp1,R2
(0272) break;
03D9 C03B RJMP 0x0415
(0273) case 0x20: // < A >
(0274) turn_right(); //右轉
03DA DE12 RCALL _turn_right
(0275) temp1=sound_right[sound_add];
03DB EE8E LDI R24,0xEE
03DC E092 LDI R25,2
03DD 90200060 LDS R2,0x60
03DF 90300061 LDS R3,0x61
03E1 0E28 ADD R2,R24
03E2 1E39 ADC R3,R25
03E3 2DE2 MOV R30,R2
03E4 2DF3 MOV R31,R3
03E5 95C8 LPM
03E6 92000073 STS _temp1,R0
(0276) break;
03E8 C02C RJMP 0x0415
(0277) case 0x40: // < B >
(0278) backward(); //后退
03E9 DE17 RCALL _backward
(0279) temp1=sound_back[sound_add];
03EA E084 LDI R24,4
03EB E093 LDI R25,3
03EC 90200060 LDS R2,0x60
03EE 90300061 LDS R3,0x61
03F0 0E28 ADD R2,R24
03F1 1E39 ADC R3,R25
03F2 2DE2 MOV R30,R2
03F3 2DF3 MOV R31,R3
03F4 95C8 LPM
03F5 92000073 STS _temp1,R0
(0280) break;
03F7 C01D RJMP 0x0415
(0281) case 0x10: // < C >
(0282) stop(); //停止運動
03F8 DE12 RCALL _stop
(0283) temp1=sound_stop[sound_add];
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -