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

📄 sl3010_4.s

📁 单片机开发资料光盘-双龙-686M.zip
💻 S
📖 第 1 页 / 共 5 页
字号:
	.dbline 368
;       	    break;
	rjmp L132
L137:
	.dbline 370
;           case 0x01:  // < D >
; 			  sound_add=0;
	clr R2
	clr R3
	sts _sound_add+1,R3
	sts _sound_add,R2
	.dbline 371
; 			  sound_1 = 0x44;
	ldi R24,68
	sts _sound_1,R24
	.dbline 372
;       	    break;
L131:
L132:
	.dbline 374
;       	 }
;       if(sound_1 == 0x11)
	lds R24,_sound_1
	cpi R24,17
	brne L138
	.dbline 375
; 	    {
	.dbline 376
; 		 temp1 = music_11[sound_add];
	ldi R24,<_music_11
	ldi R25,>_music_11
	lds R2,_sound_add
	lds R3,_sound_add+1
	add R2,R24
	adc R3,R25
	mov R30,R2
	mov R31,R3
	lpm
	sts _temp1,R0
	.dbline 377
; 		}
L138:
	.dbline 378
;       if(sound_1 == 0x22)
	lds R24,_sound_1
	cpi R24,34
	brne L140
	.dbline 379
; 	    {
	.dbline 380
; 		 temp1 = music_22[sound_add];
	ldi R24,<_music_22
	ldi R25,>_music_22
	lds R2,_sound_add
	lds R3,_sound_add+1
	add R2,R24
	adc R3,R25
	mov R30,R2
	mov R31,R3
	lpm
	sts _temp1,R0
	.dbline 381
; 		}
L140:
	.dbline 382
;       if(sound_1 == 0x33)
	lds R24,_sound_1
	cpi R24,51
	brne L142
	.dbline 383
; 	    {
	.dbline 384
; 		 temp1 = music_33[sound_add];
	ldi R24,<_music_33
	ldi R25,>_music_33
	lds R2,_sound_add
	lds R3,_sound_add+1
	add R2,R24
	adc R3,R25
	mov R30,R2
	mov R31,R3
	lpm
	sts _temp1,R0
	.dbline 385
; 		}
L142:
	.dbline 386
;       if(sound_1 == 0x44)
	lds R24,_sound_1
	cpi R24,68
	brne L144
	.dbline 387
; 	    {
	.dbline 388
; 		 temp1 = music_44[sound_add];
	ldi R24,<_music_44
	ldi R25,>_music_44
	lds R2,_sound_add
	lds R3,_sound_add+1
	add R2,R24
	adc R3,R25
	mov R30,R2
	mov R31,R3
	lpm
	sts _temp1,R0
	.dbline 389
; 		}
L144:
	.dbline 390
;       if(sound_1 == 0x88)
	lds R24,_sound_1
	cpi R24,136
	brne L146
	.dbline 391
; 	    {
	.dbline 392
; 		 temp1=EEPROMread((int)&sound[sound_add]);
	ldi R24,<_sound
	ldi R25,>_sound
	lds R16,_sound_add
	lds R17,_sound_add+1
	add R16,R24
	adc R17,R25
	rcall _EEPROMread
	sts _temp1,R16
	.dbline 393
; 		}
L146:
	.dbline 394
;       }
L129:
	.dbline 395
L127:
	.dbline -2
	.dbline 396
;    }
; }
L65:
	rcall pop_gset1
	rcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e stop_timer0 _stop_timer0 fV
	.even
_stop_timer0::
	.dbline -1
	.dbline 399
; 
; void stop_timer0()
; {
	.dbline 400
; 	CLI();
	cli
	.dbline 401
; 	TCCR0 = 0x00;//停止timer0
	clr R2
	out 0x33,R2
	.dbline 402
; 	MCUCR = 0x00;
	out 0x35,R2
	.dbline 403
;     GIMSK = 0x00;
	out 0x3b,R2
	.dbline 404
;     TIMSK = 0x00;
	out 0x39,R2
	.dbline 405
;     SEI();
	sei
	.dbline -2
	.dbline 406
; }
L148:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 12
	rjmp _timer1_ovf_isr
	.area text(rom, con, rel)
	.dbfile E:\icc\iccavr\sl3010\sl3010_4\sl3010_4.c
	.dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
	.even
_timer1_ovf_isr::
	st -y,R2
	st -y,R3
	st -y,R24
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 421
; 
; /*******************************************/
; /*              电子音乐演示程序           */
; /*******************************************/
; //使用说明:音乐输出端口:PORTC.0,音乐数据存放
; //于AT90S8515 的EEPROM存贮器中。
; // 可以用并口下载软件写入新的音乐文件
; 
; //声控起动音乐机器人程序,未起动时,PA口的8 LED 呈广告灯效果(霓虹灯)
; //声控起动后,机器人开始演奏音乐
; //按遥控器上不同的键后可改变机器人演奏的乐曲。
; 
; #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
; void timer1_ovf_isr(void)
; 	 {
	.dbline 422
; 	  TCNT1=toneconst;
	lds R2,_toneconst
	lds R3,_toneconst+1
	out 0x2d,R3
	out 0x2c,R2
	.dbline 423
; 	  PORTC^=1;
	ldi R24,1
	in R2,0x15
	eor R2,R24
	out 0x15,R2
	.dbline -2
	.dbline 424
; 	 }	 	 
L149:
	ld R2,y+
	out 0x3f,R2
	ld R24,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e music_car _music_car fV
	.even
_music_car::
	.dbline -1
	.dbline 427
; 
; void music_car(void)
;  	 {
	.dbline 428
; 	  TCCR1A = 0x00;
	clr R2
	out 0x2f,R2
	.dbline 429
; 	  TCCR1B =(1<<CS11);//8分频
	ldi R24,2
	out 0x2e,R24
	.dbline 430
; 	  temp1=EEPROMread((int)&sound[sound_add]);
	ldi R24,<_sound
	ldi R25,>_sound
	lds R16,_sound_add
	lds R17,_sound_add+1
	add R16,R24
	adc R17,R25
	rcall _EEPROMread
	sts _temp1,R16
	rjmp L152
L151:
	.dbline 432
; 	  while(temp1!=0)
;  	  		{
	.dbline 433
; 			temp=temp1; 
	lds R2,_temp1
	sts _temp,R2
	.dbline 434
; 			temp&=0x0f;
	mov R24,R2
	andi R24,15
	sts _temp,R24
	.dbline 435
; 			if(temp!=0)
	mov R2,R24
	tst R24
	breq L154
	.dbline 436
; 			  {
	.dbline 437
; 			   TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
	in R24,0x39
	ori R24,128
	out 0x39,R24
	.dbline 438
; 			   temp--;			   
	mov R24,R2
	subi R24,1
	sts _temp,R24
	.dbline 439
;         	   toneconst=TONETABLE[temp];
	ldi R24,<_TONETABLE
	ldi R25,>_TONETABLE
	lds R16,_temp
	clr R17
	lsl R16
	rol R17
	add R16,R24
	adc R17,R25
	rcall lpm16
	sts _toneconst+1,R17
	sts _toneconst,R16
	.dbline 440
; 			   TCNT1=toneconst;
	out 0x2d,R17
	out 0x2c,R16
	.dbline 441
;  			  }
L154:
	.dbline 442
	lds R2,_temp1
	sts _temp,R2
	.dbline 443
	mov R24,R2
	swap R24
	andi R24,#0x0F
	sts _temp,R24
	.dbline 444
	andi R24,15
	sts _temp,R24
	.dbline 445
	mov R18,R24
	clr R19
	ldi R16,129
	ldi R17,0
	rcall mpy16s
	rcall _delay_ms
	.dbline 446
	in R24,0x39
	andi R24,127
	out 0x39,R24
	.dbline 447
	lds R24,_sound_add
	lds R25,_sound_add+1
	adiw R24,1
	sts _sound_add+1,R25
	sts _sound_add,R24
	.dbline 448
	ldi R24,<_sound
	ldi R25,>_sound
	lds R16,_sound_add
	lds R17,_sound_add+1
	add R16,R24
	adc R17,R25
	rcall _EEPROMread
	sts _temp1,R16
	.dbline 449
L152:
	.dbline 431
	lds R2,_temp1
	tst R2
	breq X19
	rjmp L151
X19:
	.dbline 450
; 			temp=temp1;
; 			temp>>=4;
; 			temp&=0x0f;
; 			delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
; 			TIMSK&=~(1<<TOIE1);
; 			sound_add++;
; 			temp1=EEPROMread((int)&sound[sound_add]); 
; 			}
; 		delay_ms(1000);	                                         	
	ldi R16,1000
	ldi R17,3
	.dbline -2
	.dbline 451
; 	 }	 	 	 	 
L150:
	.dbline 0 ; func end
	rjmp _delay_ms
	.dbend
	.dbfunc e xuanya_car _xuanya_car fV
	.even
_xuanya_car::
	.dbline -1
	.dbline 464
; 	  
; //     电机驱动信号                           led灯指示电机状态 
; //PORTD = 0xA0;//前行//1010 0000        //PORTA = 0xC3;//1100,0011
; //PORTD = 0x90;//左转//1001 0000快速左转//PORTA = 0x33;//0011,0011
; //PORTD = 0x80;//左转//1000 0000慢速左转//PORTA = 0xF3;//1111,0011
; //PORTD = 0x60;//右转//0110 0000快速右转//PORTA = 0xCC;//1100,1100
; //PORTD = 0x20;//右转//0010 0000慢速右转//PORTA = 0xCF;//1100,1111
; //PORTD = 0x50;//后退//0101 0000        //PORTA = 0x3C;//0011,1100
; 
; //PC3声控启动
; //  用PD7~PD4来作为电机驱动端
; void xuanya_car(void)
; {
	.dbline 465
;  port_init();         //PA,PB,PC,PD 初始化
	rcall _port_init
	.dbline 466
;  PORTA = 0xa5;//1010,0101
	ldi R24,165
	out 0x1b,R24
	.dbline 467
;  delay_ms(1000);
	ldi R16,1000
	ldi R17,3
	rcall _delay_ms
	.dbline 468
;  work_status = 0x20;//置对应的工作状态标志
	ldi R24,32
	sts _work_status,R24
	.dbline 471
; 
; 
;   gzsl=0x88;timers=0;t0_times=0;
	ldi R24,136
	sts _gzsl,R24
	.dbline 471
	clr R2
	sts _timers,R2
	.dbline 471
	sts _t0_times,R2
	.dbline 472
;   CLI(); //disable all interrupts
	cli
	.dbline 473
;   timer0_init();
	rcall _timer0_init
	.dbline 475
; 
;   MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 476
;   GIMSK = 0x00;
	out 0x3b,R2
	.dbline 477
;   TIMSK|=(1<<TOIE0);
	in R24,0x39
	ori R24,2
	out 0x39,R24
	.dbline 478
;   SEI(); //re-enable interrupts
	sei
	.dbline 480
;  
;  mic_startup();//等待声控启动函数
	rcall _mic_startup
	.dbline 482
; 
;   	  gzsl=0x44;t0_times=0;
	ldi R24,68
	sts _gzsl,R24
	.dbline 482
	clr R2
	sts _t0_times,R2
	.dbline 483
; 	  TCCR1A = 0x00;
	out 0x2f,R2
	.dbline 484
; 	  TCCR1B =(1<<CS11);//8分频
	ldi R24,2
	out 0x2e,R24
L157:
	.dbline 486
; xuanya_car_rst: 
;     temp=temp1 = 0;
	clr R2
	sts _temp1,R2
	sts _temp,R2
	.dbline 487
;     sound_add = 0;	  
	clr R3
	sts _sound_add+1,R3
	sts _sound_add,R2
	rjmp L159
L158:
	.dbline 489
; 	  while(temp1!=0)
;   	    {
	.dbline 490
; 			temp=temp1; 
	lds R2,_temp1
	sts _temp,R2
	.dbline 491
; 			temp&=0x0f;
	mov R24,R2
	andi R24,15
	sts _temp,R24
	.dbline 492
; 			if(temp!=0)
	mov R2,R24
	tst R24
	breq L161
	.dbline 493
; 			  {
	.dbline 494
; 			   TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
	in R24,0x39
	ori R24,128
	out 0x39,R24
	.dbline 495
; 			   temp--;			   
	mov R24,R2
	subi R24,1
	sts _temp,R24
	.dbline 496
;         	   toneconst=TONETABLE[temp];
	ldi R24,<_TONETABLE
	ldi R25,>_TONETABLE
	lds R16,_temp
	clr R17
	lsl R16
	rol R17
	add R16,R24
	adc R17,R25
	rcall lpm16
	sts _toneconst+1,R17
	sts _toneconst,R16
	.dbline 497
; 			   TCNT1=toneconst;
	out 0x2d,R17
	out 0x2c,R16
	.dbline 498
;  			  }
L161:
	.dbline 499
	lds R2,_temp1
	sts _temp,R2
	.dbline 500
	mov R24,R2
	swap R24
	andi R24,#0x0F
	sts _temp,R24
	.dbline 501
	andi R24,15
	sts _temp,R24
	.dbline 502
	mov R18,R24
	clr R19
	ldi R16,129
	ldi R17,0
	rcall mpy16s
	rcall _delay_ms
	.dbline 503
	in R24,0x39
	andi R24,127
	out 0x39,R24
	.dbline 504
	lds R24,_sound_add
	lds R25,_sound_add+1
	adiw R24,1
	sts _sound_add+1,R25
	sts _sound_add,R24
	.dbline 505
L159:
	.dbline 488
	lds R2,_temp1
	tst R2
	breq X21
	rjmp L158
X21:
	.dbline 506
	rjmp L157
X20:
	.dbline -2
L156:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e remote_car _remote_car fV
	.even
_remote_car::
	.dbline -1
	.dbline 510
; 			temp=temp1;
; 			temp>>=4;
; 			temp&=0x0f;
; 			delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
; 			TIMSK&=~(1<<TOIE1);
; 			sound_add++;
; 		}
; 	goto xuanya_car_rst;
; }
; 
; void remote_car()
; {//遥控车程序
	.dbline 512
;  
;  port_init();//调用端口初始化函数
	rcall _port_init
	.dbline 514
;  
;  work_status = 0x60;//置对应的工作状态标志
	ldi R24,96
	sts _work_status,R24
L164:
	.dbline 517
; 
; remote_rst: 
;  PORTA = 0x0F;
	ldi R24,15
	out 0x1b,R24
	.dbline 518
;  delay_ms(1000);
	ldi R16,1000
	ldi R17,3
	rcall _delay_ms
	.dbline 520
; 
;   gzsl=0x88;timers=0;t0_times=0;
	ldi R24,136
	sts _gzsl,R24
	.dbline 520
	clr R2
	sts _timers,R2
	.dbline 520
	sts _t0_times,R2
	.dbline 521
;   CLI(); //disable all interrupts
	cli
	.dbline 522
;   timer0_init();
	rcall _timer0_init
	.dbline 524
; 
;   MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 525
;   GIMSK = 0x00;
	out 0x3b,R2
	.dbline 526
;   TIMSK|=(1<<TOIE0);
	in R24,0x39
	ori R24,2
	out 0x39,R24
	.dbline 527
;   SEI(); //re-enable interrupts
	sei
	.dbline 529
;  
;  mic_startup();//等待声控启动函数
	rcall _mic_startup
	.dbline 531
; 
;   gzsl=0x33;t0_times=0;
	ldi R24,51
	sts _gzsl,R24
	.dbline 531
	clr R2
	sts _t0_times,R2
	.dbline 532
; 	  TCCR1A = 0x00;
	out 0x2f,R2
	.dbline 533
; 	  TCCR1B =(1<<CS11);//8分频
	ldi R24,2
	out 0x2e,R24
L165:
	.dbline 535
; n01:
;   temp=temp1 = 0;
	clr R2
	sts _temp1,R2
	sts _temp,R2
	.dbline 536
;   sound_add = 0;	  
	clr R3
	sts _sound_add+1,R3
	sts _sound_add,R2
	rjmp L167
L166:
	.dbline 538
; 	  while(temp1!=0)
;   	    {
	.dbline 539
; 			temp=temp1; 
	lds R2,_temp1
	sts _temp,R2
	.dbline 540
; 			temp&=0x0f;
	mov R24,R2
	andi R24,15
	sts _temp,R24
	.dbline 541
; 			if(temp!=0)
	mov R2,R24
	tst R24
	breq L169
	.dbline 542
; 			  {
	.dbline 543
; 			   TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
	in R24,0x39
	ori R24,128
	out 0x39,R24
	.dbline 544
; 			   temp--;			   
	mov R24,R2
	subi R24,1
	sts _temp,R24
	.dbline 545
;         	   toneconst=TONETABLE[temp];
	ldi R24,<_TONETABLE
	ldi R25,>_TONETABLE
	lds R16,_temp
	clr R17
	lsl R16
	rol R17
	add R16,R24
	adc R17,R25
	rcall lpm16
	sts _toneconst+1,R17
	sts _toneconst,R16
	.dbline 546
; 			   TCNT1=toneconst;
	out 0x2d,R17
	out 0x2c,R16
	.dbline 547
;  			  }
L169:
	.dbline 548
	lds R2,_temp1

⌨️ 快捷键说明

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