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

📄 main.lis

📁 程序下载在M16中后
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0290 86E0              ldi R24,6
 0292 80930D00          sts _msg_buffer,R24
 0296                   .dbline 193
 0296           ;               msg_buffer[1] = STATUS_CMD_OK;
 0296 2224              clr R2
 0298 20920E00          sts _msg_buffer+1,R2
 029C                   .dbline 194
 029C           ;       }
 029C 0FC1              xjmp L52
 029E           L51:
 029E                   .dbline 196
 029E           ;       //CMD_CHIP_ERASE_ISP
 029E           ;       else if(cmd==CMD_CHIP_ERASE_ISP)
 029E 8E2D              mov R24,R14
 02A0 8231              cpi R24,18
 02A2 59F4              brne L56
 02A4                   .dbline 197
 02A4           ;       {               
 02A4                   .dbline 198
 02A4           ;               num_bytes = 2;
 02A4 82E0              ldi R24,2
 02A6 90E0              ldi R25,0
 02A8 9F83              std y+7,R25
 02AA 8E83              std y+6,R24
 02AC                   .dbline 199
 02AC           ;               msg_buffer[0] = CMD_CHIP_ERASE_ISP;
 02AC 82E1              ldi R24,18
 02AE 80930D00          sts _msg_buffer,R24
 02B2                   .dbline 200
 02B2           ;               msg_buffer[1] = STATUS_CMD_OK;          
 02B2 2224              clr R2
 02B4 20920E00          sts _msg_buffer+1,R2
 02B8                   .dbline 201
 02B8           ;       }
 02B8 01C1              xjmp L57
 02BA           L56:
 02BA                   .dbline 203
 02BA           ;       //命令CMD_ENTER_PROGMODE_ISP
 02BA           ;       else if(cmd == CMD_ENTER_PROGMODE_ISP)
 02BA 8E2D              mov R24,R14
 02BC 8031              cpi R24,16
 02BE 59F4              brne L59
 02C0                   .dbline 204
 02C0           ;       {
 02C0                   .dbline 205
 02C0           ;               num_bytes = 2;
 02C0 82E0              ldi R24,2
 02C2 90E0              ldi R25,0
 02C4 9F83              std y+7,R25
 02C6 8E83              std y+6,R24
 02C8                   .dbline 206
 02C8           ;               msg_buffer[0] = CMD_ENTER_PROGMODE_ISP;
 02C8 80E1              ldi R24,16
 02CA 80930D00          sts _msg_buffer,R24
 02CE                   .dbline 207
 02CE           ;               msg_buffer[1] = STATUS_CMD_OK;
 02CE 2224              clr R2
 02D0 20920E00          sts _msg_buffer+1,R2
 02D4                   .dbline 208
 02D4           ;       }
 02D4 F3C0              xjmp L60
 02D6           L59:
 02D6                   .dbline 210
 02D6           ;       //命令 CMD_LEAVE_PROGMODE_ISP
 02D6           ;       else if(cmd==CMD_LEAVE_PROGMODE_ISP)
 02D6 8E2D              mov R24,R14
 02D8 8131              cpi R24,17
 02DA 99F4              brne L62
 02DC                   .dbline 211
 02DC           ;       {
 02DC                   .dbline 212
 02DC           ;               num_bytes = 2;
 02DC 82E0              ldi R24,2
 02DE 90E0              ldi R25,0
 02E0 9F83              std y+7,R25
 02E2 8E83              std y+6,R24
 02E4                   .dbline 213
 02E4           ;               msg_buffer[0] = CMD_LEAVE_PROGMODE_ISP;
 02E4 81E1              ldi R24,17
 02E6 80930D00          sts _msg_buffer,R24
 02EA                   .dbline 214
 02EA           ;               msg_buffer[1] = STATUS_CMD_OK;  
 02EA 2224              clr R2
 02EC 20920E00          sts _msg_buffer+1,R2
 02F0                   .dbline 216
 02F0           ;                       
 02F0           ;               flag = 0;
 02F0 20920000          sts _flag,R2
 02F4                   .dbline 217
 02F4           ;               TCNT1 = 0x735F;
 02F4 8FE5              ldi R24,29535
 02F6 93E7              ldi R25,115
 02F8 9DBD              out 0x2d,R25
 02FA 8CBD              out 0x2c,R24
 02FC                   .dbline 218
 02FC           ;               TCCR1B = 0x05;
 02FC 85E0              ldi R24,5
 02FE 8EBD              out 0x2e,R24
 0300                   .dbline 219
 0300           ;       }
 0300 DDC0              xjmp L63
 0302           L62:
 0302                   .dbline 221
 0302           ;       //命令CMD_PROGRAM_FLASH_ISP
 0302           ;       else if(cmd==CMD_PROGRAM_FLASH_ISP)
 0302 8E2D              mov R24,R14
 0304 8331              cpi R24,19
 0306 09F0              breq X5
 0308 48C0              xjmp L65
 030A           X5:
 030A                   .dbline 222
 030A           ;       {
 030A                   .dbline 224
 030A           ;               uint16 temp16; 
 030A           ;               boot_page_ew(address,0x03);                                             //擦除页
 030A 23E0              ldi R18,3
 030C 00910200          lds R16,_address
 0310 10910300          lds R17,_address+1
 0314 0E940000          xcall _boot_page_ew
 0318                   .dbline 225
 0318           ;               wait_page_rw_ok();                              //等待擦除完成 
 0318 0E940000          xcall _wait_page_rw_ok
 031C                   .dbline 226
 031C           ;               for(i=0;i<(SPM_PAGESIZE<<1);i+=2)                       //将数据填入Flash缓冲页中 
 031C CC24              clr R12
 031E DD24              clr R13
 0320 19C0              xjmp L70
 0322           L67:
 0322                   .dbline 227
 0322                   .dbline 228
 0322 80E0              ldi R24,<_msg_buffer
 0324 90E0              ldi R25,>_msg_buffer
 0326 F601              movw R30,R12
 0328 3B96              adiw R30,11
 032A E80F              add R30,R24
 032C F91F              adc R31,R25
 032E A080              ldd R10,z+0
 0330 BB24              clr R11
 0332                   .dbline 229
 0332 BA2C              mov R11,R10
 0334 AA24              clr R10
 0336                   .dbline 230
 0336 F601              movw R30,R12
 0338 3A96              adiw R30,10
 033A E80F              add R30,R24
 033C F91F              adc R31,R25
 033E 2080              ldd R2,z+0
 0340 3324              clr R3
 0342 A20C              add R10,R2
 0344 B31C              adc R11,R3
 0346                   .dbline 231
 0346 9501              movw R18,R10
 0348 8601              movw R16,R12
 034A 0E940000          xcall _boot_page_fill
 034E                   .dbline 232
 034E           L68:
 034E                   .dbline 226
 034E C601              movw R24,R12
 0350 0296              adiw R24,2
 0352 6C01              movw R12,R24
 0354           L70:
 0354                   .dbline 226
 0354 C601              movw R24,R12
 0356 8038              cpi R24,128
 0358 E0E0              ldi R30,0
 035A 9E07              cpc R25,R30
 035C 10F3              brlo L67
 035E                   .dbline 233
 035E           ;               { 
 035E           ;                               temp16=msg_buffer[i+11];
 035E           ;                               temp16<<=8;
 035E           ;                               temp16+=msg_buffer[i+10];
 035E           ;                               boot_page_fill(i,temp16); 
 035E           ;       }
 035E           ;               boot_page_ew(address,0x05);                     //将缓冲页数据写入一个Flash页 
 035E 25E0              ldi R18,5
 0360 00910200          lds R16,_address
 0364 10910300          lds R17,_address+1
 0368 0E940000          xcall _boot_page_ew
 036C                   .dbline 234
 036C           ;       wait_page_rw_ok();                              //等待写入完成 
 036C 0E940000          xcall _wait_page_rw_ok
 0370                   .dbline 235
 0370           ;               address+=(SPM_PAGESIZE<<1);
 0370 80910200          lds R24,_address
 0374 90910300          lds R25,_address+1
 0378 8058              subi R24,128  ; offset = 128
 037A 9F4F              sbci R25,255
 037C 90930300          sts _address+1,R25
 0380 80930200          sts _address,R24
 0384                   .dbline 236
 0384           ;               num_bytes = 2;
 0384 82E0              ldi R24,2
 0386 90E0              ldi R25,0
 0388 9F83              std y+7,R25
 038A 8E83              std y+6,R24
 038C                   .dbline 237
 038C           ;               msg_buffer[0] = CMD_PROGRAM_FLASH_ISP;
 038C 83E1              ldi R24,19
 038E 80930D00          sts _msg_buffer,R24
 0392                   .dbline 238
 0392           ;               msg_buffer[1] = STATUS_CMD_OK;
 0392 2224              clr R2
 0394 20920E00          sts _msg_buffer+1,R2
 0398                   .dbline 239
 0398           ;       }
 0398 91C0              xjmp L66
 039A           L65:
 039A                   .dbline 241
 039A           ;       //命令CMD_READ_FLASH_ISP
 039A           ;       else if(cmd==CMD_READ_FLASH_ISP)
 039A 8E2D              mov R24,R14
 039C 8431              cpi R24,20
 039E 91F5              brne L72
 03A0                   .dbline 242
 03A0           ;       {
 03A0                   .dbline 243
 03A0           ;               for(i=0;i<(SPM_PAGESIZE<<2);i++)
 03A0 CC24              clr R12
 03A2 DD24              clr R13
 03A4 13C0              xjmp L77
 03A6           L74:
 03A6                   .dbline 244
 03A6                   .dbline 245
 03A6 2227              clr R18
 03A8 00910200          lds R16,_address
 03AC 10910300          lds R17,_address+1
 03B0 0C0D              add R16,R12
 03B2 1D1D              adc R17,R13
 03B4 0E940000          xcall _read_program_memory
 03B8 80E0              ldi R24,<_msg_buffer
 03BA 90E0              ldi R25,>_msg_buffer
 03BC F601              movw R30,R12
 03BE 3296              adiw R30,2
 03C0 E80F              add R30,R24
 03C2 F91F              adc R31,R25
 03C4 0083              std z+0,R16
 03C6                   .dbline 246
 03C6           L75:
 03C6                   .dbline 243
 03C6 C601              movw R24,R12
 03C8 0196              adiw R24,1
 03CA 6C01              movw R12,R24
 03CC           L77:
 03CC                   .dbline 243
 03CC C601              movw R24,R12
 03CE 8030              cpi R24,0
 03D0 E1E0              ldi R30,1
 03D2 9E07              cpc R25,R30
 03D4 40F3              brlo L74
 03D6                   .dbline 247
 03D6           ;               {
 03D6           ;                       msg_buffer[i+2] = read_program_memory (address+i,0x00);
 03D6           ;               }
 03D6           ;               address+=SPM_PAGESIZE<<2;
 03D6 80910200          lds R24,_address
 03DA 90910300          lds R25,_address+1
 03DE 8050              subi R24,0  ; offset = 256
 03E0 9F4F              sbci R25,255
 03E2 90930300          sts _address+1,R25
 03E6 80930200          sts _address,R24
 03EA                   .dbline 248
 03EA           ;               num_bytes = (SPM_PAGESIZE<<2)+3;
 03EA 83E0              ldi R24,259
 03EC 91E0              ldi R25,1
 03EE 9F83              std y+7,R25
 03F0 8E83              std y+6,R24
 03F2                   .dbline 249
 03F2           ;               msg_buffer[0] = CMD_READ_FLASH_ISP;
 03F2 84E1              ldi R24,20
 03F4 80930D00          sts _msg_buffer,R24
 03F8                   .dbline 250
 03F8           ;               msg_buffer[1] = STATUS_CMD_OK;
 03F8 2224              clr R2
 03FA 20920E00          sts _msg_buffer+1,R2
 03FE                   .dbline 251
 03FE           ;               msg_buffer[(SPM_PAGESIZE<<2)+2] = STATUS_CMD_OK;
 03FE 20920F01          sts _msg_buffer+258,R2
 0402                   .dbline 252
 0402           ;       }
 0402 5CC0              xjmp L73
 0404           L72:
 0404                   .dbline 254
 0404           ;       //命令CMD_READ_FUSE_ISP
 0404           ;       else if(cmd==CMD_READ_FUSE_ISP)
 0404 8E2D              mov R24,R14
 0406 8831              cpi R24,24
 0408 71F5              brne L80
 040A                   .dbline 255
 040A           ;       {       
 040A                   .dbline 256
 040A           ;               switch(msg_buffer[2])           
 040A A0900F00          lds R10,_msg_buffer+2
 040E BB24              clr R11
 0410 C501              movw R24,R10
 0412 8035              cpi R24,80
 0414 E0E0              ldi R30,0
 0416 9E07              cpc R25,R30
 0418 51F0              breq L86
 041A 8035              cpi R24,80
 041C E0E0              ldi R30,0
 041E 9E07              cpc R25,R30
 0420 ACF0              brlt L83
 0422           L90:
 0422 C501              movw R24,R10
 0424 8835              cpi R24,88
 0426 E0E0              ldi R30,0
 0428 9E07              cpc R25,R30
 042A 49F0              breq L88
 042C 0FC0              xjmp L83
 042E           X3:
 042E                   .dbline 257

⌨️ 快捷键说明

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