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

📄 sl3010_1.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0219) #pragma data:data							  		  						  
(0220) /*	  		    音阶表				*/	
(0221) const unsigned int TONETABLE[15]={DO,RE,MI,FA,SO,LA,TI,DO_H,
(0222) 			    	 	RE_H,MI_H,FA_H,SO_H,LA_H,TI_H,DO_HH};
(0223) /*			  音阶重装常数			*/						
(0224) unsigned int toneconst;								  							   						 				 	 	 
(0225) 
(0226) #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
(0227) void timer1_ovf_isr(void)
(0228) 	 {
(0229) 	  TCNT1=toneconst;
    03BB 902000DB  LDS	R2,_toneconst
    03BD 903000DC  LDS	R3,_toneconst+1
    03BF BC3D      OUT	0x2D,R3
    03C0 BC2C      OUT	0x2C,R2
(0230) 	  PORTC^=1;
    03C1 E081      LDI	R24,1
    03C2 B225      IN	R2,0x15
    03C3 2628      EOR	R2,R24
    03C4 BA25      OUT	0x15,R2
(0231) 	 }	 	 
    03C5 9029      LD	R2,Y+
    03C6 BE2F      OUT	0x3F,R2
    03C7 9189      LD	R24,Y+
    03C8 9039      LD	R3,Y+
    03C9 9029      LD	R2,Y+
    03CA 9518      RETI
_music_car:
  sound_add            --> R20
  temp1                --> R22
  temp                 --> R10
    03CB D1A7      RCALL	push_gset3
