?? main.lis
字號:
0282 .dbline 202
0282 ; num_bytes = 2;
0282 82E0 ldi R24,2
0284 90E0 ldi R25,0
0286 9F83 std y+7,R25
0288 8E83 std y+6,R24
028A .dbline 203
028A ; msg_buffer[0] = CMD_LOAD_ADDRESS;
028A 86E0 ldi R24,6
028C 80930D00 sts _msg_buffer,R24
0290 .dbline 204
0290 ; msg_buffer[1] = STATUS_CMD_OK;
0290 2224 clr R2
0292 20920E00 sts _msg_buffer+1,R2
0296 .dbline 205
0296 ; }
0296 0EC1 xjmp L52
0298 L51:
0298 .dbline 207
0298 ; //CMD_CHIP_ERASE_ISP
0298 ; else if(cmd==CMD_CHIP_ERASE_ISP)
0298 8E2D mov R24,R14
029A 8231 cpi R24,18
029C 59F4 brne L56
029E .dbline 208
029E ; {
029E .dbline 209
029E ; num_bytes = 2;
029E 82E0 ldi R24,2
02A0 90E0 ldi R25,0
02A2 9F83 std y+7,R25
02A4 8E83 std y+6,R24
02A6 .dbline 210
02A6 ; msg_buffer[0] = CMD_CHIP_ERASE_ISP;
02A6 82E1 ldi R24,18
02A8 80930D00 sts _msg_buffer,R24
02AC .dbline 211
02AC ; msg_buffer[1] = STATUS_CMD_OK;
02AC 2224 clr R2
02AE 20920E00 sts _msg_buffer+1,R2
02B2 .dbline 212
02B2 ; }
02B2 00C1 xjmp L57
02B4 L56:
02B4 .dbline 214
02B4 ; //命令CMD_ENTER_PROGMODE_ISP
02B4 ; else if(cmd == CMD_ENTER_PROGMODE_ISP)
02B4 8E2D mov R24,R14
02B6 8031 cpi R24,16
02B8 59F4 brne L59
02BA .dbline 215
02BA ; {
02BA .dbline 216
02BA ; num_bytes = 2;
02BA 82E0 ldi R24,2
02BC 90E0 ldi R25,0
02BE 9F83 std y+7,R25
02C0 8E83 std y+6,R24
02C2 .dbline 217
02C2 ; msg_buffer[0] = CMD_ENTER_PROGMODE_ISP;
02C2 80E1 ldi R24,16
02C4 80930D00 sts _msg_buffer,R24
02C8 .dbline 218
02C8 ; msg_buffer[1] = STATUS_CMD_OK;
02C8 2224 clr R2
02CA 20920E00 sts _msg_buffer+1,R2
02CE .dbline 219
02CE ; }
02CE F2C0 xjmp L60
02D0 L59:
02D0 .dbline 221
02D0 ; //命令 CMD_LEAVE_PROGMODE_ISP
02D0 ; else if(cmd==CMD_LEAVE_PROGMODE_ISP)
02D0 8E2D mov R24,R14
02D2 8131 cpi R24,17
02D4 91F4 brne L62
02D6 .dbline 222
02D6 ; {
02D6 .dbline 223
02D6 ; num_bytes = 2;
02D6 82E0 ldi R24,2
02D8 90E0 ldi R25,0
02DA 9F83 std y+7,R25
02DC 8E83 std y+6,R24
02DE .dbline 224
02DE ; msg_buffer[0] = CMD_LEAVE_PROGMODE_ISP;
02DE 81E1 ldi R24,17
02E0 80930D00 sts _msg_buffer,R24
02E4 .dbline 225
02E4 ; msg_buffer[1] = STATUS_CMD_OK;
02E4 2224 clr R2
02E6 20920E00 sts _msg_buffer+1,R2
02EA .dbline 227
02EA ;
02EA ; flag = 0;
02EA 20920000 sts _flag,R2
02EE .dbline 228
02EE ; TCNT1 = 0x2d11;
02EE 9DE2 ldi R25,45
02F0 9DBD out 0x2d,R25
02F2 8CBD out 0x2c,R24
02F4 .dbline 229
02F4 ; TCCR1B = 0x05;
02F4 85E0 ldi R24,5
02F6 8EBD out 0x2e,R24
02F8 .dbline 230
02F8 ; }
02F8 DDC0 xjmp L63
02FA L62:
02FA .dbline 232
02FA ; //命令CMD_PROGRAM_FLASH_ISP
02FA ; else if(cmd==CMD_PROGRAM_FLASH_ISP)
02FA 8E2D mov R24,R14
02FC 8331 cpi R24,19
02FE 09F0 breq X5
0300 48C0 xjmp L65
0302 X5:
0302 .dbline 233
0302 ; {
0302 .dbline 235
0302 ; uint16 temp16;
0302 ; boot_page_ew(address,0x03); //擦除頁
0302 23E0 ldi R18,3
0304 00910200 lds R16,_address
0308 10910300 lds R17,_address+1
030C 0E940000 xcall _boot_page_ew
0310 .dbline 236
0310 ; wait_page_rw_ok(); //等待擦除完成
0310 0E940000 xcall _wait_page_rw_ok
0314 .dbline 237
0314 ; for(i=0;i<(SPM_PAGESIZE<<1);i+=2) //將數據填入Flash緩沖頁中
0314 CC24 clr R12
0316 DD24 clr R13
0318 19C0 xjmp L70
031A L67:
031A .dbline 238
031A .dbline 239
031A 80E0 ldi R24,<_msg_buffer
031C 90E0 ldi R25,>_msg_buffer
031E F601 movw R30,R12
0320 3B96 adiw R30,11
0322 E80F add R30,R24
0324 F91F adc R31,R25
0326 A080 ldd R10,z+0
0328 BB24 clr R11
032A .dbline 240
032A BA2C mov R11,R10
032C AA24 clr R10
032E .dbline 241
032E F601 movw R30,R12
0330 3A96 adiw R30,10
0332 E80F add R30,R24
0334 F91F adc R31,R25
0336 2080 ldd R2,z+0
0338 3324 clr R3
033A A20C add R10,R2
033C B31C adc R11,R3
033E .dbline 242
033E 9501 movw R18,R10
0340 8601 movw R16,R12
0342 0E940000 xcall _boot_page_fill
0346 .dbline 243
0346 L68:
0346 .dbline 237
0346 C601 movw R24,R12
0348 0296 adiw R24,2
034A 6C01 movw R12,R24
034C L70:
034C .dbline 237
034C C601 movw R24,R12
034E 8038 cpi R24,128
0350 E0E0 ldi R30,0
0352 9E07 cpc R25,R30
0354 10F3 brlo L67
0356 .dbline 244
0356 ; {
0356 ; temp16=msg_buffer[i+11];
0356 ; temp16<<=8;
0356 ; temp16+=msg_buffer[i+10];
0356 ; boot_page_fill(i,temp16);
0356 ; }
0356 25E0 ldi R18,5
0358 00910200 lds R16,_address
035C 10910300 lds R17,_address+1
0360 0E940000 xcall _boot_page_ew
0364 .dbline 245
0364 ; wait_page_rw_ok(); //等待寫入完成
0364 0E940000 xcall _wait_page_rw_ok
0368 .dbline 246
0368 ; address+=(SPM_PAGESIZE<<1);
0368 80910200 lds R24,_address
036C 90910300 lds R25,_address+1
0370 8058 subi R24,128 ; offset = 128
0372 9F4F sbci R25,255
0374 90930300 sts _address+1,R25
0378 80930200 sts _address,R24
037C .dbline 247
037C ; num_bytes = 2;
037C 82E0 ldi R24,2
037E 90E0 ldi R25,0
0380 9F83 std y+7,R25
0382 8E83 std y+6,R24
0384 .dbline 248
0384 ; msg_buffer[0] = CMD_PROGRAM_FLASH_ISP;
0384 83E1 ldi R24,19
0386 80930D00 sts _msg_buffer,R24
038A .dbline 249
038A ; msg_buffer[1] = STATUS_CMD_OK;
038A 2224 clr R2
038C 20920E00 sts _msg_buffer+1,R2
0390 .dbline 250
0390 ; }
0390 91C0 xjmp L66
0392 L65:
0392 .dbline 252
0392 ; //命令CMD_READ_FLASH_ISP
0392 ; else if(cmd==CMD_READ_FLASH_ISP)
0392 8E2D mov R24,R14
0394 8431 cpi R24,20
0396 91F5 brne L72
0398 .dbline 253
0398 ; {
0398 .dbline 254
0398 ; for(i=0;i<(SPM_PAGESIZE<<2);i++)
0398 CC24 clr R12
039A DD24 clr R13
039C 13C0 xjmp L77
039E L74:
039E .dbline 255
039E .dbline 256
039E 2227 clr R18
03A0 00910200 lds R16,_address
03A4 10910300 lds R17,_address+1
03A8 0C0D add R16,R12
03AA 1D1D adc R17,R13
03AC 0E940000 xcall _read_program_memory
03B0 80E0 ldi R24,<_msg_buffer
03B2 90E0 ldi R25,>_msg_buffer
03B4 F601 movw R30,R12
03B6 3296 adiw R30,2
03B8 E80F add R30,R24
03BA F91F adc R31,R25
03BC 0083 std z+0,R16
03BE .dbline 257
03BE L75:
03BE .dbline 254
03BE C601 movw R24,R12
03C0 0196 adiw R24,1
03C2 6C01 movw R12,R24
03C4 L77:
03C4 .dbline 254
03C4 C601 movw R24,R12
03C6 8030 cpi R24,0
03C8 E1E0 ldi R30,1
03CA 9E07 cpc R25,R30
03CC 40F3 brlo L74
03CE .dbline 258
03CE ; {
03CE ; msg_buffer[i+2] = read_program_memory (address+i,0x00);
03CE ; }
03CE ; address+=SPM_PAGESIZE<<2;
03CE 80910200 lds R24,_address
03D2 90910300 lds R25,_address+1
03D6 8050 subi R24,0 ; offset = 256
03D8 9F4F sbci R25,255
03DA 90930300 sts _address+1,R25
03DE 80930200 sts _address,R24
03E2 .dbline 259
03E2 ; num_bytes = (SPM_PAGESIZE<<2)+3;
03E2 83E0 ldi R24,259
03E4 91E0 ldi R25,1
03E6 9F83 std y+7,R25
03E8 8E83 std y+6,R24
03EA .dbline 260
03EA ; msg_buffer[0] = CMD_READ_FLASH_ISP;
03EA 84E1 ldi R24,20
03EC 80930D00 sts _msg_buffer,R24
03F0 .dbline 261
03F0 ; msg_buffer[1] = STATUS_CMD_OK;
03F0 2224 clr R2
03F2 20920E00 sts _msg_buffer+1,R2
03F6 .dbline 262
03F6 ; msg_buffer[(SPM_PAGESIZE<<2)+2] = STATUS_CMD_OK;
03F6 20920F01 sts _msg_buffer+258,R2
03FA .dbline 263
03FA ; }
03FA 5CC0 xjmp L73
03FC L72:
03FC .dbline 265
03FC ; //命令CMD_READ_FUSE_ISP
03FC ; else if(cmd==CMD_READ_FUSE_ISP)
03FC 8E2D mov R24,R14
03FE 8831 cpi R24,24
0400 71F5 brne L80
0402 .dbline 266
0402 ; {
0402 .dbline 267
0402 ; switch(msg_buffer[2])
0402 A0900F00 lds R10,_msg_buffer+2
0406 BB24 clr R11
0408 C501 movw R24,R10
040A 8035 cpi R24,80
040C E0E0 ldi R30,0
040E 9E07 cpc R25,R30
0410 51F0 breq L86
0412 8035 cpi R24,80
0414 E0E0 ldi R30,0
0416 9E07 cpc R25,R30
0418 ACF0 brlt L83
041A L90:
041A C501 movw R24,R10
041C 8835 cpi R24,88
041E E0E0 ldi R30,0
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -