⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sl3010_4.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 LST
📖 第 1 页 / 共 5 页
字号:
(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:
    02EF 95A8      WDR
(0202)  WDTCR = 0x0E; //WATCHDOG ENABLED - dont forget WDR
    02F0 E08E      LDI	R24,0xE
    02F1 BD81      OUT	0x21,R24
(0203) }
    02F2 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:
    02F3 2422      CLR	R2
    02F4 BE23      OUT	0x33,R2
(0211)  TCNT0 = 0x3D; //set count value
    02F5 E38D      LDI	R24,0x3D
    02F6 BF82      OUT	0x32,R24
(0212)  TCCR0 = 0x05; //start timer
    02F7 E085      LDI	R24,5
    02F8 BF83      OUT	0x33,R24
(0213) }
    02F9 9508      RET
_timer0_ovf_isr:
    02FA D59A      RCALL	push_lset
    02FB D574      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
    02FC E38D      LDI	R24,0x3D
    02FD BF82      OUT	0x32,R24
(0219)  t0_times++;
    02FE 91800066  LDS	R24,_t0_times
    0300 5F8F      SUBI	R24,0xFF
    0301 93800066  STS	_t0_times,R24
(0220)  	   remote_in = PINB & 0x0F;
    0303 B386      IN	R24,0x16
    0304 708F      ANDI	R24,0xF
    0305 9380007D  STS	_remote_in,R24
(0221) 	   switch (remote_in)
    0307 2F48      MOV	R20,R24
    0308 2755      CLR	R21
    0309 3040      CPI	R20,0
    030A 0745      CPC	R20,R21
    030B F089      BEQ	0x031D
    030C 3041      CPI	R20,1
    030D E0E0      LDI	R30,0
    030E 075E      CPC	R21,R30
    030F F161      BEQ	0x033C
    0310 3042      CPI	R20,2
    0311 E0E0      LDI	R30,0
    0312 075E      CPC	R21,R30
    0313 F0B9      BEQ	0x032B
    0314 3044      CPI	R20,4
    0315 E0E0      LDI	R30,0
    0316 075E      CPC	R21,R30
    0317 F061      BEQ	0x0324
    0318 3048      CPI	R20,0x8
    0319 E0E0      LDI	R30,0
    031A 075E      CPC	R21,R30
    031B F0B1      BEQ	0x0332
    031C C025      RJMP	0x0342
(0222)       	 {//检测遥控器是否有键按下
(0223)           case 0x00:  // none
(0224) 			  rst_time=0;
    031D 2422      CLR	R2
    031E 2433      CLR	R3
    031F 92300075  STS	_rst_time+1,R3
    0321 92200074  STS	_rst_time,R2
(0225)       	    break;
    0323 C01E      RJMP	0x0342
(0226)           case 0x04:  // < A >
(0227) 			  rst_time=0;
    0324 2422      CLR	R2
    0325 2433      CLR	R3
    0326 92300075  STS	_rst_time+1,R3
    0328 92200074  STS	_rst_time,R2
(0228)       	    break;
    032A C017      RJMP	0x0342
(0229)           case 0x02:  // < B >
(0230) 		      rst_time=0;
    032B 2422      CLR	R2
    032C 2433      CLR	R3
    032D 92300075  STS	_rst_time+1,R3
    032F 92200074  STS	_rst_time,R2
(0231)       	    break;
    0331 C010      RJMP	0x0342
(0232)           case 0x08:  // < C >
(0233) 		      rst_time++;
    0332 91800074  LDS	R24,_rst_time
    0334 91900075  LDS	R25,_rst_time+1
    0336 9601      ADIW	R24,1
    0337 93900075  STS	_rst_time+1,R25
    0339 93800074  STS	_rst_time,R24
(0234)       	    break;
    033B C006      RJMP	0x0342
(0235)           case 0x01:  // < D >
(0236)               rst_time=0;
    033C 2422      CLR	R2
    033D 2433      CLR	R3
    033E 92300075  STS	_rst_time+1,R3
    0340 92200074  STS	_rst_time,R2
(0237)       	    break;
(0238)       	 }
(0239)  if(rst_time > 400)  // 400*25ms=10s,+1s 看门狗复位  
    0342 E980      LDI	R24,0x90
    0343 E091      LDI	R25,1
    0344 90200074  LDS	R2,_rst_time
    0346 90300075  LDS	R3,_rst_time+1
    0348 1582      CP	R24,R2
    0349 0593      CPC	R25,R3
    034A F420      BCC	0x034F
(0240)    {
(0241)     PORTA = 0xff;
    034B EF8F      LDI	R24,0xFF
    034C BB8B      OUT	0x1B,R24
(0242) 	watchdog_init();
    034D DFA1      RCALL	_watchdog_init
(0243) 	while(1);
    034E CFFF      RJMP	0x034E
(0244)    }
(0245)  if(gzsl == 0x88)
    034F 91800067  LDS	R24,_gzsl
    0351 3888      CPI	R24,0x88
    0352 F509      BNE	0x0374
(0246)    {
(0247)     if(t0_times == 10)
    0353 91800066  LDS	R24,_t0_times
    0355 308A      CPI	R24,0xA
    0356 F4E9      BNE	0x0374
(0248)       {
(0249) 	   timers++;
    0357 9180006D  LDS	R24,_timers
    0359 5F8F      SUBI	R24,0xFF
    035A 9380006D  STS	_timers,R24
(0250) 	   t0_times = 0;
    035C 2422      CLR	R2
    035D 92200066  STS	_t0_times,R2
(0251) 	   pa = led_data[timers];
    035F E388      LDI	R24,0x38
    0360 E090      LDI	R25,0
    0361 9020006D  LDS	R2,_timers
    0363 2433      CLR	R3
    0364 0E28      ADD	R2,R24
    0365 1E39      ADC	R3,R25
    0366 2DE2      MOV	R30,R2
    0367 2DF3      MOV	R31,R3
    0368 95C8      LPM
    0369 92000071  STS	_pa,R0
(0252) 	   if(pa==0x0a){timers=0;}
    036B 2D80      MOV	R24,R0
    036C 308A      CPI	R24,0xA
    036D F419      BNE	0x0371
    036E 2422      CLR	R2
    036F 9220006D  STS	_timers,R2
(0253) 	   PORTA = pa;	   
    0371 90200071  LDS	R2,_pa
    0373 BA2B      OUT	0x1B,R2
(0254)       }
(0255)    }
(0256)  if(gzsl == 0x33)
    0374 91800067  LDS	R24,_gzsl
    0376 3383      CPI	R24,0x33
    0377 F009      BEQ	0x0379
    0378 C07A      RJMP	0x03F3
(0257)    {
(0258)     sw_touch();
    0379 DE96      RCALL	_sw_touch
(0259) 	if(t0_times == 8)     //8*25ms=200ms
    037A 91800066  LDS	R24,_t0_times
    037C 3088      CPI	R24,0x8
    037D F009      BEQ	0x037F
    037E C074      RJMP	0x03F3
(0260)       {
(0261) 	   t0_times = 0;
    037F 2422      CLR	R2
    0380 92200066  STS	_t0_times,R2
(0262) 	   remote_in = PINB & 0x0F;
    0382 B386      IN	R24,0x16
    0383 708F      ANDI	R24,0xF
    0384 9380007D  STS	_remote_in,R24
(0263) 	   sound_1 = remote_in;
    0386 2E28      MOV	R2,R24
    0387 92200065  STS	_sound_1,R2
(0264)        if(sound_2 != sound_1)
    0389 90300064  LDS	R3,_sound_2
    038B 1638      CP	R3,R24
    038C F049      BEQ	0x0396
(0265) 	     {sound_add=0;sound_2 = sound_1;}
    038D 2422      CLR	R2
    038E 2433      CLR	R3
    038F 92300061  STS	0x61,R3
    0391 92200060  STS	0x60,R2
    0393 2E28      MOV	R2,R24
    0394 92200064  STS	_sound_2,R2
(0266) 	   switch (remote_in)
    0396 9140007D  LDS	R20,_remote_in
    0398 2755      CLR	R21
    0399 3040      CPI	R20,0
    039A 0745      CPC	R20,R21
    039B F091      BEQ	0x03AE
    039C 3041      CPI	R20,1
    039D E0E0      LDI	R30,0
    039E 075E      CPC	R21,R30
    039F F409      BNE	0x03A1
    03A0 C044      RJMP	0x03E5
    03A1 3042      CPI	R20,2
    03A2 E0E0      LDI	R30,0
    03A3 075E      CPC	R21,R30
    03A4 F111      BEQ	0x03C7
    03A5 3044      CPI	R20,4
    03A6 E0E0      LDI	R30,0
    03A7 075E      CPC	R21,R30
    03A8 F079      BEQ	0x03B8
    03A9 3048      CPI	R20,0x8
    03AA E0E0      LDI	R30,0
    03AB 075E      CPC	R21,R30
    03AC F149      BEQ	0x03D6
    03AD C045      RJMP	0x03F3
(0267)       	 {//检测遥控器是否有键按下
(0268)           case 0x00:
(0269) 		      forward();           //前行
    03AE DE58      RCALL	_forward
(0270) 			  sound_add=0x00;
    03AF 2422      CLR	R2
    03B0 2433      CLR	R3
    03B1 92300061  STS	0x61,R3
    03B3 92200060  STS	0x60,R2
(0271) 			  temp1=0x00;
    03B5 92200072  STS	_temp1,R2
(0272)       	    break;
    03B7 C03B      RJMP	0x03F3
(0273)           case 0x04:  // < A >
(0274) 		      turn_right();        //右转
    03B8 DE35      RCALL	_turn_right
(0275) 			  temp1=sound_right[sound_add];
    03B9 EE8E      LDI	R24,0xEE
    03BA E092      LDI	R25,2
    03BB 90200060  LDS	R2,0x60
    03BD 90300061  LDS	R3,0x61
    03BF 0E28      ADD	R2,R24
    03C0 1E39      ADC	R3,R25
    03C1 2DE2      MOV	R30,R2
    03C2 2DF3      MOV	R31,R3
    03C3 95C8      LPM
    03C4 92000072  STS	_temp1,R0
(0276)       	    break;
    03C6 C02C      RJMP	0x03F3
(0277)           case 0x02:  // < B >
(0278) 		      backward();          //后退
    03C7 DE3A      RCALL	_backward
(0279) 			  temp1=sound_back[sound_add];
    03C8 E084      LDI	R24,4
    03C9 E093      LDI	R25,3
    03CA 90200060  LDS	R2,0x60
    03CC 90300061  LDS	R3,0x61
    03CE 0E28      ADD	R2,R24
    03CF 1E39      ADC	R3,R25
    03D0 2DE2      MOV	R30,R2
    03D1 2DF3      MOV	R31,R3
    03D2 95C8      LPM
    03D3 92000072  STS	_temp1,R0
(0280)       	    break;
    03D5 C01D      RJMP	0x03F3
(0281)           case 0x08:  // < C >
(0282) 		      stop();              //停止运动
    03D6 DE35      RCALL	_stop
(0283) 			  temp1=sound_stop[sound_add];
    03D7 E18C      LDI	R24,0x1C
    03D8 E093      LDI	R25,3
    03D9 90200060  LDS	R2,0x60
    03DB 90300061  LDS	R3,0x61
    03DD 0E28      ADD	R2,R24
    03DE 1E39      ADC	R3,R25
    03DF 2DE2      MOV	R30,R2
    03E0 2DF3      MOV	R31,R3
    03E1 95C8      LPM
    03E2 92000072  STS	_temp1,R0
(0284)       	    break;
    03E4 C00E      RJMP	0x03F3
(0285)           case 0x01:  // < D >
(0286)               turn_left();         //左转
    03E5 DE0D      RCALL	_turn_left
(0287) 			  temp1=sound_left[sound_add];
    03E6 E384      LDI	R24,0x34
    03E7 E093      LDI	R25,3
    03E8 90200060  LDS	R2,0x60
    03EA 90300061  LDS	R3,0x61
    03EC 0E28      ADD	R2,R24
    03ED 1E39      ADC	R3,R25
    03EE 2DE2      MOV	R30,R2
    03EF 2DF3      MOV	R31,R3
    03F0 95C8      LPM
    03F1 92000072  STS	_temp1,R0
(0288)       	    break;
(0289)       	}
(0290)       }
(0291)    }
(0292)  if(gzsl == 0x11)
    03F3 91800067  LDS	R24,_gzsl
    03F5 3181      CPI	R24,0x11
    03F6 F489      BNE	0x0408
(0293)    {
(0294) 	if(t0_times == delay_time1)  //delay_time1*25ms
    03F7 9020007A  LDS	R2,_delay_time1
    03F9 9030007B  LDS	R3,_delay_time1+1
    03FB 90400066  LDS	R4,_t0_times
    03FD 2455      CLR	R5
    03FE 1442      CP	R4,R2
    03FF 0453      CPC	R5,R3
    0400 F439      BNE	0x0408
(0295) 	  {
(0296) 	   t0_times = 0;
    0401 2422      CLR	R2
    0402 92200066  STS	_t0_times,R2
(0297) 	   gzsl = 0x22;
    0404 E282      LDI	R24,0x22
    0405 93800067  STS	_gzsl,R24
(0298) 	   forward();
    0407 DDFF      RCALL	_forward

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -