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

📄 main.lis

📁 ATEMEL AVR128 BOOT程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 04F6 240E              add R2,R20
 04F8 351E              adc R3,R21
 04FA 461E              adc R4,R22
 04FC 571E              adc R5,R23
 04FE 30920100          sts _address+1,R3
 0502 20920000          sts _address,R2
 0506 50920300          sts _address+2+1,R5
 050A 40920200          sts _address+2,R4
 050E                   .dbline 232
 050E           ;               num_bytes = READ_BLOCK_SIZE + 3;
 050E 83E0              ldi R24,259
 0510 91E0              ldi R25,1
 0512 9F83              std y+7,R25
 0514 8E83              std y+6,R24
 0516                   .dbline 233
 0516           ;               msg_buffer[0] = CMD_READ_FLASH_ISP;
 0516 84E1              ldi R24,20
 0518 80930000          sts _msg_buffer,R24
 051C                   .dbline 234
 051C           ;               msg_buffer[1] = STATUS_CMD_OK;
 051C 2224              clr R2
 051E 20920100          sts _msg_buffer+1,R2
 0522                   .dbline 235
 0522           ;               msg_buffer[READ_BLOCK_SIZE + 2] = STATUS_CMD_OK;
 0522 20920201          sts _msg_buffer+258,R2
 0526                   .dbline 236
 0526           ;               }
 0526 57C0              xjmp L80
 0528           L79:
 0528                   .dbline 238
 0528           ;       //读熔丝位
 0528           ;       else if (cmd==CMD_READ_FUSE_ISP) {      
 0528 8E2D              mov R24,R14
 052A 8831              cpi R24,24
 052C 71F5              brne L87
 052E                   .dbline 238
 052E                   .dbline 239
 052E           ;               switch(msg_buffer[2]) {
 052E A0900200          lds R10,_msg_buffer+2
 0532 BB24              clr R11
 0534 C501              movw R24,R10
 0536 8035              cpi R24,80
 0538 E0E0              ldi R30,0
 053A 9E07              cpc R25,R30
 053C 51F0              breq L93
 053E 8035              cpi R24,80
 0540 E0E0              ldi R30,0
 0542 9E07              cpc R25,R30
 0544 ACF0              brlt L90
 0546           L97:
 0546 C501              movw R24,R10
 0548 8835              cpi R24,88
 054A E0E0              ldi R30,0
 054C 9E07              cpc R25,R30
 054E 49F0              breq L95
 0550 0FC0              xjmp L90
 0552           X3:
 0552                   .dbline 239
 0552           L93:
 0552                   .dbline 241
 0552           ;                       case 0x50:
 0552           ;                               msg_buffer[2] = read_program_memory(0x0000,1);                  //读熔丝位
 0552 21E0              ldi R18,1
 0554 0027              clr R16
 0556 1127              clr R17
 0558 0E940000          xcall _read_program_memory
 055C 00930200          sts _msg_buffer+2,R16
 0560                   .dbline 242
 0560           ;                               break;
 0560 07C0              xjmp L90
 0562           L95:
 0562                   .dbline 244
 0562           ;                       case 0x58:      
 0562           ;                               msg_buffer[2] = read_program_memory(0x0003,1);                  //读高熔丝位
 0562 21E0              ldi R18,1
 0564 03E0              ldi R16,3
 0566 10E0              ldi R17,0
 0568 0E940000          xcall _read_program_memory
 056C 00930200          sts _msg_buffer+2,R16
 0570                   .dbline 245
 0570           ;                               break;
 0570                   .dbline 247
 0570           ;                       default:
 0570           ;                               break;
 0570           L90:
 0570                   .dbline 249
 0570           ;                               }
 0570           ;               num_bytes = 4;
 0570 84E0              ldi R24,4
 0572 90E0              ldi R25,0
 0574 9F83              std y+7,R25
 0576 8E83              std y+6,R24
 0578                   .dbline 250
 0578           ;               msg_buffer[0] = CMD_READ_FUSE_ISP;
 0578 88E1              ldi R24,24
 057A 80930000          sts _msg_buffer,R24
 057E                   .dbline 251
 057E           ;               msg_buffer[1] = STATUS_CMD_OK;
 057E 2224              clr R2
 0580 20920100          sts _msg_buffer+1,R2
 0584                   .dbline 252
 0584           ;               msg_buffer[3] = STATUS_CMD_OK;
 0584 20920300          sts _msg_buffer+3,R2
 0588                   .dbline 253
 0588           ;               }
 0588 26C0              xjmp L88
 058A           L87:
 058A                   .dbline 255
 058A           ;       //写锁定位
 058A           ;       else if (cmd==CMD_PROGRAM_LOCK_ISP) {
 058A 8E2D              mov R24,R14
 058C 8931              cpi R24,25
 058E 69F4              brne L100
 0590                   .dbline 255
 0590                   .dbline 257
 0590           ;               //write_lock_bits (msg_buffer[4]|0xC0);
 0590           ;               num_bytes = 3;
 0590 83E0              ldi R24,3
 0592 90E0              ldi R25,0
 0594 9F83              std y+7,R25
 0596 8E83              std y+6,R24
 0598                   .dbline 258
 0598           ;               msg_buffer[0] = CMD_PROGRAM_LOCK_ISP;
 0598 89E1              ldi R24,25
 059A 80930000          sts _msg_buffer,R24
 059E                   .dbline 259
 059E           ;               msg_buffer[1] = STATUS_CMD_OK;          
 059E 2224              clr R2
 05A0 20920100          sts _msg_buffer+1,R2
 05A4                   .dbline 260
 05A4           ;               msg_buffer[2] = STATUS_CMD_OK;
 05A4 20920200          sts _msg_buffer+2,R2
 05A8                   .dbline 261
 05A8           ;               }
 05A8 16C0              xjmp L101
 05AA           L100:
 05AA                   .dbline 263
 05AA           ;       //读锁定位
 05AA           ;       else if (cmd==CMD_READ_LOCK_ISP) {
 05AA 8E2D              mov R24,R14
 05AC 8A31              cpi R24,26
 05AE 99F4              brne L104
 05B0                   .dbline 263
 05B0                   .dbline 264
 05B0           ;               msg_buffer[2] = read_program_memory(0x0001,1);
 05B0 21E0              ldi R18,1
 05B2 01E0              ldi R16,1
 05B4 10E0              ldi R17,0
 05B6 0E940000          xcall _read_program_memory
 05BA 00930200          sts _msg_buffer+2,R16
 05BE                   .dbline 265
 05BE           ;               num_bytes = 4;
 05BE 84E0              ldi R24,4
 05C0 90E0              ldi R25,0
 05C2 9F83              std y+7,R25
 05C4 8E83              std y+6,R24
 05C6                   .dbline 266
 05C6           ;               msg_buffer[0] = CMD_READ_LOCK_ISP;
 05C6 8AE1              ldi R24,26
 05C8 80930000          sts _msg_buffer,R24
 05CC                   .dbline 267
 05CC           ;               msg_buffer[1] = STATUS_CMD_OK;
 05CC 2224              clr R2
 05CE 20920100          sts _msg_buffer+1,R2
 05D2                   .dbline 268
 05D2           ;               msg_buffer[3] = STATUS_CMD_OK;
 05D2 20920300          sts _msg_buffer+3,R2
 05D6                   .dbline 269
 05D6           ;               }
 05D6           L104:
 05D6           L101:
 05D6           L88:
 05D6           L80:
 05D6           L67:
 05D6           L64:
 05D6           L61:
 05D6           L58:
 05D6           L52:
 05D6           L39:
 05D6           L36:
 05D6           L30:
 05D6                   .dbline 271
 05D6           ;       //传送缓冲区数据
 05D6           ;       if (num_bytes>0) {              
 05D6 0E80              ldd R0,y+6
 05D8 1F80              ldd R1,y+7
 05DA 0020              tst R0
 05DC 19F4              brne X4
 05DE 1120              tst R1
 05E0 09F4              brne X9
 05E2 59C0              xjmp L109
 05E4           X9:
 05E4           X4:
 05E4                   .dbline 271
 05E4                   .dbline 272
 05E4           ;               putChar(MESSAGE_START);
 05E4 0BE1              ldi R16,27
 05E6 0E940000          xcall _putChar
 05EA                   .dbline 273
 05EA           ;               checkSum=MESSAGE_START;
 05EA 8BE1              ldi R24,27
 05EC 80930000          sts _checkSum,R24
 05F0                   .dbline 274
 05F0           ;               putChar(seqNum);
 05F0 0B89              ldd R16,y+19
 05F2 0E940000          xcall _putChar
 05F6                   .dbline 275
 05F6           ;               checkSum^=seqNum;
 05F6 20900000          lds R2,_checkSum
 05FA 0B88              ldd R0,y+19
 05FC 2024              eor R2,R0
 05FE 20920000          sts _checkSum,R2
 0602                   .dbline 276
 0602           ;               tmp=(num_bytes&0xFF00)>>8;
 0602 8E81              ldd R24,y+6
 0604 9F81              ldd R25,y+7
 0606 8070              andi R24,0
 0608 892F              mov R24,R25
 060A 9927              clr R25
 060C 8887              std y+8,R24
 060E                   .dbline 277
 060E           ;               putChar(tmp);
 060E 082F              mov R16,R24
 0610 0E940000          xcall _putChar
 0614                   .dbline 278
 0614           ;               checkSum^=tmp;
 0614 20900000          lds R2,_checkSum
 0618 0884              ldd R0,y+8
 061A 2024              eor R2,R0
 061C 20920000          sts _checkSum,R2
 0620                   .dbline 279
 0620           ;               tmp=num_bytes&0x00FF;
 0620 8E81              ldd R24,y+6
 0622 9F81              ldd R25,y+7
 0624 9070              andi R25,0
 0626 8887              std y+8,R24
 0628                   .dbline 280
 0628           ;               putChar(tmp);
 0628 082F              mov R16,R24
 062A 0E940000          xcall _putChar
 062E                   .dbline 281
 062E           ;               checkSum^=tmp;
 062E 20900000          lds R2,_checkSum
 0632 0884              ldd R0,y+8
 0634 2024              eor R2,R0
 0636 20920000          sts _checkSum,R2
 063A                   .dbline 282
 063A           ;               putChar(TOKEN);
 063A 0EE0              ldi R16,14
 063C 0E940000          xcall _putChar
 0640                   .dbline 283
 0640           ;               checkSum^=TOKEN;
 0640 8EE0              ldi R24,14
 0642 20900000          lds R2,_checkSum
 0646 2826              eor R2,R24
 0648 20920000          sts _checkSum,R2
 064C                   .dbline 284
 064C CC24              clr R12
 064E DD24              clr R13
 0650 16C0              xjmp L114
 0652           L111:
 0652                   .dbline 284
 0652                   .dbline 285
 0652 80E0              ldi R24,<_msg_buffer
 0654 90E0              ldi R25,>_msg_buffer
 0656 F601              movw R30,R12
 0658 E80F              add R30,R24
 065A F91F              adc R31,R25
 065C 0081              ldd R16,z+0
 065E 0E940000          xcall _putChar
 0662                   .dbline 286
 0662 80E0              ldi R24,<_msg_buffer
 0664 90E0              ldi R25,>_msg_buffer
 0666 F601              movw R30,R12
 0668 E80F              add R30,R24
 066A F91F              adc R31,R25
 066C 2080              ldd R2,z+0
 066E 30900000          lds R3,_checkSum
 0672 3224              eor R3,R2
 0674 30920000          sts _checkSum,R3
 0678                   .dbline 287
 0678           L112:
 0678                   .dbline 284
 0678 C601              movw R24,R12
 067A 0196              adiw R24,1
 067C 6C01              movw R12,R24
 067E           L114:
 067E                   .dbline 284
 067E 0E80              ldd R0,y+6
 0680 1F80              ldd R1,y+7
 0682 C014              cp R12,R0
 0684 D104              cpc R13,R1
 0686 28F3              brlo L111
 0688                   .dbline 288
 0688 00910000          lds R16,_checkSum
 068C 0E940000          xcall _putChar
 0690                   .dbline 289
 0690 2224              clr R2
 0692 20920000          sts _checkSum,R2
 0696                   .dbline 290
 0696           L109:
 0696                   .dbline -2
 0696           L28:
 0696 2996              adiw R28,9
 0698 0E940000          xcall pop_gset5
 069C 2296              adiw R28,2
 069E                   .dbline 0 ; func end
 069E 0895              ret
 06A0                   .dbsym r temp16 10 i
 06A0                   .dbsym l start_address 2 l
 06A0                   .dbsym r cmd 14 c
 06A0                   .dbsym l tmp 8 c
 06A0                   .dbsym l num_bytes 6 i
 06A0                   .dbsym r i 12 i
 06A0                   .dbsym l seqNum 19 c
 06A0                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile E:\ICCAVR\project\AVRMEG~3\icc\019-BOOT\main.c
 0000           L34:
 0000                   .blkb 9
                        .area idata
 0000 53544B3530305F3200        .byte 'S,'T,'K,53,48,48,95,50,0
                        .area data(ram, con, rel)
 0009                   .dbfile E:\ICCAVR\project\AVRMEG~3\icc\019-BOOT\main.c

⌨️ 快捷键说明

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