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

📄 main.lis

📁 文档里面的代码是可以正常使用的
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 050A 299A              sbi 0x5,1
 050C                   .dbline 335
 050C           ;                               i=0xFF;
 050C 8FEF              ldi R24,255
 050E 90E0              ldi R25,0
 0510 6C01              movw R12,R24
 0512                   .dbline 336
 0512           ;                               break;
 0512 0BC0              rjmp L110
 0514           L128:
 0514                   .dbline 339
 0514 00D0              rcall _spi_clock_pulse
 0516                   .dbline 340
 0516           L109:
 0516                   .dbline 308
 0516 C601              movw R24,R12
 0518 0196              adiw R24,1
 051A 6C01              movw R12,R24
 051C           L111:
 051C                   .dbline 308
 051C 20900C00          lds R2,_msg_buffer+4
 0520 3324              clr R3
 0522 C214              cp R12,R2
 0524 D304              cpc R13,R3
 0526 08F4              brsh X14
 0528 B1CF              rjmp L108
 052A           X14:
 052A           L110:
 052A                   .dbline 342
 052A           ;                       }
 052A           ;               
 052A           ;                       spi_clock_pulse();
 052A           ;               }
 052A           ;               
 052A           ;               num_bytes = 2;
 052A 82E0              ldi R24,2
 052C 90E0              ldi R25,0
 052E 9B87              std y+11,R25
 0530 8A87              std y+10,R24
 0532                   .dbline 343
 0532           ;               msg_buffer[0] = CMD_ENTER_PROGMODE_ISP;
 0532 80E1              ldi R24,16
 0534 80930800          sts _msg_buffer,R24
 0538                   .dbline 345
 0538           ;                       
 0538           ;               if(i==0xFF)
 0538 C601              movw R24,R12
 053A 8F3F              cpi R24,255
 053C E0E0              ldi R30,0
 053E 9E07              cpc R25,R30
 0540 21F4              brne L133
 0542                   .dbline 346
 0542           ;               {                       
 0542                   .dbline 347
 0542           ;                       msg_buffer[1] = STATUS_CMD_OK;                  
 0542 2224              clr R2
 0544 20920900          sts _msg_buffer+1,R2
 0548                   .dbline 348
 0548           ;               }
 0548 79C5              rjmp L106
 054A           L133:
 054A                   .dbline 350
 054A           ;               else
 054A           ;               {                       
 054A                   .dbline 351
 054A           ;                       msg_buffer[1] = STATUS_CMD_FAILED;
 054A 80EC              ldi R24,192
 054C 80930900          sts _msg_buffer+1,R24
 0550                   .dbline 352
 0550           ;               }               
 0550                   .dbline 353
 0550           ;       }
 0550 75C5              rjmp L106
 0552           L105:
 0552                   .dbline 357
 0552           ;       //////////////////////////////////////
 0552           ;       //CMD_LEAVE_PROGMODE_ISP
 0552           ;       //////////////////////////////////////
 0552           ;       else if(cmd==CMD_LEAVE_PROGMODE_ISP)
 0552 8C85              ldd R24,y+12
 0554 8131              cpi R24,17
 0556 A9F4              brne L137
 0558                   .dbline 358
 0558           ;       {
 0558                   .dbline 359
 0558           ;               prgmode=0;
 0558 2224              clr R2
 055A 20920400          sts _prgmode,R2
 055E                   .dbline 361
 055E           ; 
 055E           ;               spi_disable();
 055E 00D0              rcall _spi_disable
 0560                   .dbline 363
 0560           ;                               
 0560           ;               LED_RT_OFF;
 0560 8DEF              ldi R24,-3
 0562 9FEF              ldi R25,-1
 0564 25B0              in R2,0x5
 0566 2822              and R2,R24
 0568 25B8              out 0x5,R2
 056A                   .dbline 364
 056A           ;               LED_GN_ON;
 056A 289A              sbi 0x5,0
 056C                   .dbline 366
 056C           ; 
 056C           ;               num_bytes = 2;
 056C 82E0              ldi R24,2
 056E 90E0              ldi R25,0
 0570 9B87              std y+11,R25
 0572 8A87              std y+10,R24
 0574                   .dbline 367
 0574           ;               msg_buffer[0] = CMD_LEAVE_PROGMODE_ISP;
 0574 81E1              ldi R24,17
 0576 80930800          sts _msg_buffer,R24
 057A                   .dbline 368
 057A           ;               msg_buffer[1] = STATUS_CMD_OK;          
 057A 2224              clr R2
 057C 20920900          sts _msg_buffer+1,R2
 0580                   .dbline 369
 0580           ;       }
 0580 5DC5              rjmp L138
 0582           L137:
 0582                   .dbline 373
 0582           ;       //////////////////////////////////////
 0582           ;       //CMD_CHIP_ERASE_ISP
 0582           ;       //////////////////////////////////////
 0582           ;       else if(cmd==CMD_CHIP_ERASE_ISP)
 0582 8C85              ldd R24,y+12
 0584 8231              cpi R24,18
 0586 39F5              brne L140
 0588                   .dbline 374
 0588           ;       {
 0588                   .dbline 375
 0588           ;               spi_transfer_8(msg_buffer[3]);
 0588 00910B00          lds R16,_msg_buffer+3
 058C 00D0              rcall _spi_transfer_8
 058E                   .dbline 376
 058E           ;               spi_transfer_8(msg_buffer[4]);
 058E 00910C00          lds R16,_msg_buffer+4
 0592 00D0              rcall _spi_transfer_8
 0594                   .dbline 377
 0594           ;               spi_transfer_8(msg_buffer[5]);
 0594 00910D00          lds R16,_msg_buffer+5
 0598 00D0              rcall _spi_transfer_8
 059A                   .dbline 378
 059A           ;               spi_transfer_8(msg_buffer[6]);
 059A 00910E00          lds R16,_msg_buffer+6
 059E 00D0              rcall _spi_transfer_8
 05A0                   .dbline 382
 05A0           ;               
 05A0           ;               //Newer AVR's seems to have a busy bit
 05A0           ;               //cant test this because I don't have any of these new chips
 05A0           ;               if(msg_buffer[2]==0)
 05A0 20900A00          lds R2,_msg_buffer+2
 05A4 2220              tst R2
 05A6 29F4              brne L151
 05A8                   .dbline 383
 05A8           ;               {
 05A8                   .dbline 384
 05A8           ;                       wait_ms(msg_buffer[1]);
 05A8 00910900          lds R16,_msg_buffer+1
 05AC 1127              clr R17
 05AE 00D0              rcall _wait_ms
 05B0                   .dbline 385
 05B0           ;               }
 05B0 07C0              rjmp L147
 05B2           X5:
 05B2                   .dbline 387
 05B2           ;               else //if(msg_buffer[2]==1)
 05B2           ;               {
 05B2           L150:
 05B2                   .dbline 388
 05B2           L151:
 05B2                   .dbline 388
 05B2           ;                       while(spi_transfer_32(0xF0000000)&1);
 05B2 00E0              ldi R16,0
 05B4 10E0              ldi R17,0
 05B6 20E0              ldi R18,0
 05B8 30EF              ldi R19,240
 05BA 00D0              rcall _spi_transfer_32
 05BC 00FD              sbrc R16,0
 05BE F9CF              rjmp L150
 05C0                   .dbline 389
 05C0           ;               }               
 05C0           L147:
 05C0                   .dbline 391
 05C0           ;                               
 05C0           ;               num_bytes = 2;
 05C0 82E0              ldi R24,2
 05C2 90E0              ldi R25,0
 05C4 9B87              std y+11,R25
 05C6 8A87              std y+10,R24
 05C8                   .dbline 392
 05C8           ;               msg_buffer[0] = CMD_CHIP_ERASE_ISP;
 05C8 82E1              ldi R24,18
 05CA 80930800          sts _msg_buffer,R24
 05CE                   .dbline 393
 05CE           ;               msg_buffer[1] = STATUS_CMD_OK;          
 05CE 2224              clr R2
 05D0 20920900          sts _msg_buffer+1,R2
 05D4                   .dbline 394
 05D4           ;       }
 05D4 33C5              rjmp L141
 05D6           L140:
 05D6                   .dbline 398
 05D6           ;       //////////////////////////////////////
 05D6           ;       //CMD_PROGRAM_FLASH_ISP
 05D6           ;       //////////////////////////////////////
 05D6           ;       else if(cmd==CMD_PROGRAM_FLASH_ISP)
 05D6 8C85              ldd R24,y+12
 05D8 8331              cpi R24,19
 05DA 09F0              breq X15
 05DC BCC1              rjmp L154
 05DE           X15:
 05DE                   .dbline 399
 05DE           ;       {
 05DE                   .dbline 400
 05DE           ;               block_size = ((unsigned int)msg_buffer[1])<<8;
 05DE A0900900          lds R10,_msg_buffer+1
 05E2 BB24              clr R11
 05E4 BA2C              mov R11,R10
 05E6 AA24              clr R10
 05E8                   .dbline 401
 05E8           ;               block_size |= msg_buffer[2];
 05E8 20900A00          lds R2,_msg_buffer+2
 05EC 3324              clr R3
 05EE A228              or R10,R2
 05F0 B328              or R11,R3
 05F2                   .dbline 402
 05F2           ;               mode = msg_buffer[3];
 05F2 E0900B00          lds R14,_msg_buffer+3
 05F6                   .dbline 405
 05F6           ;               
 05F6           ;               //Word Mode
 05F6           ;               if((mode&1) == 0)
 05F6 E0FC              sbrc R14,0
 05F8 A2C0              rjmp L159
 05FA                   .dbline 406
 05FA           ;               {               
 05FA                   .dbline 407
 05FA           ;                       for(i=0;i<block_size;i++)
 05FA CC24              clr R12
 05FC DD24              clr R13
 05FE 9AC0              rjmp L164
 0600           L161:
 0600                   .dbline 408
 0600           ;                       {       
 0600                   .dbline 411
 0600           ;                               //If we have an uneven byte programm the
 0600           ;                               //high byte                     
 0600           ;                               if(i&1)
 0600 C0FE              sbrs R12,0
 0602 05C0              rjmp L165
 0604                   .dbline 412
 0604           ;                               {
 0604                   .dbline 413
 0604           ;                                       spi_transfer_8(msg_buffer[5]|(1<<3));
 0604 00910D00          lds R16,_msg_buffer+5
 0608 0860              ori R16,8
 060A 00D0              rcall _spi_transfer_8
 060C                   .dbline 414
 060C           ;                               }
 060C 03C0              rjmp L166
 060E           L165:
 060E                   .dbline 416
 060E           ;                               else
 060E           ;                               {
 060E                   .dbline 417
 060E           ;                                       spi_transfer_8(msg_buffer[5]);
 060E 00910D00          lds R16,_msg_buffer+5
 0612 00D0              rcall _spi_transfer_8
 0614                   .dbline 418
 0614           ;                               }
 0614           L166:
 0614                   .dbline 420
 0614           ;                               
 0614           ;                               spi_transfer_16(address&0xFFFF);
 0614 4FEF              ldi R20,255
 0616 5FEF              ldi R21,255
 0618 60E0              ldi R22,0
 061A 70E0              ldi R23,0
 061C 40900200          lds R4,_address+2
 0620 50900300          lds R5,_address+2+1
 0624 20900000          lds R2,_address
 0628 30900100          lds R3,_address+1
 062C 2422              and R2,R20
 062E 3522              and R3,R21
 0630 4622              and R4,R22
 0632 5722              and R5,R23
 0634 8101              movw R16,R2
 0636 00D0              rcall _spi_transfer_16
 0638                   .dbline 421
 0638           ;                               spi_transfer_8(msg_buffer[i+10]);
 0638 80E0              ldi R24,<_msg_buffer
 063A 90E0              ldi R25,>_msg_buffer
 063C F601              movw R30,R12
 063E 3A96              adiw R30,10
 0640 E80F              add R30,R24
 0642 F91F              adc R31,R25
 0644 0081              ldd R16,z+0
 0646 00D0              rcall _spi_transfer_8
 0648                   .dbline 424
 0648           ;      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -