📄 main.s
字号:
.dbline 414
; else
; {g=g-6;}
.dbline 414
subi R20,6
sbci R21,0
.dbline 414
L76:
.dbline 415
; if (g>=600)
cpi R20,88
ldi R30,2
cpc R21,R30
brlo L77
.dbline 416
; {g=600;}
.dbline 416
ldi R20,600
ldi R21,2
.dbline 416
L77:
.dbline 417
; if (g<=1)
ldi R24,1
ldi R25,0
cp R24,R20
cpc R25,R21
brlo L79
.dbline 418
; {g=1;}
.dbline 418
ldi R20,1
ldi R21,0
.dbline 418
L79:
.dbline 419
; out_ctr=g;
sts _out_ctr+1,R21
sts _out_ctr,R20
.dbline -2
L58:
adiw R28,20
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r l 22 c
.dbsym r g 20 i
.dbsym l s 0 A[20:10]i
.dbsym r j 12 i
.dbsym r k 10 c
.dbsym r i 14 c
.dbend
.dbfunc e ins _ins fV
; a -> R20
; t -> R22,R23
; b -> R10
; count -> R18
; item -> R16,R17
.even
_ins::
xcall push_gset3
.dbline -1
.dbline 423
; }
;
; void ins(unsigned int *item,unsigned char count)
; {
.dbline 427
; unsigned char a;
; unsigned char b;
; unsigned int t;
; for (a=1;a<count;a++)
ldi R20,1
xjmp L85
L82:
.dbline 428
; {
.dbline 429
; t=item[a];
ldi R24,2
mul R24,R20
movw R30,R0
add R30,R16
adc R31,R17
ldd R22,z+0
ldd R23,z+1
.dbline 430
; b=a-1;
mov R24,R20
subi R24,1
mov R10,R24
xjmp L87
L86:
.dbline 432
.dbline 433
ldi R24,2
mul R24,R10
movw R2,R0
add R2,R16
adc R3,R17
movw R30,R2
ldd R4,z+0
ldd R5,z+1
std z+3,R5
std z+2,R4
.dbline 434
dec R10
.dbline 435
L87:
.dbline 431
; while(b>=1&&t<item[b])
mov R24,R10
cpi R24,1
brlo L89
ldi R24,2
mul R24,R10
movw R30,R0
add R30,R16
adc R31,R17
ldd R2,z+0
ldd R3,z+1
cp R22,R2
cpc R23,R3
brlo L86
L89:
.dbline 436
ldi R24,2
mul R24,R10
movw R30,R0
add R30,R16
adc R31,R17
std z+3,R23
std z+2,R22
.dbline 437
L83:
.dbline 427
inc R20
L85:
.dbline 427
cp R20,R18
brsh X1
xjmp L82
X1:
.dbline -2
L81:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r a 20 c
.dbsym r t 22 i
.dbsym r b 10 c
.dbsym r count 18 c
.dbsym r item 16 pi
.dbend
.dbfunc e i_en _i_en fV
.even
_i_en::
.dbline -1
.dbline 444
; {
; item[b+1]=item[b];
; b--;
; }
; item[b+1]=t;
; }
; }
;
; /*
; *电流输出允许函数
; */
; void i_en(void)
; {
.dbline 445
; TIMSK |= (1<<OCIE1A);
in R24,0x39
ori R24,16
out 0x39,R24
.dbline 446
; PORTC|=(1<<INT);
sbi 0x15,1
.dbline 447
; DDRC |=(1<<INT);
sbi 0x14,1
.dbline -2
L90:
.dbline 0 ; func end
ret
.dbend
.dbfunc e i_disen _i_disen fV
.even
_i_disen::
.dbline -1
.dbline 454
; }
;
; /*
; *电流输出禁止函数
; */
; void i_disen(void)
; {
.dbline 455
; TIMSK &=~(1<<OCIE1A);
in R24,0x39
andi R24,239
out 0x39,R24
.dbline 456
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 457
; PORTC&=~(1<<INT);
cbi 0x15,1
.dbline 458
; DDRC |=(1<<INT);
sbi 0x14,1
.dbline -2
L91:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sp_mic _sp_mic fc
; i -> R20
; sudu -> R16,R17
.even
_sp_mic::
xcall push_gset1
.dbline -1
.dbline 465
; }
;
; /*
; *根据速度判断细分数函数
; */
; unsigned char sp_mic(unsigned int sudu)
; {
.dbline 467
; unsigned char i;
; if (sudu<=410)
ldi R24,410
ldi R25,1
cp R24,R16
cpc R25,R17
brlo L93
.dbline 468
; {
.dbline 469
; if (sudu<=290)
ldi R24,34
cp R24,R16
cpc R25,R17
brlo L95
.dbline 470
; {
.dbline 471
; if(sudu<=210)
ldi R24,210
ldi R25,0
cp R24,R16
cpc R25,R17
brlo L97
.dbline 472
; {
.dbline 473
; if (sudu<=140)
ldi R24,140
cp R24,R16
cpc R25,R17
brlo L99
.dbline 474
; {i=16;}
.dbline 474
ldi R20,16
.dbline 474
xjmp L94
L99:
.dbline 476
; else
; {i=8;}
.dbline 476
ldi R20,8
.dbline 476
.dbline 477
; }
xjmp L94
L97:
.dbline 479
; else
; {i=4;}
.dbline 479
ldi R20,4
.dbline 479
.dbline 480
; }
xjmp L94
L95:
.dbline 482
; else
; {i=2;}
.dbline 482
ldi R20,2
.dbline 482
.dbline 483
; }
xjmp L94
L93:
.dbline 485
; else
; {i=1;}
.dbline 485
ldi R20,1
.dbline 485
L94:
.dbline 486
; return i;
mov R16,R20
.dbline -2
L92:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r sudu 16 i
.dbend
.dbfunc e speed_slow _speed_slow fV
; i -> R20
; speed_end -> R22,R23
; speed_start -> R10,R11
.even
_speed_slow::
xcall push_gset3
movw R22,R18
movw R10,R16
.dbline -1
.dbline 494
; }
;
;
; /*
; 缓启动函数
; */
; void speed_slow(unsigned int speed_start,unsigned int speed_end)
; {
.dbline 496
; unsigned char i;
; for (i=0;speed_start<speed_end;i++)
clr R20
xjmp L105
L102:
.dbline 497
.dbline 498
movw R16,R10
xcall _cal_timer1
.dbline 499
movw R24,R10
adiw R24,5
movw R10,R24
.dbline 500
ldi R16,10
ldi R17,0
xcall _delay_ms
.dbline 501
L103:
.dbline 496
inc R20
L105:
.dbline 496
cp R10,R22
cpc R11,R23
brlo L102
.dbline 502
; {
; cal_timer1(speed_start);
; speed_start=speed_start+5;
; delay_ms(slow_time); //缓启动加速延时
; }
; speed_start=speed_end;//abcd
movw R10,R22
.dbline 503
; cal_timer1(speed_start);
movw R16,R10
xcall _cal_timer1
.dbline -2
L101:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r speed_end 22 i
.dbsym r speed_start 10 i
.dbend
.dbfunc e cal_timer1 _cal_timer1 fV
; data -> y+0
; sudu -> R10,R11
.even
_cal_timer1::
xcall push_gset3
movw R10,R16
sbiw R28,4
.dbline -1
.dbline 507
; }
;
; void cal_timer1(unsigned int sudu)
; {
.dbline 509
; unsigned long data;
; micros_nu=sp_mic(sudu);
movw R16,R10
xcall _sp_mic
sts _micros_nu,R16
.dbline 510
; data=1200000/(sudu*micros_nu);
mov R18,R16
clr R19
movw R16,R10
xcall empy16s
movw R2,R16
clr R4
clr R5
ldi R20,128
ldi R21,79
ldi R22,18
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall div32s
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 511
; if (sudu==1)
movw R24,R10
cpi R24,1
ldi R30,0
cpc R25,R30
breq X2
xjmp L107
X2:
.dbline 512
; {
.dbline 513
; data=data/8;
ldi R24,3
ldi R25,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R24
movw R16,R2
movw R18,R4
xcall lsr32
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 514
; TCCR1B |= (1<<CS11);
in R24,0x2e
ori R24,2
out 0x2e,R24
.dbline 515
; TCCR1B &=~(1<<CS10);
in R24,0x2e
andi R24,254
out 0x2e,R24
.dbline 516
; data=data-1;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 517
; }
xjmp L108
L107:
.dbline 519
; else
; {
.dbline 520
; TCCR1B |= (1<<CS10);
in R24,0x2e
ori R24,1
out 0x2e,R24
.dbline 521
; TCCR1B &=~(1<<CS11);
in R24,0x2e
andi R24,253
out 0x2e,R24
.dbline 522
; data=data-1;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 523
; }
L108:
.dbline 524
; time_da=data;
movw R30,R28
ldd R2,z+0
ldd R3,z+1
sts _time_da+1,R3
sts _time_da,R2
.dbline -2
L106:
adiw R28,4
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym l data 0 l
.dbsym r sudu 10 i
.dbend
.dbfunc e out_ctrol _out_ctrol fV
; temp -> <dead>
.even
_out_ctrol::
.dbline -1
.dbline 528
; }
;
; void out_ctrol(void)//abcd
; {
.dbline 530
; unsigned char temp;
; i_disen();
xcall _i_disen
.dbline 531
; state&=0b11110101;
lds R24,_state
andi R24,245
sts _state,R24
.dbline 532
; state2|=0b00100000;
lds R24,_state2
ori R24,32
sts _state2,R24
.dbline -2
L109:
.dbline 0 ; func end
ret
.dbsym l temp 1 c
.dbend
.dbfunc e adc_ctrol _adc_ctrol fV
.even
_adc_ctrol::
.dbline -1
.dbline 536
; }
;
; void adc_ctrol(void)
; {
.dbline 537
; adc_change();
xcall _adc_change
.dbline 538
; speed_slow(speed,out_ctr);
lds R18,_out_ctr
lds R19,_out_ctr+1
lds R16,_speed
lds R17,_speed+1
xcall _speed_slow
.dbline 539
; if (out_ctr==speed)
lds R2,_speed
lds R3,_speed+1
lds R4,_out_ctr
lds R5,_out_ctr+1
cp R4,R2
cpc R5,R3
brne L111
.dbline 540
; {asm("nop");}
.dbline 540
nop
.dbline 540
xjmp L112
L111:
.dbline 542
.dbline 542
lds R2,_out_ctr
lds R3,_out_ctr+1
sts _speed+1,R3
sts _speed,R2
.dbline 542
L112:
.dbline -2
L110:
.dbline 0 ; func end
ret
.dbend
.dbfunc e key_disposal _key_disposal fV
; temp -> <dead>
; j -> <dead>
; i -> <dead>
.even
_key_disposal::
xcall push_gset1
.dbline -1
.dbline 547
; else
; {speed=out_ctr;}
; }
;
; /*键盘处理函数*/
; void key_disposal(void)
; {
.dbline 551
; unsigned char i;
; unsigned char j;
; unsigned int temp;
; switch (key)
lds R20,_key
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
breq L117
cpi R20,2
ldi R30,0
cpc R21,R30
breq L120
xjmp L114
X3:
.dbline 552
; {
L117:
.dbline 556
; /*******************************启停控制*********************************/
; case runstop_nu:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -