⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 AVR单片机,STK500下载线制作全套资料,包括程序,电路图
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -