📄 main.lis
字号:
0360 07C0 rjmp L82
0362 L91:
0362 .dbline 255
0362 ; case PARAM_RESET_POLARITY:
0362 ; tmp = reset_polarity;
0362 20900600 lds R2,_reset_polarity
0366 2D86 std y+13,R2
0368 .dbline 256
0368 ; break;
0368 03C0 rjmp L82
036A L92:
036A .dbline 258
036A ; case PARAM_CONTROLLER_INIT:
036A ; tmp = param_controller_init;
036A 20900500 lds R2,_param_controller_init
036E 2D86 std y+13,R2
0370 .dbline 259
0370 ; break;
0370 L81:
0370 L82:
0370 .dbline 262
0370 ; }
0370 ;
0370 ; num_bytes = 3;
0370 83E0 ldi R24,3
0372 90E0 ldi R25,0
0374 9B87 std y+11,R25
0376 8A87 std y+10,R24
0378 .dbline 263
0378 ; msg_buffer[0] = CMD_GET_PARAMETER;
0378 80930800 sts _msg_buffer,R24
037C .dbline 264
037C ; msg_buffer[1] = STATUS_CMD_OK;
037C 2224 clr R2
037E 20920900 sts _msg_buffer+1,R2
0382 .dbline 265
0382 ; msg_buffer[2] = tmp;
0382 0D84 ldd R0,y+13
0384 00920A00 sts _msg_buffer+2,R0
0388 .dbline 266
0388 ; }
0388 59C6 rjmp L80
038A L79:
038A .dbline 270
038A ; //////////////////////////////////////
038A ; //CMD_LOAD_ADDRESS
038A ; //////////////////////////////////////
038A ; else if(cmd==CMD_LOAD_ADDRESS)
038A 8C85 ldd R24,y+12
038C 8630 cpi R24,6
038E 09F0 breq X12
0390 6CC0 rjmp L98
0392 X12:
0392 .dbline 271
0392 ; {
0392 .dbline 272
0392 ; address = ((unsigned long)msg_buffer[1])<<24;
0392 88E1 ldi R24,24
0394 90E0 ldi R25,0
0396 20900900 lds R2,_msg_buffer+1
039A 3324 clr R3
039C 4424 clr R4
039E 5524 clr R5
03A0 8A93 st -y,R24
03A2 8101 movw R16,R2
03A4 9201 movw R18,R4
03A6 00D0 rcall lsl32
03A8 10930100 sts _address+1,R17
03AC 00930000 sts _address,R16
03B0 30930300 sts _address+2+1,R19
03B4 20930200 sts _address+2,R18
03B8 .dbline 273
03B8 ; address |= ((unsigned long)msg_buffer[2])<<16;
03B8 20900A00 lds R2,_msg_buffer+2
03BC 3324 clr R3
03BE 4424 clr R4
03C0 5524 clr R5
03C2 2101 movw R4,R2
03C4 2224 clr R2
03C6 3324 clr R3
03C8 3801 movw R6,R16
03CA 4901 movw R8,R18
03CC 6228 or R6,R2
03CE 7328 or R7,R3
03D0 8428 or R8,R4
03D2 9528 or R9,R5
03D4 70920100 sts _address+1,R7
03D8 60920000 sts _address,R6
03DC 90920300 sts _address+2+1,R9
03E0 80920200 sts _address+2,R8
03E4 .dbline 274
03E4 ; address |= ((unsigned long)msg_buffer[3])<<8;
03E4 88E0 ldi R24,8
03E6 90E0 ldi R25,0
03E8 20900B00 lds R2,_msg_buffer+3
03EC 3324 clr R3
03EE 4424 clr R4
03F0 5524 clr R5
03F2 8A93 st -y,R24
03F4 8101 movw R16,R2
03F6 9201 movw R18,R4
03F8 00D0 rcall lsl32
03FA 40900200 lds R4,_address+2
03FE 50900300 lds R5,_address+2+1
0402 20900000 lds R2,_address
0406 30900100 lds R3,_address+1
040A 202A or R2,R16
040C 312A or R3,R17
040E 422A or R4,R18
0410 532A or R5,R19
0412 30920100 sts _address+1,R3
0416 20920000 sts _address,R2
041A 50920300 sts _address+2+1,R5
041E 40920200 sts _address+2,R4
0422 .dbline 275
0422 ; address |= ((unsigned long)msg_buffer[4]);
0422 20900C00 lds R2,_msg_buffer+4
0426 3324 clr R3
0428 4424 clr R4
042A 5524 clr R5
042C 80900200 lds R8,_address+2
0430 90900300 lds R9,_address+2+1
0434 60900000 lds R6,_address
0438 70900100 lds R7,_address+1
043C 6228 or R6,R2
043E 7328 or R7,R3
0440 8428 or R8,R4
0442 9528 or R9,R5
0444 70920100 sts _address+1,R7
0448 60920000 sts _address,R6
044C 90920300 sts _address+2+1,R9
0450 80920200 sts _address+2,R8
0454 .dbline 277
0454 ;
0454 ; num_bytes = 2;
0454 82E0 ldi R24,2
0456 90E0 ldi R25,0
0458 9B87 std y+11,R25
045A 8A87 std y+10,R24
045C .dbline 278
045C ; msg_buffer[0] = CMD_LOAD_ADDRESS;
045C 86E0 ldi R24,6
045E 80930800 sts _msg_buffer,R24
0462 .dbline 279
0462 ; msg_buffer[1] = STATUS_CMD_OK;
0462 2224 clr R2
0464 20920900 sts _msg_buffer+1,R2
0468 .dbline 280
0468 ; }
0468 E9C5 rjmp L99
046A L98:
046A .dbline 284
046A ; //////////////////////////////////////
046A ; //CMD_ENTER_PROGMODE_ISP
046A ; //////////////////////////////////////
046A ; else if(cmd==CMD_ENTER_PROGMODE_ISP)
046A 8C85 ldd R24,y+12
046C 8031 cpi R24,16
046E 09F0 breq X13
0470 70C0 rjmp L105
0472 X13:
0472 .dbline 285
0472 ; {
0472 .dbline 298
0472 ; //msg_buffer[1] //timeout //Command time-out (in ms)
0472 ; //msg_buffer[2] //stabDelay //Delay (in ms) used for pin stabilization
0472 ; //msg_buffer[3] //cmdexeDelay //Delay (in ms) in connection with the EnterProgMode command execution
0472 ; //msg_buffer[4] //synchLoops //Number of synchronization loops
0472 ; //msg_buffer[5] //byteDelay //Delay (in ms) between each byte in the EnterProgMode command.
0472 ; //msg_buffer[6] //pollValue //Poll value: 0x53 for AVR, 0x69 for AT89xx
0472 ; //msg_buffer[7] //pollIndex //Start address, received byte: 0 = no polling, 3 = AVR, 4 = AT89xx
0472 ; //msg_buffer[8] //cmd1 //Command Byte # 1 to be transmitted
0472 ; //msg_buffer[9] //cmd2 //Command Byte # 2 to be transmitted
0472 ; //msg_buffer[10]//cmd3 //Command Byte # 3 to be transmitted
0472 ; //msg_buffer[11]//cmd4 //Command Byte # 4 to be transmitted
0472 ;
0472 ; prgmode=1;
0472 81E0 ldi R24,1
0474 80930400 sts _prgmode,R24
0478 .dbline 300
0478 ;
0478 ; spi_enable();
0478 00D0 rcall _spi_enable
047A .dbline 302
047A ;
047A ; wait_ms(msg_buffer[2]);
047A 00910A00 lds R16,_msg_buffer+2
047E 1127 clr R17
0480 00D0 rcall _wait_ms
0482 .dbline 304
0482 ;
0482 ; LED_GN_ON;
0482 289A sbi 0x5,0
0484 .dbline 305
0484 ; LED_RT_ON;
0484 299A sbi 0x5,1
0486 .dbline 308
0486 ;
0486 ; //Try to get connection with the target chip
0486 ; for(i=0;i<msg_buffer[4];i++)
0486 CC24 clr R12
0488 DD24 clr R13
048A 48C0 rjmp L111
048C L108:
048C .dbline 309
048C ; {
048C .dbline 311
048C ; //spi_transfer_16(0xAC53);
048C ; spi_transfer_8(msg_buffer[8]);
048C 00911000 lds R16,_msg_buffer+8
0490 00D0 rcall _spi_transfer_8
0492 .dbline 312
0492 ; wait_ms(msg_buffer[5]);
0492 00910D00 lds R16,_msg_buffer+5
0496 1127 clr R17
0498 00D0 rcall _wait_ms
049A .dbline 313
049A ; spi_transfer_8(msg_buffer[9]);
049A 00911100 lds R16,_msg_buffer+9
049E 00D0 rcall _spi_transfer_8
04A0 .dbline 314
04A0 ; wait_ms(msg_buffer[5]);
04A0 00910D00 lds R16,_msg_buffer+5
04A4 1127 clr R17
04A6 00D0 rcall _wait_ms
04A8 .dbline 316
04A8 ;
04A8 ; if(msg_buffer[7]==3)
04A8 80910F00 lds R24,_msg_buffer+7
04AC 8330 cpi R24,3
04AE 81F4 brne L117
04B0 .dbline 317
04B0 ; {
04B0 .dbline 318
04B0 ; tmp=spi_transfer_8(msg_buffer[10]);
04B0 00911200 lds R16,_msg_buffer+10
04B4 00D0 rcall _spi_transfer_8
04B6 0D87 std y+13,R16
04B8 .dbline 319
04B8 ; wait_ms(msg_buffer[5]);
04B8 00910D00 lds R16,_msg_buffer+5
04BC 1127 clr R17
04BE 00D0 rcall _wait_ms
04C0 .dbline 320
04C0 ; spi_transfer_8(msg_buffer[11]);
04C0 00911300 lds R16,_msg_buffer+11
04C4 00D0 rcall _spi_transfer_8
04C6 .dbline 321
04C6 ; wait_ms(msg_buffer[5]);
04C6 00910D00 lds R16,_msg_buffer+5
04CA 1127 clr R17
04CC 00D0 rcall _wait_ms
04CE .dbline 322
04CE ; }
04CE 0FC0 rjmp L118
04D0 L117:
04D0 .dbline 324
04D0 ; else
04D0 ; {
04D0 .dbline 325
04D0 ; spi_transfer_8(msg_buffer[10]);
04D0 00911200 lds R16,_msg_buffer+10
04D4 00D0 rcall _spi_transfer_8
04D6 .dbline 326
04D6 ; wait_ms(msg_buffer[5]);
04D6 00910D00 lds R16,_msg_buffer+5
04DA 1127 clr R17
04DC 00D0 rcall _wait_ms
04DE .dbline 327
04DE ; tmp=spi_transfer_8(msg_buffer[11]);
04DE 00911300 lds R16,_msg_buffer+11
04E2 00D0 rcall _spi_transfer_8
04E4 0D87 std y+13,R16
04E6 .dbline 328
04E6 ; wait_ms(msg_buffer[5]);
04E6 00910D00 lds R16,_msg_buffer+5
04EA 1127 clr R17
04EC 00D0 rcall _wait_ms
04EE .dbline 329
04EE ; }
04EE L118:
04EE .dbline 331
04EE ;
04EE ; if((tmp==msg_buffer[6])||(msg_buffer[7]==0))
04EE 20900E00 lds R2,_msg_buffer+6
04F2 0D84 ldd R0,y+13
04F4 0214 cp R0,R2
04F6 21F0 breq L132
04F8 20900F00 lds R2,_msg_buffer+7
04FC 2220 tst R2
04FE 51F4 brne L128
0500 L132:
0500 .dbline 332
0500 ; {
0500 .dbline 333
0500 ; LED_GN_OFF;
0500 8EEF ldi R24,-2
0502 9FEF ldi R25,-1
0504 25B0 in R2,0x5
0506 2822 and R2,R24
0508 25B8 out 0x5,R2
050A .dbline 334
050A ; LED_RT_ON;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -