📄 main.lss
字号:
delay_ms(rx_buf[8]);
3646: 80 91 78 00 lds r24, 0x0078
364a: 99 27 eor r25, r25
364c: 0e 94 b3 19 call 0x3366 ; 0x3366 <delay_ms>
delay_ms(10);
3650: 8a e0 ldi r24, 0x0A ; 10
3652: 90 e0 ldi r25, 0x00 ; 0
3654: 0e 94 b3 19 call 0x3366 ; 0x3366 <delay_ms>
spi(rx_buf[13]);
3658: 80 91 7d 00 lds r24, 0x007D
365c: 8f b9 out 0x0f, r24 ; 15
365e: 77 9b sbis 0x0e, 7 ; 14
3660: fe cf rjmp .-4 ; 0x365e <EnterProgmodeIsp+0x46>
3662: 8f b1 in r24, 0x0f ; 15
delay_ms(rx_buf[10]);
3664: 80 91 7a 00 lds r24, 0x007A
3668: 99 27 eor r25, r25
366a: 0e 94 b3 19 call 0x3366 ; 0x3366 <delay_ms>
spi(rx_buf[14]);
366e: 80 91 7e 00 lds r24, 0x007E
3672: 8f b9 out 0x0f, r24 ; 15
3674: 77 9b sbis 0x0e, 7 ; 14
3676: fe cf rjmp .-4 ; 0x3674 <EnterProgmodeIsp+0x5c>
3678: 8f b1 in r24, 0x0f ; 15
delay_ms(rx_buf[10]);
367a: 80 91 7a 00 lds r24, 0x007A
367e: 99 27 eor r25, r25
3680: 0e 94 b3 19 call 0x3366 ; 0x3366 <delay_ms>
tmp=spi(rx_buf[15]);
3684: 80 91 7f 00 lds r24, 0x007F
3688: 8f b9 out 0x0f, r24 ; 15
368a: 77 9b sbis 0x0e, 7 ; 14
368c: fe cf rjmp .-4 ; 0x368a <EnterProgmodeIsp+0x72>
368e: 1f b1 in r17, 0x0f ; 15
delay_ms(rx_buf[10]);
3690: 80 91 7a 00 lds r24, 0x007A
3694: 99 27 eor r25, r25
3696: 0e 94 b3 19 call 0x3366 ; 0x3366 <delay_ms>
spi(rx_buf[16]);
369a: 80 91 80 00 lds r24, 0x0080
369e: 8f b9 out 0x0f, r24 ; 15
36a0: 77 9b sbis 0x0e, 7 ; 14
36a2: fe cf rjmp .-4 ; 0x36a0 <EnterProgmodeIsp+0x88>
36a4: 8f b1 in r24, 0x0f ; 15
if(tmp==0x53)
36a6: 13 35 cpi r17, 0x53 ; 83
36a8: 19 f4 brne .+6 ; 0x36b0 <EnterProgmodeIsp+0x98>
{
tx_buf[6] = STATUS_CMD_OK;
36aa: 10 92 89 01 sts 0x0189, r1
36ae: 03 c0 rjmp .+6 ; 0x36b6 <EnterProgmodeIsp+0x9e>
}
else tx_buf[6] = STATUS_CMD_FAILED;
36b0: 80 ec ldi r24, 0xC0 ; 192
36b2: 80 93 89 01 sts 0x0189, r24
}
if(rx_buf[11]==0x69) //this is 89s51 set reset
36b6: 80 91 7b 00 lds r24, 0x007B
36ba: 89 36 cpi r24, 0x69 ; 105
36bc: c9 f5 brne .+114 ; 0x3730 <EnterProgmodeIsp+0x118>
{
reset_PORT |= _BV(reset); //reset 1
36be: c1 9a sbi 0x18, 1 ; 24
delay_ms(rx_buf[8]);
36c0: 80 91 78 00 lds r24, 0x0078
36c4: 99 27 eor r25, r25
36c6: 0e 94 b3 19 call 0x3366 ; 0x3366 <delay_ms>
delay_ms(10);
36ca: 8a e0 ldi r24, 0x0A ; 10
36cc: 90 e0 ldi r25, 0x00 ; 0
36ce: 0e 94 b3 19 call 0x3366 ; 0x3366 <delay_ms>
spi(rx_buf[13]);
36d2: 80 91 7d 00 lds r24, 0x007D
36d6: 8f b9 out 0x0f, r24 ; 15
36d8: 77 9b sbis 0x0e, 7 ; 14
36da: fe cf rjmp .-4 ; 0x36d8 <EnterProgmodeIsp+0xc0>
36dc: 8f b1 in r24, 0x0f ; 15
delay_ms(rx_buf[10]);
36de: 80 91 7a 00 lds r24, 0x007A
36e2: 99 27 eor r25, r25
36e4: 0e 94 b3 19 call 0x3366 ; 0x3366 <delay_ms>
spi(rx_buf[14]);
36e8: 80 91 7e 00 lds r24, 0x007E
36ec: 8f b9 out 0x0f, r24 ; 15
36ee: 77 9b sbis 0x0e, 7 ; 14
36f0: fe cf rjmp .-4 ; 0x36ee <EnterProgmodeIsp+0xd6>
36f2: 8f b1 in r24, 0x0f ; 15
delay_ms(rx_buf[10]);
36f4: 80 91 7a 00 lds r24, 0x007A
36f8: 99 27 eor r25, r25
36fa: 0e 94 b3 19 call 0x3366 ; 0x3366 <delay_ms>
spi(rx_buf[15]);
36fe: 80 91 7f 00 lds r24, 0x007F
3702: 8f b9 out 0x0f, r24 ; 15
3704: 77 9b sbis 0x0e, 7 ; 14
3706: fe cf rjmp .-4 ; 0x3704 <EnterProgmodeIsp+0xec>
3708: 8f b1 in r24, 0x0f ; 15
delay_ms(rx_buf[10]);
370a: 80 91 7a 00 lds r24, 0x007A
370e: 99 27 eor r25, r25
3710: 0e 94 b3 19 call 0x3366 ; 0x3366 <delay_ms>
tmp=spi(rx_buf[16]);
3714: 80 91 80 00 lds r24, 0x0080
3718: 8f b9 out 0x0f, r24 ; 15
371a: 77 9b sbis 0x0e, 7 ; 14
371c: fe cf rjmp .-4 ; 0x371a <EnterProgmodeIsp+0x102>
371e: 8f b1 in r24, 0x0f ; 15
if(tmp==0x69)
3720: 89 36 cpi r24, 0x69 ; 105
3722: 19 f4 brne .+6 ; 0x372a <EnterProgmodeIsp+0x112>
{
tx_buf[6] = STATUS_CMD_OK;
3724: 10 92 89 01 sts 0x0189, r1
3728: 03 c0 rjmp .+6 ; 0x3730 <EnterProgmodeIsp+0x118>
}
else tx_buf[6] = STATUS_CMD_FAILED;
372a: 80 ec ldi r24, 0xC0 ; 192
372c: 80 93 89 01 sts 0x0189, r24
3730: 1f 91 pop r17
3732: 08 95 ret
00003734 <cmdEnterProgmodeIsp>:
3734: 10 92 85 01 sts 0x0185, r1
3738: 82 e0 ldi r24, 0x02 ; 2
373a: 80 93 86 01 sts 0x0186, r24
373e: 0e 94 0c 1b call 0x3618 ; 0x3618 <EnterProgmodeIsp>
3742: 08 95 ret
00003744 <ReadfusebitIsp>:
}
}
void ReadfusebitIsp(void)
{
3744: cf 93 push r28
3746: df 93 push r29
3748: cd b7 in r28, 0x3d ; 61
374a: de b7 in r29, 0x3e ; 62
374c: 24 97 sbiw r28, 0x04 ; 4
374e: 0f b6 in r0, 0x3f ; 63
3750: f8 94 cli
3752: de bf out 0x3e, r29 ; 62
3754: 0f be out 0x3f, r0 ; 63
3756: cd bf out 0x3d, r28 ; 61
char k[4];
tx_buf[messagesize1]=0; // set message length
3758: 10 92 85 01 sts 0x0185, r1
tx_buf[messagesize0]=4;
375c: 84 e0 ldi r24, 0x04 ; 4
375e: 80 93 86 01 sts 0x0186, r24
tx_buf[6] = STATUS_CMD_OK;
3762: 10 92 89 01 sts 0x0189, r1
k[0]=spi(rx_buf[7]);
3766: 80 91 77 00 lds r24, 0x0077
376a: 8f b9 out 0x0f, r24 ; 15
376c: 77 9b sbis 0x0e, 7 ; 14
376e: fe cf rjmp .-4 ; 0x376c <ReadfusebitIsp+0x28>
3770: 3f b1 in r19, 0x0f ; 15
k[1]=spi(rx_buf[8]);
3772: 80 91 78 00 lds r24, 0x0078
3776: 8f b9 out 0x0f, r24 ; 15
3778: 77 9b sbis 0x0e, 7 ; 14
377a: fe cf rjmp .-4 ; 0x3778 <ReadfusebitIsp+0x34>
377c: 2f b1 in r18, 0x0f ; 15
k[2]=spi(rx_buf[9]);
377e: 80 91 79 00 lds r24, 0x0079
3782: 8f b9 out 0x0f, r24 ; 15
3784: 77 9b sbis 0x0e, 7 ; 14
3786: fe cf rjmp .-4 ; 0x3784 <ReadfusebitIsp+0x40>
3788: 9f b1 in r25, 0x0f ; 15
k[3]=spi(rx_buf[10]);
378a: 80 91 7a 00 lds r24, 0x007A
378e: 8f b9 out 0x0f, r24 ; 15
3790: 77 9b sbis 0x0e, 7 ; 14
3792: fe cf rjmp .-4 ; 0x3790 <ReadfusebitIsp+0x4c>
3794: 8f b1 in r24, 0x0f ; 15
3796: 39 83 std Y+1, r19 ; 0x01
3798: 2a 83 std Y+2, r18 ; 0x02
379a: 9b 83 std Y+3, r25 ; 0x03
379c: 8c 83 std Y+4, r24 ; 0x04
tx_buf[7]=k[rx_buf[6]-1];
379e: 80 91 76 00 lds r24, 0x0076
37a2: fe 01 movw r30, r28
37a4: e8 0f add r30, r24
37a6: f1 1d adc r31, r1
37a8: 80 81 ld r24, Z
37aa: 80 93 8a 01 sts 0x018A, r24
tx_buf[8] = STATUS_CMD_OK;
37ae: 10 92 8b 01 sts 0x018B, r1
37b2: 24 96 adiw r28, 0x04 ; 4
37b4: 0f b6 in r0, 0x3f ; 63
37b6: f8 94 cli
37b8: de bf out 0x3e, r29 ; 62
37ba: 0f be out 0x3f, r0 ; 63
37bc: cd bf out 0x3d, r28 ; 61
37be: df 91 pop r29
37c0: cf 91 pop r28
37c2: 08 95 ret
000037c4 <cmdreadfuseisp>:
37c4: 88 e1 ldi r24, 0x18 ; 24
37c6: 80 93 88 01 sts 0x0188, r24
37ca: 0e 94 a2 1b call 0x3744 ; 0x3744 <ReadfusebitIsp>
37ce: 08 95 ret
000037d0 <cmdreadlockisp>:
37d0: 8a e1 ldi r24, 0x1A ; 26
37d2: 80 93 88 01 sts 0x0188, r24
37d6: 0e 94 a2 1b call 0x3744 ; 0x3744 <ReadfusebitIsp>
37da: 08 95 ret
000037dc <cmdreadosccalisp>:
37dc: 8c e1 ldi r24, 0x1C ; 28
37de: 80 93 88 01 sts 0x0188, r24
37e2: 0e 94 a2 1b call 0x3744 ; 0x3744 <ReadfusebitIsp>
37e6: 08 95 ret
000037e8 <cmdReadSignatureIsp>:
37e8: 8b e1 ldi r24, 0x1B ; 27
37ea: 80 93 88 01 sts 0x0188, r24
37ee: 0e 94 a2 1b call 0x3744 ; 0x3744 <ReadfusebitIsp>
37f2: 08 95 ret
000037f4 <programfuseisp>:
}
void programfuseisp(void)
{
37f4: 10 92 85 01 sts 0x0185, r1
tx_buf[messagesize1]=0; // set message length
tx_buf[messagesize0]=3;
37f8: 83 e0 ldi r24, 0x03 ; 3
37fa: 80 93 86 01 sts 0x0186, r24
spi(rx_buf[6]);
37fe: 80 91 76 00 lds r24, 0x0076
3802: 8f b9 out 0x0f, r24 ; 15
3804: 77 9b sbis 0x0e, 7 ; 14
3806: fe cf rjmp .-4 ; 0x3804 <programfuseisp+0x10>
3808: 8f b1 in r24, 0x0f ; 15
spi(rx_buf[7]);
380a: 80 91 77 00 lds r24, 0x0077
380e: 8f b9 out 0x0f, r24 ; 15
3810: 77 9b sbis 0x0e, 7 ; 14
3812: fe cf rjmp .-4 ; 0x3810 <programfuseisp+0x1c>
3814: 8f b1 in r24, 0x0f ; 15
spi(rx_buf[8]);
3816: 80 91 78 00 lds r24, 0x0078
381a: 8f b9 out 0x0f, r24 ; 15
381c: 77 9b sbis 0x0e, 7 ; 14
381e: fe cf rjmp .-4 ; 0x381c <programfuseisp+0x28>
3820: 8f b1 in r24, 0x0f ; 15
spi(rx_buf[9]);
3822: 80 91 79 00 lds r24, 0x0079
3826: 8f b9 out 0x0f, r24 ; 15
3828: 77 9b sbis 0x0e, 7 ; 14
382a: fe cf rjmp .-4 ; 0x3828 <programfuseisp+0x34>
382c: 8f b1 in r24, 0x0f ; 15
tx_buf[6] = STATUS_CMD_OK;
382e: 10 92 89 01 sts 0x0189, r1
tx_buf[7] = STATUS_CMD_OK;
3832: 10 92 8a 01 sts 0x018A, r1
3836: 08 95 ret
00003838 <cmdprogramfuseisp>:
3838: 0e 94 fa 1b call 0x37f4 ; 0x37f4 <programfuseisp>
383c: 87 e1 ldi r24, 0x17 ; 23
383e: 80 93 88 01 sts 0x0188, r24
3842: 08 95 ret
00003844 <cmdprogramlockisp>:
3844: 0e 94 fa 1b call 0x37f4 ; 0x37f4 <programfuseisp>
3848: 89 e1 ldi r24, 0x19 ; 25
384a: 80 93 88 01 sts 0x0188, r24
384e: 08 95 ret
00003850 <SetParameter>:
}
void SetParameter(void)
{
3850: 80 91 76 00 lds r24, 0x0076
3854: 87 39 cpi r24, 0x97 ; 151
3856: 69 f0 breq .+26 ; 0x3872 <SetParameter+0x22>
switch(rx_buf[6])
3858: 88 39 cpi r24, 0x98 ; 152
385a: 89 f0 breq .+34 ; 0x387e <SetParameter+0x2e>
385c: 86 39 cpi r24, 0x96 ; 150
385e: c9 f4 brne .+50 ; 0x3892 <SetParameter+0x42>
{
case PARAM_OSC_PSCALE:
{
TCCR1B=0x08|(0x03&rx_buf[7]);
3860: 90 91 77 00 lds r25, 0x0077
3864: 89 2f mov r24, r25
3866: 83 70 andi r24, 0x03 ; 3
3868: 88 60 ori r24, 0x08 ; 8
386a: 8e bd out 0x2e, r24 ; 46
pscalefsys=rx_buf[7]; // Set timer operation mode and prescaler
386c: 90 93 61 00 sts 0x0061, r25
3870: 08 95 ret
}
break;
case PARAM_OSC_CMATCH:
{
OCR1AL=rx_buf[7];
3872: 80 91 77 00 lds r24, 0x0077
3876: 8a bd out 0x2a, r24 ; 42
cmatchdef=rx_buf[7]; //Set compare match value
3878: 80 93 6f 00 sts 0x006F, r24
387c: 08 95 ret
}
break;
case PARAM_SCK_DURATION:
{
SPCR=0x50;
387e: 80 e5 ldi r24, 0x50 ; 80
3880: 8d b9 out 0x0d, r24 ; 13
SPCR|=(0x3&rx_buf[7]); //set spi clock
3882: 9d b1 in r25, 0x0d ; 13
3884: 80 91 77 00 lds r24, 0x0077
3888: 83 70 andi r24, 0x03 ; 3
388a: 98 2b or r25, r24
388c: 9d b9 out 0x0d, r25 ; 13
sckdurationdef=(0x3&rx_buf[7]);
388e: 80 93 60 00 sts 0x0060, r24
3892: 08 95 ret
00003894 <cmdSetParameter>:
3894: 1f 93 push r17
3896: 10 92 85 01 sts 0x0185, r1
389a: 12 e0 ldi r17, 0x02 ; 2
389c: 10 93 86 01 sts 0x0186, r17
38a0: 0e 94 28 1c call 0x3850 ; 0x3850 <SetParameter>
38a4: 10 93 88 01 sts 0x0188, r17
38a8: 10 92 89 01 sts 0x0189, r1
38ac: 1f 91 pop r17
38ae: 08 95 ret
000038b0 <main>:
38b0: ba 9a sbi 0x17, 2 ; 23
38b2: 8d 9a sbi 0x11, 5 ; 17
38b4: 1b b8 out 0x0b, r1 ; 11
38b6: 88 e1 ldi r24, 0x18 ; 24
38b8: 8a b9 out 0x0a, r24 ; 10
38ba: 86 e8 ldi r24, 0x86 ; 134
38bc: 80 bd out 0x20, r24 ; 32
38be: 10 bc out 0x20, r1 ; 32
38c0: 83 e0 ldi r24, 0x03 ; 3
38c2: 89 b9 out 0x09, r24 ; 9
38c4: 80 e5 ldi r24, 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -