📄 main.lis
字号:
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 + -