📄 main.lis
字号:
0380 ; g=g*6/10;
0380 06E0 ldi R16,6
0382 10E0 ldi R17,0
0384 9A01 movw R18,R20
0386 0E940000 xcall empy16s
038A 2AE0 ldi R18,10
038C 30E0 ldi R19,0
038E 0E940000 xcall div16u
0392 A801 movw R20,R16
0394 .dbline 411
0394 ; if (g<=6)
0394 86E0 ldi R24,6
0396 90E0 ldi R25,0
0398 8017 cp R24,R16
039A 9107 cpc R25,R17
039C 18F0 brlo L75
039E .dbline 412
039E ; {g=1;}
039E .dbline 412
039E 41E0 ldi R20,1
03A0 50E0 ldi R21,0
03A2 .dbline 412
03A2 02C0 xjmp L76
03A4 L75:
03A4 .dbline 414
03A4 ; else
03A4 ; {g=g-6;}
03A4 .dbline 414
03A4 4650 subi R20,6
03A6 5040 sbci R21,0
03A8 .dbline 414
03A8 L76:
03A8 .dbline 415
03A8 ; if (g>=600)
03A8 4835 cpi R20,88
03AA E2E0 ldi R30,2
03AC 5E07 cpc R21,R30
03AE 10F0 brlo L77
03B0 .dbline 416
03B0 ; {g=600;}
03B0 .dbline 416
03B0 48E5 ldi R20,600
03B2 52E0 ldi R21,2
03B4 .dbline 416
03B4 L77:
03B4 .dbline 417
03B4 ; if (g<=1)
03B4 81E0 ldi R24,1
03B6 90E0 ldi R25,0
03B8 8417 cp R24,R20
03BA 9507 cpc R25,R21
03BC 10F0 brlo L79
03BE .dbline 418
03BE ; {g=1;}
03BE .dbline 418
03BE 41E0 ldi R20,1
03C0 50E0 ldi R21,0
03C2 .dbline 418
03C2 L79:
03C2 .dbline 419
03C2 ; out_ctr=g;
03C2 50932000 sts _out_ctr+1,R21
03C6 40931F00 sts _out_ctr,R20
03CA .dbline -2
03CA L58:
03CA 6496 adiw R28,20
03CC 0E940000 xcall pop_gset5
03D0 .dbline 0 ; func end
03D0 0895 ret
03D2 .dbsym r l 22 c
03D2 .dbsym r g 20 i
03D2 .dbsym l s 0 A[20:10]i
03D2 .dbsym r j 12 i
03D2 .dbsym r k 10 c
03D2 .dbsym r i 14 c
03D2 .dbend
03D2 .dbfunc e ins _ins fV
03D2 ; a -> R20
03D2 ; t -> R22,R23
03D2 ; b -> R10
03D2 ; count -> R18
03D2 ; item -> R16,R17
.even
03D2 _ins::
03D2 0E940000 xcall push_gset3
03D6 .dbline -1
03D6 .dbline 423
03D6 ; }
03D6 ;
03D6 ; void ins(unsigned int *item,unsigned char count)
03D6 ; {
03D6 .dbline 427
03D6 ; unsigned char a;
03D6 ; unsigned char b;
03D6 ; unsigned int t;
03D6 ; for (a=1;a<count;a++)
03D6 41E0 ldi R20,1
03D8 2BC0 xjmp L85
03DA L82:
03DA .dbline 428
03DA ; {
03DA .dbline 429
03DA ; t=item[a];
03DA 82E0 ldi R24,2
03DC 849F mul R24,R20
03DE F001 movw R30,R0
03E0 E00F add R30,R16
03E2 F11F adc R31,R17
03E4 6081 ldd R22,z+0
03E6 7181 ldd R23,z+1
03E8 .dbline 430
03E8 ; b=a-1;
03E8 842F mov R24,R20
03EA 8150 subi R24,1
03EC A82E mov R10,R24
03EE 0BC0 xjmp L87
03F0 L86:
03F0 .dbline 432
03F0 .dbline 433
03F0 82E0 ldi R24,2
03F2 8A9D mul R24,R10
03F4 1001 movw R2,R0
03F6 200E add R2,R16
03F8 311E adc R3,R17
03FA F101 movw R30,R2
03FC 4080 ldd R4,z+0
03FE 5180 ldd R5,z+1
0400 5382 std z+3,R5
0402 4282 std z+2,R4
0404 .dbline 434
0404 AA94 dec R10
0406 .dbline 435
0406 L87:
0406 .dbline 431
0406 ; while(b>=1&&t<item[b])
0406 8A2D mov R24,R10
0408 8130 cpi R24,1
040A 50F0 brlo L89
040C 82E0 ldi R24,2
040E 8A9D mul R24,R10
0410 F001 movw R30,R0
0412 E00F add R30,R16
0414 F11F adc R31,R17
0416 2080 ldd R2,z+0
0418 3180 ldd R3,z+1
041A 6215 cp R22,R2
041C 7305 cpc R23,R3
041E 40F3 brlo L86
0420 L89:
0420 .dbline 436
0420 82E0 ldi R24,2
0422 8A9D mul R24,R10
0424 F001 movw R30,R0
0426 E00F add R30,R16
0428 F11F adc R31,R17
042A 7383 std z+3,R23
042C 6283 std z+2,R22
042E .dbline 437
042E L83:
042E .dbline 427
042E 4395 inc R20
0430 L85:
0430 .dbline 427
0430 4217 cp R20,R18
0432 08F4 brsh X1
0434 D2CF xjmp L82
0436 X1:
0436 .dbline -2
0436 L81:
0436 0E940000 xcall pop_gset3
043A .dbline 0 ; func end
043A 0895 ret
043C .dbsym r a 20 c
043C .dbsym r t 22 i
043C .dbsym r b 10 c
043C .dbsym r count 18 c
043C .dbsym r item 16 pi
043C .dbend
043C .dbfunc e i_en _i_en fV
.even
043C _i_en::
043C .dbline -1
043C .dbline 444
043C ; {
043C ; item[b+1]=item[b];
043C ; b--;
043C ; }
043C ; item[b+1]=t;
043C ; }
043C ; }
043C ;
043C ; /*
043C ; *电流输出允许函数
043C ; */
043C ; void i_en(void)
043C ; {
043C .dbline 445
043C ; TIMSK |= (1<<OCIE1A);
043C 89B7 in R24,0x39
043E 8061 ori R24,16
0440 89BF out 0x39,R24
0442 .dbline 446
0442 ; PORTC|=(1<<INT);
0442 A99A sbi 0x15,1
0444 .dbline 447
0444 ; DDRC |=(1<<INT);
0444 A19A sbi 0x14,1
0446 .dbline -2
0446 L90:
0446 .dbline 0 ; func end
0446 0895 ret
0448 .dbend
0448 .dbfunc e i_disen _i_disen fV
.even
0448 _i_disen::
0448 .dbline -1
0448 .dbline 454
0448 ; }
0448 ;
0448 ; /*
0448 ; *电流输出禁止函数
0448 ; */
0448 ; void i_disen(void)
0448 ; {
0448 .dbline 455
0448 ; TIMSK &=~(1<<OCIE1A);
0448 89B7 in R24,0x39
044A 8F7E andi R24,239
044C 89BF out 0x39,R24
044E .dbline 456
044E ; delay_ms(100);
044E 04E6 ldi R16,100
0450 10E0 ldi R17,0
0452 0E940000 xcall _delay_ms
0456 .dbline 457
0456 ; PORTC&=~(1<<INT);
0456 A998 cbi 0x15,1
0458 .dbline 458
0458 ; DDRC |=(1<<INT);
0458 A19A sbi 0x14,1
045A .dbline -2
045A L91:
045A .dbline 0 ; func end
045A 0895 ret
045C .dbend
045C .dbfunc e sp_mic _sp_mic fc
045C ; i -> R20
045C ; sudu -> R16,R17
.even
045C _sp_mic::
045C 0E940000 xcall push_gset1
0460 .dbline -1
0460 .dbline 465
0460 ; }
0460 ;
0460 ; /*
0460 ; *根据速度判断细分数函数
0460 ; */
0460 ; unsigned char sp_mic(unsigned int sudu)
0460 ; {
0460 .dbline 467
0460 ; unsigned char i;
0460 ; if (sudu<=410)
0460 8AE9 ldi R24,410
0462 91E0 ldi R25,1
0464 8017 cp R24,R16
0466 9107 cpc R25,R17
0468 A8F0 brlo L93
046A .dbline 468
046A ; {
046A .dbline 469
046A ; if (sudu<=290)
046A 82E2 ldi R24,34
046C 8017 cp R24,R16
046E 9107 cpc R25,R17
0470 78F0 brlo L95
0472 .dbline 470
0472 ; {
0472 .dbline 471
0472 ; if(sudu<=210)
0472 82ED ldi R24,210
0474 90E0 ldi R25,0
0476 8017 cp R24,R16
0478 9107 cpc R25,R17
047A 40F0 brlo L97
047C .dbline 472
047C ; {
047C .dbline 473
047C ; if (sudu<=140)
047C 8CE8 ldi R24,140
047E 8017 cp R24,R16
0480 9107 cpc R25,R17
0482 10F0 brlo L99
0484 .dbline 474
0484 ; {i=16;}
0484 .dbline 474
0484 40E1 ldi R20,16
0486 .dbline 474
0486 07C0 xjmp L94
0488 L99:
0488 .dbline 476
0488 ; else
0488 ; {i=8;}
0488 .dbline 476
0488 48E0 ldi R20,8
048A .dbline 476
048A .dbline 477
048A ; }
048A 05C0 xjmp L94
048C L97:
048C .dbline 479
048C ; else
048C ; {i=4;}
048C .dbline 479
048C 44E0 ldi R20,4
048E .dbline 479
048E .dbline 480
048E ; }
048E 03C0 xjmp L94
0490 L95:
0490 .dbline 482
0490 ; else
0490 ; {i=2;}
0490 .dbline 482
0490
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -