?? diy0206_4.s
字號:
ldi R30,0
cpc R21,R30
breq L151
rjmp L146
L154:
cpi R20,64
ldi R30,0
cpc R21,R30
breq L150
cpi R20,64
ldi R30,0
cpc R21,R30
brlt L146
L155:
cpi R20,128
ldi R30,0
cpc R21,R30
breq L152
rjmp L146
X15:
.dbline 356
; {//檢測遙控器是否有鍵按下
L149:
.dbline 358
; case 0x20: // < A >
; sound_add=0;
clr R2
clr R3
sts _sound_add+1,R3
sts _sound_add,R2
.dbline 359
; sound_1 = 0x11;
ldi R24,17
sts _sound_1,R24
.dbline 360
; break;
rjmp L147
L150:
.dbline 362
; case 0x40: // < B >
; sound_add=0;
clr R2
clr R3
sts _sound_add+1,R3
sts _sound_add,R2
.dbline 363
; sound_1 = 0x22;
ldi R24,34
sts _sound_1,R24
.dbline 364
; break;
rjmp L147
L151:
.dbline 366
; case 0x10: // < C >
; sound_add=0;
clr R2
clr R3
sts _sound_add+1,R3
sts _sound_add,R2
.dbline 367
; sound_1 = 0x33;
ldi R24,51
sts _sound_1,R24
.dbline 368
; break;
rjmp L147
L152:
.dbline 370
; case 0x80: // < 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;
L146:
L147:
.dbline 374
; }
; if(sound_1 == 0x11)
lds R24,_sound_1
cpi R24,17
brne L156
.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
; }
L156:
.dbline 378
; if(sound_1 == 0x22)
lds R24,_sound_1
cpi R24,34
brne L158
.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
; }
L158:
.dbline 382
; if(sound_1 == 0x33)
lds R24,_sound_1
cpi R24,51
brne L160
.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
; }
L160:
.dbline 386
; if(sound_1 == 0x44)
lds R24,_sound_1
cpi R24,68
brne L162
.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
; }
L162:
.dbline 390
; if(sound_1 == 0x88)
lds R24,_sound_1
cpi R24,136
brne L164
.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
; }
L164:
.dbline 394
; }
L144:
.dbline 395
L142:
.dbline -2
.dbline 396
; }
; }
L72:
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
; }
L166:
.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\diy02-6\8515\diy0206_4\diy0206_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,音樂數(shù)據(jù)存放
; //于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
sts 76+1,R3
sts 76,R2
.dbline 423
; PORTC^=1;
ldi R24,1
in R2,0x15
eor R2,R24
out 0x15,R2
.dbline -2
.dbline 424
; }
L167:
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 L170
L169:
.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 L172
.dbline 436
; {
.dbline 437
; TIMSK|=(1<<TOIE1);//根據(jù)SOUNDTABLE中數(shù)據(jù)的低四位選擇音調(diào)頻率
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;
mov R2,R16
mov R3,R17
sts 76+1,R3
sts 76,R2
.dbline 441
; }
L172:
.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
L170:
.dbline 431
lds R2,_temp1
tst R2
breq X25
rjmp L169
X25:
.dbline 450
; temp=temp1;
; temp>>=4;
; temp&=0x0f;
; delay_ms(temp*129);//根據(jù)SOUNDTABLE中數(shù)據(jù)的高四位*5后,為音調(diào)持續(xù)時間
; TIMSK&=~(1<<TOIE1);
; sound_add++;
; temp1=EEPROMread((int)&sound[sound_add]);
; }
; delay_ms(1000);
ldi R16,1000
ldi R17,3
.dbline -2
.dbline 451
; }
L168:
.dbline 0 ; func end
rjmp _delay_ms
.dbend
.dbfunc e xuanya_car _xuanya_car fV
.even
_xuanya_car::
.dbline -1
.dbline 465
;
; // 電機驅(qū)動信號 led燈指示電機狀態(tài)
; //PORTD = 0xA0;//前行 //1010 0000//PORTA = 0xC3;//1100,0011
; //PORTD = 0x60;//快速左轉(zhuǎn)//0110 0000//PORTA = 0x33;//0011,0011
; //PORTD = 0x20;//慢速左轉(zhuǎn)//0010 0000//PORTA = 0xF3;//1111,0011
; //PORTD = 0x90;//快速右轉(zhuǎn)//1001 0000//PORTA = 0xCC;//1100,1100
; //PORTD = 0x80;//慢速右轉(zhuǎn)//1000 0000//PORTA = 0xCF;//1100,1111
; //PORTD = 0x50;//后退 //0101 0000//PORTA = 0x3C;//0011,1100
;
; //PB2聲控啟動
; // 用PD7~PD4來作為電機驅(qū)動端
;
; void xuanya_car(void)
; {
.dbline 466
; port_init(); //PA,PB,PC,PD 初始化
rcall _port_init
.dbline 467
; PORTA = 0xa5;//1010,0101
ldi R24,165
out 0x1b,R24
.dbline 468
; delay_ms(1000);
ldi R16,1000
ldi R17,3
rcall _delay_ms
.dbline 469
; work_status = 0x20;//置對應(yīng)的工作狀態(tài)標(biāo)志
ldi R24,32
sts _work_status,R24
.dbline 472
;
;
; gzsl=0x88;timers=0;t0_times=0;
ldi R24,136
sts _gzsl,R24
.dbline 472
clr R2
sts _timers,R2
.dbline 472
sts _t0_times,R2
.dbline 473
; CLI(); //disable all interrupts
cli
.dbline 474
; timer0_init();
rcall _timer0_init
.dbline 476
;
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 477
; GIMSK = 0x00;
out 0x3b,R2
.dbline 478
; TIMSK|=(1<<TOIE0);
in R24,0x39
ori R24,2
out 0x39,R24
.dbline 479
; SEI(); //re-enable interrupts
sei
.dbline 481
;
; mic_startup();//等待聲控啟動函數(shù)
rcall _mic_startup
.dbline 483
;
; gzsl=0x44;t0_times=0;
ldi R24,68
sts _gzsl,R24
.dbline 483
clr R2
sts _t0_times,R2
.dbline 484
; TCCR1A = 0x00;
out 0x2f,R2
.dbline 485
; TCCR1B =(1<<CS11);//8分頻
ldi R24,2
out 0x2e,R24
L175:
.dbline 487
; xuanya_car_rst:
; temp=temp1 = 0;
clr R2
sts _temp1,R2
sts _temp,R2
.dbline 488
; sound_add = 0;
clr R3
sts _sound_add+1,R3
sts _sound_add,R2
rjmp L177
L176:
.dbline 490
; while(temp1!=0)
; {
.dbline 491
; temp=temp1;
lds R2,_temp1
sts _temp,R2
.dbline 492
; temp&=0x0f;
mov R24,R2
andi R24,15
sts _temp,R24
.dbline 493
; if(temp!=0)
mov R2,R24
tst R24
breq L179
.dbline 494
; {
.dbline 495
; TIMSK|=(1<<TOIE1);//根據(jù)SOUNDTABLE中數(shù)據(jù)的低四位選擇音調(diào)頻率
in R24,0x39
ori R24,128
out 0x39,R24
.dbline 496
; temp--;
mov R24,R2
subi R24,1
sts _temp,R24
.dbline 497
; 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 498
; TCNT1=toneconst;
mov R2,R16
mov R3,R17
sts 76+1,R3
sts 76,R2
.dbline 499
; }
L179:
.dbline 500
lds R2,_temp1
sts _temp,R2
.dbline 501
mov R24,R2
swap R24
andi R24,#0x0F
sts _temp,R24
.dbline 502
andi R24,15
sts _temp,R24
.dbline 503
mov R18,R24
clr R19
ldi R16,129
ldi R17,0
rcall mpy16s
rcall _delay_ms
.dbline 504
in R24,0x39
andi R24,127
out 0x39,R24
.dbline 505
lds R24,_sound_add
lds R25,_sound_add+1
adiw R24,1
sts _sound_add+1,R25
sts _sound_add,R24
.dbline 506
L177:
.dbline 489
lds R2,_temp1
tst R2
breq X27
rjmp L176
X27:
.dbline 507
rjmp L175
X26:
.dbline -2
L174:
.dbline 0 ; func end
ret
.dbend
.dbfunc e remote_car _remote_car fV
.even
_remote_car::
.dbline -1
.dbline 511
; temp=temp1;
; temp>>=4;
; temp&=0x0f;
; delay_ms(temp*129);//根據(jù)SOUNDTABLE中數(shù)據(jù)的高四位*5后,為音調(diào)持續(xù)時間
; TIMSK&=~(1<<TOIE1);
; sound_add++;
; }
; goto xuanya_car_rst;
; }
;
; void remote_car()
; {//遙控車程序
.dbline 513
;
; port_init();//調(diào)用端口初始化函數(shù)
rcall _port_init
.dbline 515
;
; work_status = 0x60;//置對應(yīng)的工作狀態(tài)標(biāo)志
ldi R24,96
sts _work_status,R24
L182:
.dbline 518
;
; remote_rst:
; PORTA = 0x0F;
ldi R24,15
out 0x1b,R24
.dbline 519
; delay_ms(1000);
ldi R16,1000
ldi R17,3
rcall _delay_ms
.dbline 521
;
; gzsl=0x88;timers=0;t0_times=0;
ldi R24,136
sts _gzsl,R24
.dbline 521
clr R2
sts _timers,R2
.dbline 521
sts _t0_times,R2
.dbline 522
; CLI(); //disable all interrupts
cli
.dbline 523
; timer0_init();
rcall _timer0_init
.dbline 525
;
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 526
; GIMSK = 0x00;
out 0x3b,R2
.dbline 527
; TIMSK|=(1<<TOIE0);
in R24,0x39
ori R24,2
out 0x39,R24
.dbline 528
; SEI(); //re-enable interrupts
sei
.dbline 530
;
; mic_startup();//等待聲控啟動函數(shù)
rcall _mic_startup
.dbline 532
;
; gzsl=0x33;t0_times=0;
ldi R24,51
sts _gzsl,R24
.dbline 532
clr R2
sts _t0_times,R2
.dbline 533
; TCCR1A = 0x00;
out 0x2f,R2
.dbline 534
; TCCR1B =(1<<CS11);//8分頻
ldi R24,2
out 0x2e,R24
L183:
.dbline 536
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -