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