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

📄 sl3010_4.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 LST
📖 第 1 页 / 共 5 页
字号:
(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 + -