(0232) 
(0233) void music_car(void)
(0234)  	 {
(0235) 	  unsigned char temp,temp1;
(0236) 	  unsigned int sound_add=0;
    03CC 2744      CLR	R20
    03CD 2755      CLR	R21
(0237) 
(0238)  	  PORTA = 0x18;
    03CE E188      LDI	R24,0x18
    03CF BB8B      OUT	0x1B,R24
(0239) 
(0240) 	  work_status = 0x30;  //置对应的工作状态标志
    03D0 E380      LDI	R24,0x30
    03D1 938000E6  STS	_work_status,R24
(0241) 	  
(0242) 	  SEI();
    03D3 9478      BSET	7
(0243) 	  
(0244) 	  mic_startup();       //等待声控启动
    03D4 DD53      RCALL	_mic_startup
(0245) 	  
(0246) 	  TCCR1A = 0x00;
    03D5 2422      CLR	R2
    03D6 BC2F      OUT	0x2F,R2
(0247) 	  TCCR1B =(1<<CS11);//8分频
    03D7 E082      LDI	R24,2
    03D8 BD8E      OUT	0x2E,R24
(0248) 	  temp1=EEPROMread((int)&sound[sound_add]);
    03D9 E081      LDI	R24,1
    03DA E090      LDI	R25,0
    03DB 2F04      MOV	R16,R20
    03DC 2F15      MOV	R17,R21
    03DD 0F08      ADD	R16,R24
    03DE 1F19      ADC	R17,R25
    03DF D1B8      RCALL	_EEPROMread
    03E0 2F60      MOV	R22,R16
    03E1 C067      RJMP	0x0449
(0249) 	  while(temp1!=0)
(0250)  	  		{
(0251) 			temp=temp1; 
    03E2 2EA6      MOV	R10,R22
(0252) 			temp&=0x0f;
    03E3 2D8A      MOV	R24,R10
    03E4 708F      ANDI	R24,0xF
    03E5 2EA8      MOV	R10,R24
(0253) 			  //PA口为音乐灯
(0254) 			  if(temp==1 || temp==2 || temp==3 || temp==4){PORTA = 0xfe;}
    03E6 3081      CPI	R24,1
    03E7 F031      BEQ	0x03EE
    03E8 3082      CPI	R24,2
    03E9 F021      BEQ	0x03EE
    03EA 3083      CPI	R24,3
    03EB F011      BEQ	0x03EE
    03EC 3084      CPI	R24,4
    03ED F411      BNE	0x03F0
    03EE EF8E      LDI	R24,0xFE
    03EF BB8B      OUT	0x1B,R24
(0255)               if(temp==5 || temp==6){PORTA = 0xfc;}
    03F0 2D8A      MOV	R24,R10
    03F1 3085      CPI	R24,5
    03F2 F011      BEQ	0x03F5
    03F3 3086      CPI	R24,6
    03F4 F411      BNE	0x03F7
    03F5 EF8C      LDI	R24,0xFC
    03F6 BB8B      OUT	0x1B,R24
(0256)               if(temp==7 || temp==8 ){PORTA = 0xf8;}
    03F7 2D8A      MOV	R24,R10
    03F8 3087      CPI	R24,7
    03F9 F011      BEQ	0x03FC
    03FA 3088      CPI	R24,0x8
    03FB F411      BNE	0x03FE
    03FC EF88      LDI	R24,0xF8
    03FD BB8B      OUT	0x1B,R24
(0257)               if(temp==9){PORTA = 0xf0;}
    03FE 2D8A      MOV	R24,R10
    03FF 3089      CPI	R24,0x9
    0400 F411      BNE	0x0403
    0401 EF80      LDI	R24,0xF0
    0402 BB8B      OUT	0x1B,R24
(0258)               if(temp==10){PORTA = 0xe0;}
    0403 2D8A      MOV	R24,R10
    0404 308A      CPI	R24,0xA
    0405 F411      BNE	0x0408
    0406 EE80      LDI	R24,0xE0
    0407 BB8B      OUT	0x1B,R24
(0259)               if(temp==11){PORTA = 0xc0;}
    0408 2D8A      MOV	R24,R10
    0409 308B      CPI	R24,0xB
    040A F411      BNE	0x040D
    040B EC80      LDI	R24,0xC0
    040C BB8B      OUT	0x1B,R24
(0260) 			  if(temp==12){PORTA = 0x80;}
    040D 2D8A      MOV	R24,R10
    040E 308C      CPI	R24,0xC
    040F F411      BNE	0x0412
    0410 E880      LDI	R24,0x80
    0411 BB8B      OUT	0x1B,R24
(0261)               if(temp==13||temp==14 || temp==15){PORTA = 0x00;}
    0412 2D8A      MOV	R24,R10
    0413 308D      CPI	R24,0xD
    0414 F021      BEQ	0x0419
    0415 308E      CPI	R24,0xE
    0416 F011      BEQ	0x0419
    0417 308F      CPI	R24,0xF
    0418 F411      BNE	0x041B
    0419 2422      CLR	R2
    041A BA2B      OUT	0x1B,R2
(0262) 
(0263) 			if(temp!=0)
    041B 20AA      TST	R10
    041C F099      BEQ	0x0430
(0264) 			  {
(0265) 			   TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
    041D B789      IN	R24,0x39
    041E 6880      ORI	R24,0x80
    041F BF89      OUT	0x39,R24
(0266) 			   temp--;			   
    0420 94AA      DEC	R10
(0267)         	   toneconst=TONETABLE[temp];
    0421 E18A      LDI	R24,0x1A
    0422 E090      LDI	R25,0
    0423 2D0A      MOV	R16,R10
    0424 2711      CLR	R17
    0425 0F00      LSL	R16
    0426 1F11      ROL	R17
    0427 0F08      ADD	R16,R24
    0428 1F19      ADC	R17,R25
    0429 D14C      RCALL	lpm16
    042A 931000DC  STS	_toneconst+1,R17
    042C 930000DB  STS	_toneconst,R16
(0268) 			   TCNT1=toneconst;
    042E BD1D      OUT	0x2D,R17
    042F BD0C      OUT	0x2C,R16
(0269)  			  }
(0270) 			temp=temp1;
    0430 2EA6      MOV	R10,R22
(0271) 			temp>>=4;
    0431 2D8A      MOV	R24,R10
    0432 9582      SWAP	R24
    0433 708F      ANDI	R24,0xF
(0272) 			temp&=0x0f;
    0434 708F      ANDI	R24,0xF
    0435 2EA8      MOV	R10,R24
(0273) 			delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
    0436 2F28      MOV	R18,R24
    0437 2733      CLR	R19
    0438 E801      LDI	R16,0x81
    0439 E010      LDI	R17,0
    043A D149      RCALL	mpy16s
    043B DC54      RCALL	_delay_ms
(0274) 			TIMSK&=~(1<<TOIE1);
    043C B789      IN	R24,0x39
    043D 778F      ANDI	R24,0x7F
    043E BF89      OUT	0x39,R24
(0275) 			sound_add++;
    043F 5F4F      SUBI	R20,0xFF
    0440 4F5F      SBCI	R21,0xFF
(0276) 			temp1=EEPROMread((int)&sound[sound_add]); 
    0441 E081      LDI	R24,1
    0442 E090      LDI	R25,0
    0443 2F04      MOV	R16,R20
    0444 2F15      MOV	R17,R21
    0445 0F08      ADD	R16,R24
    0446 1F19      ADC	R17,R25
    0447 D150      RCALL	_EEPROMread
    0448 2F60      MOV	R22,R16
    0449 2366      TST	R22
    044A F009      BEQ	0x044C
    044B CF96      RJMP	0x03E2
(0277) 			}
(0278) 		delay_ms(1000);	                                         	
    044C EE08      LDI	R16,0xE8
    044D E013      LDI	R17,3
    044E DC41      RCALL	_delay_ms
(0279) 	 }	 	 	 	 
    044F D107      RCALL	pop_gset3
    0450 9508      RET
(0280) 	  
(0281) //PORTD = 0xA0;//前行//1010 0000        //PORTA = 0xC3;//1100,0011
(0282) //PORTD = 0x90;//左转//1001 0000快速左转//PORTA = 0x33;//0011,0011
(0283) //PORTD = 0x80;//左转//1000 0000慢速左转//PORTA = 0xF3;//1111,0011
(0284) //PORTD = 0x60;//右转//0110 0000快速右转//PORTA = 0xCC;//1100,1100
(0285) //PORTD = 0x20;//右转//0010 0000慢速右转//PORTA = 0xCF;//1100,1111
(0286) //PORTD = 0x50;//后退//0101 0000        //PORTA = 0x3C;//0011,1100
(0287) 
(0288) //PC3声控启动
(0289) //  用PD7~PD4来作为电机驱动端
(0290) 
(0291) #define xuanya_delayms  300
(0292)  
(0293) unsigned char pa,pb,pc,pd;
(0294) 
(0295) void xuanya_car(void)
(0296) {
(0297)  PORTA = 0x1f;
_xuanya_car:
    0451 E18F      LDI	R24,0x1F
    0452 BB8B      OUT	0x1B,R24
(0298) 
(0299)  work_status = 0x20;//置对应的工作状态标志
    0453 E280      LDI	R24,0x20
    0454 938000E6  STS	_work_status,R24
(0300)  
(0301)  mic_startup();       //等待声控启动
    0456 DCD1      RCALL	_mic_startup
    0457 C05E      RJMP	0x04B6
(0302)  
(0303)  while(1)
(0304)    {//左(pc7)  中(pc6)  右(pc5)
(0305)     
(0306) 	sw_touch();          //检测轻触开关
    0458 DC67      RCALL	_sw_touch
(0307) 	
(0308) 	pc = PINC & 0x10;
    0459 B383      IN	R24,0x13
    045A 7180      ANDI	R24,0x10
    045B 938000D9  STS	_pc,R24
(0309) 	if(pc == 0x00)
    045D 2388      TST	R24
    045E F441      BNE	0x0467
(0310) 	  {//后退//左转
(0311) 	   backward();//后退
    045F DC52      RCALL	_backward
(0312) 	   delay_ms(xuanya_delayms);
    0460 E20C      LDI	R16,0x2C
    0461 E011      LDI	R17,1
    0462 DC2D      RCALL	_delay_ms
(0313) 	   turn_right();//左转
    0463 DC3A      RCALL	_turn_right
(0314) 	   delay_ms(xuanya_delayms/2);
    0464 E906      LDI	R16,0x96
    0465 E010      LDI	R17,0
    0466 DC29      RCALL	_delay_ms
(0315) 	  }
(0316)     pc = PINC & 0xE0;
    0467 B383      IN	R24,0x13
    0468 7E80      ANDI	R24,0xE0
    0469 938000D9  STS	_pc,R24
(0317)     if(pc == 0x40)
    046B 3480      CPI	R24,0x40
    046C F441      BNE	0x0475
(0318) 	  {//后退//左转
(0319) 	   backward();//后退
    046D DC44      RCALL	_backward
(0320) 	   delay_ms(xuanya_delayms);
    046E E20C      LDI	R16,0x2C
    046F E011      LDI	R17,1
    0470 DC1F      RCALL	_delay_ms
(0321) 	   turn_right();//左转
    0471 DC2C      RCALL	_turn_right
(0322) 	   delay_ms(xuanya_delayms/2);
    0472 E906      LDI	R16,0x96
    0473 E010      LDI	R17,0
    0474 DC1B      RCALL	_delay_ms
(0323) 	  }
(0324) 	if(pc == 0x80)
    0475 918000D9  LDS	R24,_pc
    0477 3880      CPI	R24,0x80
    0478 F441      BNE	0x0481
(0325) 	  {//后退//左转
(0326) 	   backward();//后退
    0479 DC38      RCALL	_backward
(0327) 	   delay_ms(xuanya_delayms);
    047A E20C      LDI	R16,0x2C
    047B E011      LDI	R17,1
    047C DC13      RCALL	_delay_ms
(0328) 	   turn_right();//左转
    047D DC20      RCALL	_turn_right
(0329) 	   delay_ms(xuanya_delayms/2);
    047E E906      LDI	R16,0x96
    047F E010      LDI	R17,0
    0480 DC0F      RCALL	_delay_ms
(0330) 	  }
(0331) 	if(pc == 0x20)
    0481 918000D9  LDS	R24,_pc
    0483 3280      CPI	R24,0x20
    0484 F441      BNE	0x048D
(0332) 	  {//后退//左转
(0333) 	   backward();//后退
    0485 DC2C      RCALL	_backward
(0334) 	   delay_ms(xuanya_delayms);
    0486 E20C      LDI	R16,0x2C
    0487 E011      LDI	R17,1
    0488 DC07      RCALL	_delay_ms
(0335) 	   turn_right();//左转
    0489 DC14      RCALL	_turn_right
(0336) 	   delay_ms(xuanya_delayms/2);
    048A E906      LDI	R16,0x96
    048B E010      LDI	R17,0
    048C DC03      RCALL	_delay_ms
(0337) 	  }
(0338) 	if(pc == 0xc0)
    048D 918000D9  LDS	R24,_pc
    048F 3C80      CPI	R24,0xC0
    0490 F441      BNE	0x0499
(0339) 	  {//后退//左转
(0340) 	   backward();//后退
    0491 DC20      RCALL	_backward
(0341) 	   delay_ms(xuanya_delayms);
    0492 E20C      LDI	R16,0x2C
    0493 E011      LDI	R17,1
    0494 DBFB      RCALL	_delay_ms
(0342) 	   turn_right();//左转
    0495 DC08      RCALL	_turn_right
(0343) 	   delay_ms(xuanya_delayms/2);
    0496 E906      LDI	R16,0x96
    0497 E010      LDI	R17,0
    0498 DBF7      RCALL	_delay_ms
(0344) 	  }
(0345) 	if(pc == 0x60)
    0499 918000D9  LDS	R24,_pc
    049B 3680      CPI	R24,0x60
    049C F441      BNE	0x04A5
(0346) 	  {//后退//左转
(0347) 	   backward();//后退
    049D DC14      RCALL	_backward
(0348) 	   delay_ms(xuanya_delayms);
    049E E20C      LDI	R16,0x2C
    049F E011      LDI	R17,1
    04A0 DBEF      RCALL	_delay_ms
(0349) 	   turn_right();//左转
    04A1 DBFC      RCALL	_turn_right
(0350) 	   delay_ms(xuanya_delayms/2);
    04A2 E906      LDI	R16,0x96
    04A3 E010      LDI	R17,0
    04A4 DBEB      RCALL	_delay_ms
(0351) 	  }
(0352) 	if(pc == 0xE0)
    04A5 918000D9  LDS	R24,_pc
    04A7 3E80      CPI	R24,0xE0
    04A8 F461      BNE	0x04B5
(0353) 	  {
(0354)        //刹车 //led灯为流水灯
(0355)        stop();
    04A9 DC12      RCALL	_stop
(0356)        PORTA = 0x3C;
    04AA E38C      LDI	R24,0x3C
    04AB BB8B      OUT	0x1B,R24
(0357)        delay_ms(xuanya_delayms);
    04AC E20C      LDI	R16,0x2C
    04AD E011      LDI	R17,1
    04AE DBE1      RCALL	_delay_ms
(0358) 	   PORTA = 0xC3;
    04AF EC83      LDI	R24,0xC3
    04B0 BB8B      OUT	0x1B,R24
(0359)        delay_ms(xuanya_delayms);
    04B1 E20C      LDI	R16,0x2C
    04B2 E011      LDI	R17,1
    04B3 DBDC      RCALL	_delay_ms
(0360) 	  } 
    04B4 C001      RJMP	0x04B6
(0361) 	else
(0362) 	  {
(0363) 	    forward();//前行
    04B5 DC01      RCALL	_forward
    04B6 CFA1      RJMP	0x0458
(0364) 	  }
(0365)    }
(0366) }
    04B7 9508      RET
_remote_car:
  remote_in            --> R22
    04B8 D0B7      RCALL	push_gset2
(0367) 

⌨️ 快捷键说明

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