📄 main.lis
字号:
035E 30920100 sts _address+1,R3
0362 20920000 sts _address,R2
0366 50920300 sts _address+2+1,R5
036A 40920200 sts _address+2,R4
036E .dbline 271
036E ; address |= ((unsigned long)msg_buffer[4]);
036E 20900C00 lds R2,_msg_buffer+4
0372 3324 clr R3
0374 4424 clr R4
0376 5524 clr R5
0378 80900200 lds R8,_address+2
037C 90900300 lds R9,_address+2+1
0380 60900000 lds R6,_address
0384 70900100 lds R7,_address+1
0388 6228 or R6,R2
038A 7328 or R7,R3
038C 8428 or R8,R4
038E 9528 or R9,R5
0390 70920100 sts _address+1,R7
0394 60920000 sts _address,R6
0398 90920300 sts _address+2+1,R9
039C 80920200 sts _address+2,R8
03A0 .dbline 273
03A0 ;
03A0 ; num_bytes = 2;
03A0 82E0 ldi R24,2
03A2 90E0 ldi R25,0
03A4 9B87 std y+11,R25
03A6 8A87 std y+10,R24
03A8 .dbline 274
03A8 ; msg_buffer[0] = CMD_LOAD_ADDRESS;
03A8 86E0 ldi R24,6
03AA 80930800 sts _msg_buffer,R24
03AE .dbline 275
03AE ; msg_buffer[1] = STATUS_CMD_OK;
03AE 2224 clr R2
03B0 20920900 sts _msg_buffer+1,R2
03B4 .dbline 276
03B4 ; }
03B4 E9C5 rjmp L71
03B6 L70:
03B6 .dbline 280
03B6 ; //////////////////////////////////////
03B6 ; //CMD_ENTER_PROGMODE_ISP
03B6 ; //////////////////////////////////////
03B6 ; else if(cmd==CMD_ENTER_PROGMODE_ISP)
03B6 8C85 ldd R24,y+12
03B8 8031 cpi R24,16
03BA 09F0 breq X9
03BC 70C0 rjmp L77
03BE X9:
03BE .dbline 281
03BE ; {
03BE .dbline 294
03BE ; //msg_buffer[1] //timeout //Command time-out (in ms)
03BE ; //msg_buffer[2] //stabDelay //Delay (in ms) used for pin stabilization
03BE ; //msg_buffer[3] //cmdexeDelay //Delay (in ms) in connection with the EnterProgMode command execution
03BE ; //msg_buffer[4] //synchLoops //Number of synchronization loops
03BE ; //msg_buffer[5] //byteDelay //Delay (in ms) between each byte in the EnterProgMode command.
03BE ; //msg_buffer[6] //pollValue //Poll value: 0x53 for AVR, 0x69 for AT89xx
03BE ; //msg_buffer[7] //pollIndex //Start address, received byte: 0 = no polling, 3 = AVR, 4 = AT89xx
03BE ; //msg_buffer[8] //cmd1 //Command Byte # 1 to be transmitted
03BE ; //msg_buffer[9] //cmd2 //Command Byte # 2 to be transmitted
03BE ; //msg_buffer[10]//cmd3 //Command Byte # 3 to be transmitted
03BE ; //msg_buffer[11]//cmd4 //Command Byte # 4 to be transmitted
03BE ;
03BE ; prgmode=1;
03BE 81E0 ldi R24,1
03C0 80930400 sts _prgmode,R24
03C4 .dbline 296
03C4 ;
03C4 ; spi_enable();
03C4 00D0 rcall _spi_enable
03C6 .dbline 298
03C6 ;
03C6 ; wait_ms(msg_buffer[2]);
03C6 00910A00 lds R16,_msg_buffer+2
03CA 1127 clr R17
03CC 00D0 rcall _wait_ms
03CE .dbline 300
03CE ;
03CE ; LED_GN_ON;
03CE C09A sbi 0x18,0
03D0 .dbline 301
03D0 ; LED_RT_ON;
03D0 C19A sbi 0x18,1
03D2 .dbline 304
03D2 ;
03D2 ; //Try to get connection with the target chip
03D2 ; for(i=0;i<msg_buffer[4];i++)
03D2 CC24 clr R12
03D4 DD24 clr R13
03D6 48C0 rjmp L83
03D8 L80:
03D8 .dbline 305
03D8 ; {
03D8 .dbline 307
03D8 ; //spi_transfer_16(0xAC53);
03D8 ; spi_transfer_8(msg_buffer[8]);
03D8 00911000 lds R16,_msg_buffer+8
03DC 00D0 rcall _spi_transfer_8
03DE .dbline 308
03DE ; wait_ms(msg_buffer[5]);
03DE 00910D00 lds R16,_msg_buffer+5
03E2 1127 clr R17
03E4 00D0 rcall _wait_ms
03E6 .dbline 309
03E6 ; spi_transfer_8(msg_buffer[9]);
03E6 00911100 lds R16,_msg_buffer+9
03EA 00D0 rcall _spi_transfer_8
03EC .dbline 310
03EC ; wait_ms(msg_buffer[5]);
03EC 00910D00 lds R16,_msg_buffer+5
03F0 1127 clr R17
03F2 00D0 rcall _wait_ms
03F4 .dbline 312
03F4 ;
03F4 ; if(msg_buffer[7]==3)
03F4 80910F00 lds R24,_msg_buffer+7
03F8 8330 cpi R24,3
03FA 81F4 brne L89
03FC .dbline 313
03FC ; {
03FC .dbline 314
03FC ; tmp=spi_transfer_8(msg_buffer[10]);
03FC 00911200 lds R16,_msg_buffer+10
0400 00D0 rcall _spi_transfer_8
0402 0D87 std y+13,R16
0404 .dbline 315
0404 ; wait_ms(msg_buffer[5]);
0404 00910D00 lds R16,_msg_buffer+5
0408 1127 clr R17
040A 00D0 rcall _wait_ms
040C .dbline 316
040C ; spi_transfer_8(msg_buffer[11]);
040C 00911300 lds R16,_msg_buffer+11
0410 00D0 rcall _spi_transfer_8
0412 .dbline 317
0412 ; wait_ms(msg_buffer[5]);
0412 00910D00 lds R16,_msg_buffer+5
0416 1127 clr R17
0418 00D0 rcall _wait_ms
041A .dbline 318
041A ; }
041A 0FC0 rjmp L90
041C L89:
041C .dbline 320
041C ; else
041C ; {
041C .dbline 321
041C ; spi_transfer_8(msg_buffer[10]);
041C 00911200 lds R16,_msg_buffer+10
0420 00D0 rcall _spi_transfer_8
0422 .dbline 322
0422 ; wait_ms(msg_buffer[5]);
0422 00910D00 lds R16,_msg_buffer+5
0426 1127 clr R17
0428 00D0 rcall _wait_ms
042A .dbline 323
042A ; tmp=spi_transfer_8(msg_buffer[11]);
042A 00911300 lds R16,_msg_buffer+11
042E 00D0 rcall _spi_transfer_8
0430 0D87 std y+13,R16
0432 .dbline 324
0432 ; wait_ms(msg_buffer[5]);
0432 00910D00 lds R16,_msg_buffer+5
0436 1127 clr R17
0438 00D0 rcall _wait_ms
043A .dbline 325
043A ; }
043A L90:
043A .dbline 327
043A ;
043A ; if((tmp==msg_buffer[6])||(msg_buffer[7]==0))
043A 20900E00 lds R2,_msg_buffer+6
043E 0D84 ldd R0,y+13
0440 0214 cp R0,R2
0442 21F0 breq L104
0444 20900F00 lds R2,_msg_buffer+7
0448 2220 tst R2
044A 51F4 brne L100
044C L104:
044C .dbline 328
044C ; {
044C .dbline 329
044C ; LED_GN_OFF;
044C 8EEF ldi R24,-2
044E 9FEF ldi R25,-1
0450 28B2 in R2,0x18
0452 2822 and R2,R24
0454 28BA out 0x18,R2
0456 .dbline 330
0456 ; LED_RT_ON;
0456 C19A sbi 0x18,1
0458 .dbline 331
0458 ; i=0xFF;
0458 8FEF ldi R24,255
045A 90E0 ldi R25,0
045C 6C01 movw R12,R24
045E .dbline 332
045E ; break;
045E 0BC0 rjmp L82
0460 L100:
0460 .dbline 335
0460 00D0 rcall _spi_clock_pulse
0462 .dbline 336
0462 L81:
0462 .dbline 304
0462 C601 movw R24,R12
0464 0196 adiw R24,1
0466 6C01 movw R12,R24
0468 L83:
0468 .dbline 304
0468 20900C00 lds R2,_msg_buffer+4
046C 3324 clr R3
046E C214 cp R12,R2
0470 D304 cpc R13,R3
0472 08F4 brsh X10
0474 B1CF rjmp L80
0476 X10:
0476 L82:
0476 .dbline 338
0476 ; }
0476 ;
0476 ; spi_clock_pulse();
0476 ; }
0476 ;
0476 ; num_bytes = 2;
0476 82E0 ldi R24,2
0478 90E0 ldi R25,0
047A 9B87 std y+11,R25
047C 8A87 std y+10,R24
047E .dbline 339
047E ; msg_buffer[0] = CMD_ENTER_PROGMODE_ISP;
047E 80E1 ldi R24,16
0480 80930800 sts _msg_buffer,R24
0484 .dbline 341
0484 ;
0484 ; if(i==0xFF)
0484 C601 movw R24,R12
0486 8F3F cpi R24,255
0488 E0E0 ldi R30,0
048A 9E07 cpc R25,R30
048C 21F4 brne L105
048E .dbline 342
048E ; {
048E .dbline 343
048E ; msg_buffer[1] = STATUS_CMD_OK;
048E 2224 clr R2
0490 20920900 sts _msg_buffer+1,R2
0494 .dbline 344
0494 ; }
0494 79C5 rjmp L78
0496 L105:
0496 .dbline 346
0496 ; else
0496 ; {
0496 .dbline 347
0496 ; msg_buffer[1] = STATUS_CMD_FAILED;
0496 80EC ldi R24,192
0498 80930900 sts _msg_buffer+1,R24
049C .dbline 348
049C ; }
049C .dbline 349
049C ; }
049C 75C5 rjmp L78
049E L77:
049E .dbline 353
049E ; //////////////////////////////////////
049E ; //CMD_LEAVE_PROGMODE_ISP
049E ; //////////////////////////////////////
049E ; else if(cmd==CMD_LEAVE_PROGMODE_ISP)
049E 8C85 ldd R24,y+12
04A0 8131 cpi R24,17
04A2 A9F4 brne L109
04A4 .dbline 354
04A4 ; {
04A4 .dbline 355
04A4 ; prgmode=0;
04A4 2224 clr R2
04A6 20920400 sts _prgmode,R2
04AA .dbline 357
04AA ;
04AA ; spi_disable();
04AA 00D0 rcall _spi_disable
04AC .dbline 359
04AC ;
04AC ; LED_RT_OFF;
04AC 8DEF ldi R24,-3
04AE 9FEF ldi R25,-1
04B0 28B2 in R2,0x18
04B2 2822 and R2,R24
04B4 28BA out 0x18,R2
04B6 .dbline 360
04B6 ; LED_GN_ON;
04B6 C09A sbi 0x18,0
04B8 .dbline 362
04B8 ;
04B8 ; num_bytes = 2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -