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

📄 19boot.lst

📁 ATEMEL AVR128 BOOT程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
    FB58 3184      CPI	R24,0x14
    FB59 F009      BEQ	0xFB5B
    FB5A C04A      RJMP	0xFBA5
(0228) 		for(i=0;i<READ_BLOCK_SIZE;i++) {
    FB5B 24CC      CLR	R12
    FB5C 24DD      CLR	R13
    FB5D C01D      RJMP	0xFB7B
(0229) 			msg_buffer[i+2] = read_program_memory (address+i,0x00);
    FB5E 2722      CLR	R18
    FB5F 0116      MOVW	R2,R12
    FB60 2444      CLR	R4
    FB61 2455      CLR	R5
    FB62 9080010C  LDS	R8,address+2
    FB64 9090010D  LDS	R9,address+3
    FB66 9060010A  LDS	R6,address
    FB68 9070010B  LDS	R7,address+1
    FB6A 0C62      ADD	R6,R2
    FB6B 1C73      ADC	R7,R3
    FB6C 1C84      ADC	R8,R4
    FB6D 1C95      ADC	R9,R5
    FB6E 0183      MOVW	R16,R6
    FB6F 940EF8A2  CALL	_read_program_memory
    FB71 E187      LDI	R24,0x17
    FB72 E091      LDI	R25,1
    FB73 01F6      MOVW	R30,R12
    FB74 9632      ADIW	R30,2
    FB75 0FE8      ADD	R30,R24
    FB76 1FF9      ADC	R31,R25
    FB77 8300      STD	Z+0,R16
    FB78 01C6      MOVW	R24,R12
    FB79 9601      ADIW	R24,1
    FB7A 016C      MOVW	R12,R24
    FB7B 01C6      MOVW	R24,R12
    FB7C 3080      CPI	R24,0
    FB7D E0E1      LDI	R30,1
    FB7E 079E      CPC	R25,R30
    FB7F F2F0      BCS	0xFB5E
(0230) 			}
(0231) 		address+=READ_BLOCK_SIZE;
    FB80 E040      LDI	R20,0
    FB81 E051      LDI	R21,1
    FB82 E060      LDI	R22,0
    FB83 E070      LDI	R23,0
    FB84 9040010C  LDS	R4,address+2
    FB86 9050010D  LDS	R5,address+3
    FB88 9020010A  LDS	R2,address
    FB8A 9030010B  LDS	R3,address+1
    FB8C 0E24      ADD	R2,R20
    FB8D 1E35      ADC	R3,R21
    FB8E 1E46      ADC	R4,R22
    FB8F 1E57      ADC	R5,R23
    FB90 9230010B  STS	address+1,R3
    FB92 9220010A  STS	address,R2
    FB94 9250010D  STS	address+3,R5
    FB96 9240010C  STS	address+2,R4
(0232) 		num_bytes = READ_BLOCK_SIZE + 3;
    FB98 E083      LDI	R24,3
    FB99 E091      LDI	R25,1
    FB9A 839F      STD	Y+7,R25
    FB9B 838E      STD	Y+6,R24
(0233) 		msg_buffer[0] = CMD_READ_FLASH_ISP;
    FB9C E184      LDI	R24,0x14
    FB9D 93800117  STS	msg_buffer,R24
(0234) 		msg_buffer[1] = STATUS_CMD_OK;
    FB9F 2422      CLR	R2
    FBA0 92200118  STS	msg_buffer+1,R2
(0235) 		msg_buffer[READ_BLOCK_SIZE + 2] = STATUS_CMD_OK;
    FBA2 92200219  STS	0x219,R2
(0236) 		}
    FBA4 C057      RJMP	0xFBFC
(0237) 	//读熔丝位
(0238) 	else if (cmd==CMD_READ_FUSE_ISP) {	
    FBA5 2D8E      MOV	R24,R14
    FBA6 3188      CPI	R24,0x18
    FBA7 F571      BNE	0xFBD6
(0239) 		switch(msg_buffer[2]) {
    FBA8 90A00119  LDS	R10,msg_buffer+2
    FBAA 24BB      CLR	R11
    FBAB 01C5      MOVW	R24,R10
    FBAC 3580      CPI	R24,0x50
    FBAD E0E0      LDI	R30,0
    FBAE 079E      CPC	R25,R30
    FBAF F051      BEQ	0xFBBA
    FBB0 3580      CPI	R24,0x50
    FBB1 E0E0      LDI	R30,0
    FBB2 079E      CPC	R25,R30
    FBB3 F0AC      BLT	0xFBC9
    FBB4 01C5      MOVW	R24,R10
    FBB5 3588      CPI	R24,0x58
    FBB6 E0E0      LDI	R30,0
    FBB7 079E      CPC	R25,R30
    FBB8 F049      BEQ	0xFBC2
    FBB9 C00F      RJMP	0xFBC9
(0240) 			case 0x50:
(0241) 				msg_buffer[2] =	read_program_memory(0x0000,1);			//读熔丝位
    FBBA E021      LDI	R18,1
    FBBB 2700      CLR	R16
    FBBC 2711      CLR	R17
    FBBD 940EF8A2  CALL	_read_program_memory
    FBBF 93000119  STS	msg_buffer+2,R16
(0242) 				break;
    FBC1 C007      RJMP	0xFBC9
(0243) 			case 0x58:	
(0244) 				msg_buffer[2] =	read_program_memory(0x0003,1);			//读高熔丝位
    FBC2 E021      LDI	R18,1
    FBC3 E003      LDI	R16,3
    FBC4 E010      LDI	R17,0
    FBC5 940EF8A2  CALL	_read_program_memory
    FBC7 93000119  STS	msg_buffer+2,R16
(0245) 				break;
(0246) 			default:
(0247) 				break;
(0248) 				}
(0249) 		num_bytes = 4;
    FBC9 E084      LDI	R24,4
    FBCA E090      LDI	R25,0
    FBCB 839F      STD	Y+7,R25
    FBCC 838E      STD	Y+6,R24
(0250) 		msg_buffer[0] = CMD_READ_FUSE_ISP;
    FBCD E188      LDI	R24,0x18
    FBCE 93800117  STS	msg_buffer,R24
(0251) 		msg_buffer[1] = STATUS_CMD_OK;
    FBD0 2422      CLR	R2
    FBD1 92200118  STS	msg_buffer+1,R2
(0252) 		msg_buffer[3] = STATUS_CMD_OK;
    FBD3 9220011A  STS	msg_buffer+3,R2
(0253) 		}
    FBD5 C026      RJMP	0xFBFC
(0254) 	//写锁定位
(0255) 	else if (cmd==CMD_PROGRAM_LOCK_ISP) {
    FBD6 2D8E      MOV	R24,R14
    FBD7 3189      CPI	R24,0x19
    FBD8 F469      BNE	0xFBE6
(0256) 		//write_lock_bits (msg_buffer[4]|0xC0);
(0257) 		num_bytes = 3;
    FBD9 E083      LDI	R24,3
    FBDA E090      LDI	R25,0
    FBDB 839F      STD	Y+7,R25
    FBDC 838E      STD	Y+6,R24
(0258) 		msg_buffer[0] = CMD_PROGRAM_LOCK_ISP;
    FBDD E189      LDI	R24,0x19
    FBDE 93800117  STS	msg_buffer,R24
(0259) 		msg_buffer[1] = STATUS_CMD_OK;		
    FBE0 2422      CLR	R2
    FBE1 92200118  STS	msg_buffer+1,R2
(0260) 		msg_buffer[2] = STATUS_CMD_OK;
    FBE3 92200119  STS	msg_buffer+2,R2
(0261) 		}
    FBE5 C016      RJMP	0xFBFC
(0262) 	//读锁定位
(0263) 	else if (cmd==CMD_READ_LOCK_ISP) {
    FBE6 2D8E      MOV	R24,R14
    FBE7 318A      CPI	R24,0x1A
    FBE8 F499      BNE	0xFBFC
(0264) 		msg_buffer[2] = read_program_memory(0x0001,1);
    FBE9 E021      LDI	R18,1
    FBEA E001      LDI	R16,1
    FBEB E010      LDI	R17,0
    FBEC 940EF8A2  CALL	_read_program_memory
    FBEE 93000119  STS	msg_buffer+2,R16
(0265) 		num_bytes = 4;
    FBF0 E084      LDI	R24,4
    FBF1 E090      LDI	R25,0
    FBF2 839F      STD	Y+7,R25
    FBF3 838E      STD	Y+6,R24
(0266) 		msg_buffer[0] = CMD_READ_LOCK_ISP;
    FBF4 E18A      LDI	R24,0x1A
    FBF5 93800117  STS	msg_buffer,R24
(0267) 		msg_buffer[1] = STATUS_CMD_OK;
    FBF7 2422      CLR	R2
    FBF8 92200118  STS	msg_buffer+1,R2
(0268) 		msg_buffer[3] = STATUS_CMD_OK;
    FBFA 9220011A  STS	msg_buffer+3,R2
(0269) 		}
(0270) 	//传送缓冲区数据
(0271) 	if (num_bytes>0) {		
    FBFC 800E      LDD	R0,Y+6
    FBFD 801F      LDD	R1,Y+7
    FBFE 2000      TST	R0
    FBFF F419      BNE	0xFC03
    FC00 2011      TST	R1
    FC01 F409      BNE	0xFC03
    FC02 C059      RJMP	0xFC5C
(0272) 		putChar(MESSAGE_START);
    FC03 E10B      LDI	R16,0x1B
    FC04 940EF8B9  CALL	_putChar
(0273) 		checkSum=MESSAGE_START;
    FC06 E18B      LDI	R24,0x1B
    FC07 93800115  STS	checkSum,R24
(0274) 		putChar(seqNum);
    FC09 890B      LDD	R16,Y+19
    FC0A 940EF8B9  CALL	_putChar
(0275) 		checkSum^=seqNum;
    FC0C 90200115  LDS	R2,checkSum
    FC0E 880B      LDD	R0,Y+19
    FC0F 2420      EOR	R2,R0
    FC10 92200115  STS	checkSum,R2
(0276) 		tmp=(num_bytes&0xFF00)>>8;
    FC12 818E      LDD	R24,Y+6
    FC13 819F      LDD	R25,Y+7
    FC14 7080      ANDI	R24,0
    FC15 2F89      MOV	R24,R25
    FC16 2799      CLR	R25
    FC17 8788      STD	Y+8,R24
(0277) 		putChar(tmp);
    FC18 2F08      MOV	R16,R24
    FC19 940EF8B9  CALL	_putChar
(0278) 		checkSum^=tmp;
    FC1B 90200115  LDS	R2,checkSum
    FC1D 8408      LDD	R0,Y+8
    FC1E 2420      EOR	R2,R0
    FC1F 92200115  STS	checkSum,R2
(0279) 		tmp=num_bytes&0x00FF;
    FC21 818E      LDD	R24,Y+6
    FC22 819F      LDD	R25,Y+7
    FC23 7090      ANDI	R25,0
    FC24 8788      STD	Y+8,R24
(0280) 		putChar(tmp);
    FC25 2F08      MOV	R16,R24
    FC26 940EF8B9  CALL	_putChar
(0281) 		checkSum^=tmp;
    FC28 90200115  LDS	R2,checkSum
    FC2A 8408      LDD	R0,Y+8
    FC2B 2420      EOR	R2,R0
    FC2C 92200115  STS	checkSum,R2
(0282) 		putChar(TOKEN);
    FC2E E00E      LDI	R16,0xE
    FC2F 940EF8B9  CALL	_putChar
(0283) 		checkSum^=TOKEN;
    FC31 E08E      LDI	R24,0xE
    FC32 90200115  LDS	R2,checkSum
    FC34 2628      EOR	R2,R24
    FC35 92200115  STS	checkSum,R2
(0284) 		for(i = 0; i < num_bytes; i++) {
    FC37 24CC      CLR	R12
    FC38 24DD      CLR	R13
    FC39 C016      RJMP	0xFC50
(0285) 			putChar(msg_buffer[i]);
    FC3A E187      LDI	R24,0x17
    FC3B E091      LDI	R25,1
    FC3C 01F6      MOVW	R30,R12
    FC3D 0FE8      ADD	R30,R24
    FC3E 1FF9      ADC	R31,R25
    FC3F 8100      LDD	R16,Z+0
    FC40 940EF8B9  CALL	_putChar
(0286) 			checkSum^=msg_buffer[i];
    FC42 E187      LDI	R24,0x17
    FC43 E091      LDI	R25,1
    FC44 01F6      MOVW	R30,R12
    FC45 0FE8      ADD	R30,R24
    FC46 1FF9      ADC	R31,R25
    FC47 8020      LDD	R2,Z+0
    FC48 90300115  LDS	R3,checkSum
    FC4A 2432      EOR	R3,R2
    FC4B 92300115  STS	checkSum,R3
    FC4D 01C6      MOVW	R24,R12
    FC4E 9601      ADIW	R24,1
    FC4F 016C      MOVW	R12,R24
    FC50 800E      LDD	R0,Y+6
    FC51 801F      LDD	R1,Y+7
    FC52 14C0      CP	R12,R0
    FC53 04D1      CPC	R13,R1
    FC54 F328      BCS	0xFC3A
(0287) 			}		
(0288) 		putChar(checkSum);
    FC55 91000115  LDS	R16,checkSum
    FC57 940EF8B9  CALL	_putChar
(0289) 		checkSum=0x00;
    FC59 2422      CLR	R2
    FC5A 92200115  STS	checkSum,R2
(0290) 		}
FILE: <library>
    FC5C 9629      ADIW	R28,0x9
    FC5D 940EFC74  CALL	pop_gset5
    FC5F 9622      ADIW	R28,2
    FC60 9508      RET
_memcpy:
    FC61 2FA0      MOV	R26,R16
    FC62 2FB1      MOV	R27,R17
    FC63 2FE2      MOV	R30,R18
    FC64 2FF3      MOV	R31,R19
    FC65 8188      LDD	R24,Y+0
    FC66 8199      LDD	R25,Y+1
    FC67 3080      CPI	R24,0
    FC68 0798      CPC	R25,R24
    FC69 C003      RJMP	0xFC6D
    FC6A 9001      LD	R0,Z+
    FC6B 920D      ST	R0,X+
    FC6C 9701      SBIW	R24,1
    FC6D F7E1      BNE	0xFC6A
    FC6E 9508      RET
push_arg4:
    FC6F 933A      ST	R19,-Y
    FC70 932A      ST	R18,-Y
push_arg2:
    FC71 931A      ST	R17,-Y
    FC72 930A      ST	R16,-Y
    FC73 9508      RET
pop_gset5:
    FC74 27EE      CLR	R30
    FC75 C00C      RJMP	pop
push_gset5:
    FC76 92FA      ST	R15,-Y
    FC77 92EA      ST	R14,-Y
push_gset4:
    FC78 92DA      ST	R13,-Y
    FC79 92CA      ST	R12,-Y
push_gset3:
    FC7A 92BA      ST	R11,-Y
    FC7B 92AA      ST	R10,-Y
push_gset2:
    FC7C 937A      ST	R23,-Y
    FC7D 936A      ST	R22,-Y
push_gset1:
    FC7E 935A      ST	R21,-Y
    FC7F 934A      ST	R20,-Y
    FC80 9508      RET
pop_gset1:
    FC81 E0E1      LDI	R30,1
pop:
    FC82 9149      LD	R20,Y+
    FC83 9159      LD	R21,Y+
    FC84 FDE0      SBRC	R30,0
    FC85 9508      RET
    FC86 9169      LD	R22,Y+
    FC87 9179      LD	R23,Y+
    FC88 FDE1      SBRC	R30,1
    FC89 9508      RET
    FC8A 90A9      LD	R10,Y+
    FC8B 90B9      LD	R11,Y+
    FC8C FDE2      SBRC	R30,2
    FC8D 9508      RET
    FC8E 90C9      LD	R12,Y+
    FC8F 90D9      LD	R13,Y+
    FC90 FDE3      SBRC	R30,3
    FC91 9508      RET
    FC92 90E9      LD	R14,Y+
    FC93 90F9      LD	R15,Y+
    FC94 9508      RET
lsl32:
    FC95 920F      PUSH	R0
    FC96 9009      LD	R0,Y+
    FC97 2000      TST	R0
    FC98 F031      BEQ	0xFC9F
    FC99 0F00      LSL	R16
    FC9A 1F11      ROL	R17
    FC9B 1F22      ROL	R18
    FC9C 1F33      ROL	R19
    FC9D 940A      DEC	R0
    FC9E CFF8      RJMP	0xFC97
    FC9F 900F      POP	R0
    FCA0 9508      RET

⌨️ 快捷键说明

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