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

📄 main.lss

📁 这是用M16做的jtag与stk500(正确说应该是ISP)合二为一的
💻 LSS
📖 第 1 页 / 共 5 页
字号:
		
			delay_ms(rx_buf[9]);
		}
}
void cmdloadaddress(void)
{
    3116:	10 92 85 01 	sts	0x0185, r1
	tx_buf[messagesize1]=0;  		// set message length
	tx_buf[messagesize0]=2;
    311a:	82 e0       	ldi	r24, 0x02	; 2
    311c:	80 93 86 01 	sts	0x0186, r24

    address_eeprom = rx_buf[8]*256+rx_buf[9];				//set eeprom address
    3120:	20 91 78 00 	lds	r18, 0x0078
    3124:	33 27       	eor	r19, r19
    3126:	32 2f       	mov	r19, r18
    3128:	22 27       	eor	r18, r18
    312a:	60 91 79 00 	lds	r22, 0x0079
    312e:	c9 01       	movw	r24, r18
    3130:	86 0f       	add	r24, r22
    3132:	91 1d       	adc	r25, r1
    3134:	90 93 6d 00 	sts	0x006D, r25
    3138:	80 93 6c 00 	sts	0x006C, r24
    address_flash  = (rx_buf[7]*65536+rx_buf[8]*256+rx_buf[9])*2;			//set flash word address
    313c:	44 27       	eor	r20, r20
    313e:	37 fd       	sbrc	r19, 7
    3140:	40 95       	com	r20
    3142:	54 2f       	mov	r21, r20
    3144:	80 91 77 00 	lds	r24, 0x0077
    3148:	99 27       	eor	r25, r25
    314a:	aa 27       	eor	r26, r26
    314c:	bb 27       	eor	r27, r27
    314e:	dc 01       	movw	r26, r24
    3150:	99 27       	eor	r25, r25
    3152:	88 27       	eor	r24, r24
    3154:	86 0f       	add	r24, r22
    3156:	91 1d       	adc	r25, r1
    3158:	a1 1d       	adc	r26, r1
    315a:	b1 1d       	adc	r27, r1
    315c:	28 0f       	add	r18, r24
    315e:	39 1f       	adc	r19, r25
    3160:	4a 1f       	adc	r20, r26
    3162:	5b 1f       	adc	r21, r27
    3164:	22 0f       	add	r18, r18
    3166:	33 1f       	adc	r19, r19
    3168:	44 1f       	adc	r20, r20
    316a:	55 1f       	adc	r21, r21
    316c:	20 93 68 00 	sts	0x0068, r18
    3170:	30 93 69 00 	sts	0x0069, r19
    3174:	40 93 6a 00 	sts	0x006A, r20
    3178:	50 93 6b 00 	sts	0x006B, r21
	if(rx_buf[6]&0x80)
    317c:	80 91 76 00 	lds	r24, 0x0076
    3180:	87 ff       	sbrs	r24, 7
    3182:	03 c0       	rjmp	.+6      	; 0x318a <cmdloadaddress+0x74>
		extended_address=1;									//bit 31 is true so extended read should executed
    3184:	81 e0       	ldi	r24, 0x01	; 1
    3186:	80 93 6e 00 	sts	0x006E, r24
	
	tx_buf[5] = CMD_LOAD_ADDRESS;
    318a:	86 e0       	ldi	r24, 0x06	; 6
    318c:	80 93 88 01 	sts	0x0188, r24
	tx_buf[6] = STATUS_CMD_OK;
    3190:	10 92 89 01 	sts	0x0189, r1
    3194:	08 95       	ret

00003196 <cmdreadflashisp>:
	
}
void cmdreadflashisp(void)
{
    3196:	ff 92       	push	r15
    3198:	0f 93       	push	r16
    319a:	1f 93       	push	r17
    319c:	cf 93       	push	r28
    319e:	df 93       	push	r29
	int j,k;
	k=rx_buf[6]*256+rx_buf[7];
    31a0:	80 91 76 00 	lds	r24, 0x0076
    31a4:	99 27       	eor	r25, r25
    31a6:	f8 2f       	mov	r31, r24
    31a8:	ee 27       	eor	r30, r30
    31aa:	80 91 77 00 	lds	r24, 0x0077
    31ae:	e8 0f       	add	r30, r24
    31b0:	f1 1d       	adc	r31, r1
	
	j=k+3;	
    31b2:	9f 01       	movw	r18, r30
    31b4:	2d 5f       	subi	r18, 0xFD	; 253
    31b6:	3f 4f       	sbci	r19, 0xFF	; 255
	tx_buf[messagesize1]=(unsigned char) (j >> 8);  		// set message length
    31b8:	83 2f       	mov	r24, r19
    31ba:	99 27       	eor	r25, r25
    31bc:	87 fd       	sbrc	r24, 7
    31be:	9a 95       	dec	r25
    31c0:	80 93 85 01 	sts	0x0185, r24
	tx_buf[messagesize0]=(unsigned char) (j & 0xFF);
    31c4:	20 93 86 01 	sts	0x0186, r18

	tx_buf[5] = CMD_READ_FLASH_ISP;
    31c8:	84 e1       	ldi	r24, 0x14	; 20
    31ca:	80 93 88 01 	sts	0x0188, r24
	tx_buf[6] = STATUS_CMD_OK;
    31ce:	10 92 89 01 	sts	0x0189, r1
	
	if(extended_address)									//flash with large memory
    31d2:	80 91 6e 00 	lds	r24, 0x006E
    31d6:	88 23       	and	r24, r24
    31d8:	91 f4       	brne	.+36     	; 0x31fe <cmdreadflashisp+0x68>
	{
		spi(0x4d);
		spi(0);
		spi(address_flash>>16);
		spi(0);
	}

	
	for(j=0;j<k;j+=2)
	{
		spi(rx_buf[8]);
    31da:	00 91 78 00 	lds	r16, 0x0078
		spi(address_flash>>8);
		spi(address_flash);
		tx_buf[j+7]=spi(0xff);
	
		spi(rx_buf[8]|8);
    31de:	88 e0       	ldi	r24, 0x08	; 8
    31e0:	f8 2e       	mov	r15, r24
    31e2:	f0 2a       	or	r15, r16
    31e4:	20 91 68 00 	lds	r18, 0x0068
    31e8:	30 91 69 00 	lds	r19, 0x0069
    31ec:	40 91 6a 00 	lds	r20, 0x006A
    31f0:	50 91 6b 00 	lds	r21, 0x006B
    31f4:	60 e0       	ldi	r22, 0x00	; 0
    31f6:	70 e0       	ldi	r23, 0x00	; 0
    31f8:	c3 e8       	ldi	r28, 0x83	; 131
    31fa:	d1 e0       	ldi	r29, 0x01	; 1
    31fc:	4e c0       	rjmp	.+156    	; 0x329a <cmdreadflashisp+0x104>
		spi(address_flash>>8);
		spi(address_flash);
		tx_buf[j+8]=spi(0xff);
		
		address_flash++;
	}
	
	tx_buf[k+7] = STATUS_CMD_OK;
}

void cmdprogrameepromisp(void)
{
	tx_buf[messagesize1]=0;  		// set message length
	tx_buf[messagesize0]=2;

	tx_buf[5] = CMD_PROGRAM_EEPROM_ISP;
	tx_buf[6] = STATUS_CMD_OK;

	int a,b;
	unsigned char c,d;
	
	b=rx_buf[6]*256+rx_buf[7];								//eeprom nData bytes

	for(a=0;a<b;a++)
	{
		spi(0xa0);									//read eeprom if differ then write
		spi(address_eeprom>>8);
		spi(address_eeprom);
		c=spi(0xff);
		
		d=rx_buf[a+15]^c;
		if(d)
		{
			spi(rx_buf[10]);									//write Program Memory
			spi(address_eeprom>>8);
			spi(address_eeprom);
			spi(rx_buf[a+15]);

			delay_ms(rx_buf[9]);
		}
		address_eeprom++;
	}

}

void cmdreadeepromisp(void)
{
	int j,k;
	k=rx_buf[6]*256+rx_buf[7];
	
	j=k+3;	
	tx_buf[messagesize1]=(unsigned char) (j >> 8);  		// set message length
	tx_buf[messagesize0]=(unsigned char) (j & 0xFF);

	tx_buf[5] = CMD_READ_EEPROM_ISP;
	tx_buf[6] = STATUS_CMD_OK;
	
	k=rx_buf[6]*256+rx_buf[7];
	for(j=0;j<k;j++)
	{
		spi(rx_buf[8]);
		spi(address_eeprom>>8);
		spi(address_eeprom);
		tx_buf[j+7]=spi(0xff);

		address_eeprom++;
	}
	tx_buf[k+7] = STATUS_CMD_OK;
}

void cmdosccal(void)
{
	tx_buf[messagesize1]=0;  		// set message length
	tx_buf[messagesize0]=2;

	tx_buf[5] = CMD_OSCCAL;
	tx_buf[6] = STATUS_CMD_OK;
}
void delay_ms(int time)
{
	while(time--)
		_delay_ms(1);
}

char spi(char data)
{

	SPDR = data;
    31fe:	8d e4       	ldi	r24, 0x4D	; 77
    3200:	8f b9       	out	0x0f, r24	; 15
	/* Wait for transmission complete */
	/* Wait for reception complete */
	while(!(SPSR & (1<<SPIF)));
    3202:	77 9b       	sbis	0x0e, 7	; 14
    3204:	fe cf       	rjmp	.-4      	; 0x3202 <cmdreadflashisp+0x6c>
	/* Return data register */
	return SPDR;
    3206:	8f b1       	in	r24, 0x0f	; 15
    3208:	1f b8       	out	0x0f, r1	; 15
    320a:	77 9b       	sbis	0x0e, 7	; 14
    320c:	fe cf       	rjmp	.-4      	; 0x320a <cmdreadflashisp+0x74>
    320e:	8f b1       	in	r24, 0x0f	; 15
    3210:	80 91 68 00 	lds	r24, 0x0068
    3214:	90 91 69 00 	lds	r25, 0x0069
    3218:	a0 91 6a 00 	lds	r26, 0x006A
    321c:	b0 91 6b 00 	lds	r27, 0x006B
    3220:	cd 01       	movw	r24, r26
    3222:	aa 27       	eor	r26, r26
    3224:	bb 27       	eor	r27, r27
    3226:	8f b9       	out	0x0f, r24	; 15
    3228:	77 9b       	sbis	0x0e, 7	; 14
    322a:	fe cf       	rjmp	.-4      	; 0x3228 <cmdreadflashisp+0x92>
    322c:	8f b1       	in	r24, 0x0f	; 15
    322e:	1f b8       	out	0x0f, r1	; 15
    3230:	77 9b       	sbis	0x0e, 7	; 14
    3232:	fe cf       	rjmp	.-4      	; 0x3230 <cmdreadflashisp+0x9a>
    3234:	8f b1       	in	r24, 0x0f	; 15
    3236:	d1 cf       	rjmp	.-94     	; 0x31da <cmdreadflashisp+0x44>
    3238:	0f b9       	out	0x0f, r16	; 15
    323a:	77 9b       	sbis	0x0e, 7	; 14
    323c:	fe cf       	rjmp	.-4      	; 0x323a <cmdreadflashisp+0xa4>
    323e:	8f b1       	in	r24, 0x0f	; 15
    3240:	bb 27       	eor	r27, r27
    3242:	a5 2f       	mov	r26, r21
    3244:	94 2f       	mov	r25, r20
    3246:	83 2f       	mov	r24, r19
    3248:	18 2f       	mov	r17, r24
    324a:	8f b9       	out	0x0f, r24	; 15
    324c:	77 9b       	sbis	0x0e, 7	; 14
    324e:	fe cf       	rjmp	.-4      	; 0x324c <cmdreadflashisp+0xb6>
    3250:	8f b1       	in	r24, 0x0f	; 15
    3252:	92 2f       	mov	r25, r18
    3254:	2f b9       	out	0x0f, r18	; 15
    3256:	77 9b       	sbis	0x0e, 7	; 14
    3258:	fe cf       	rjmp	.-4      	; 0x3256 <cmdreadflashisp+0xc0>
    325a:	8f b1       	in	r24, 0x0f	; 15
    325c:	8f ef       	ldi	r24, 0xFF	; 255
    325e:	8f b9       	out	0x0f, r24	; 15
    3260:	77 9b       	sbis	0x0e, 7	; 14
    3262:	fe cf       	rjmp	.-4      	; 0x3260 <cmdreadflashisp+0xca>
    3264:	8f b1       	in	r24, 0x0f	; 15
    3266:	8f 83       	std	Y+7, r24	; 0x07
    3268:	ff b8       	out	0x0f, r15	; 15
    326a:	77 9b       	sbis	0x0e, 7	; 14
    326c:	fe cf       	rjmp	.-4      	; 0x326a <cmdreadflashisp+0xd4>
    326e:	8f b1       	in	r24, 0x0f	; 15
    3270:	1f b9       	out	0x0f, r17	; 15
    3272:	77 9b       	sbis	0x0e, 7	; 14
    3274:	fe cf       	rjmp	.-4      	; 0x3272 <cmdreadflashisp+0xdc>
    3276:	8f b1       	in	r24, 0x0f	; 15
    3278:	9f b9       	out	0x0f, r25	; 15
    327a:	77 9b       	sbis	0x0e, 7	; 14
    327c:	fe cf       	rjmp	.-4      	; 0x327a <cmdreadflashisp+0xe4>
    327e:	8f b1       	in	r24, 0x0f	; 15
    3280:	8f ef       	ldi	r24, 0xFF	; 255
    3282:	8f b9       	out	0x0f, r24	; 15
    3284:	77 9b       	sbis	0x0e, 7	; 14
    3286:	fe cf       	rjmp	.-4      	; 0x3284 <cmdreadflashisp+0xee>
    3288:	8f b1       	in	r24, 0x0f	; 15
    328a:	88 87       	std	Y+8, r24	; 0x08
    328c:	6e 5f       	subi	r22, 0xFE	; 254
    328e:	7f 4f       	sbci	r23, 0xFF	; 255
    3290:	2f 5f       	subi	r18, 0xFF	; 255
    3292:	3f 4f       	sbci	r19, 0xFF	; 255
    3294:	4f 4f       	sbci	r20, 0xFF	; 255
    3296:	5f 4f       	sbci	r21, 0xFF	; 255
    3298:	22 96       	adiw	r28, 0x02	; 2
    329a:	6e 17       	cp	r22, r30
    329c:	7f 07       	cpc	r23, r31
    329e:	64 f2       	brlt	.-104    	; 0x3238 <cmdreadflashisp+0xa2>
    32a0:	20 93 68 00 	sts	0x0068, r18
    32a4:	30 93 69 00 	sts	0x0069, r19
    32a8:	40 93 6a 00 	sts	0x006A, r20
    32ac:	50 93 6b 00 	sts	0x006B, r21
    32b0:	ed 57       	subi	r30, 0x7D	; 125
    32b2:	fe 4f       	sbci	r31, 0xFE	; 254
    32b4:	17 82       	std	Z+7, r1	; 0x07
    32b6:	df 91       	pop	r29
    32b8:	cf 91       	pop	r28
    32ba:	1f 91       	pop	r17
    32bc:	0f 91       	pop	r16
    32be:	ff 90       	pop	r15
    32c0:	08 95       	ret

000032c2 <cmdreadeepromisp>:
    32c2:	80 91 76 00 	lds	r24, 0x0076
    32c6:	99 27       	eor	r25, r25
    32c8:	f8 2f       	mov	r31, r24
    32ca:	ee 27       	eor	r30, r30
    32cc:	80 91 77 00 	lds	r24, 0x0077
    32d0:	e8 0f       	add	r30, r24
    32d2:	f1 1d       	adc	r31, r1
    32d4:	9f 01       	movw	r18, r30
    32d6:	2d 5f       	subi	r18, 0xFD	; 253
    32d8:	3f 4f       	sbci	r19, 0xFF	; 255
    32da:	83 2f       	mov	r24, r19
    32dc:	99 27       	eor	r25, r25
    32de:	87 fd       	sbrc	r24, 7
    32e0:	9a 95       	dec	r25
    32e2:	80 93 85 01 	sts	0x0185, r24
    32e6:	20 93 86 01 	sts	0x0186, r18
    32ea:	86 e1       	ldi	r24, 0x16	; 22
    32ec:	80 93 88 01 	sts	0x0188, r24
    32f0:	10 92 89 01 	sts	0x0189, r1
    32f4:	60 91 78 00 	lds	r22, 0x0078
    32f8:	20 91 6c 00 	lds	r18, 0x006C
    32fc:	30 91 6d 00 	lds	r19, 0x006D
    3300:	40 e0       	ldi	r20, 0x00	; 0
    3302:	50 e0       	ldi	r21, 0x00	; 0
    3304:	aa e8       	ldi	r26, 0x8A	; 138
    3306:	b1 e0       	ldi	r27, 0x01	; 1
    3308:	7f ef       	ldi	r23, 0xFF	; 255
    330a:	17 c0       	rjmp	.+46     	; 0x333a <cmdreadeepromisp+0x78>
    330c:	6f b9       	out	0x0f, r22	; 15
    330e:	77 9b       	sbis	0x0e, 7	; 14
    3310:	fe cf       	rjmp	.-4      	; 0x330e <cmdreadeepromisp+0x4c>
    3312:	8f b1       	in	r24, 0x0f	; 15
    3314:	83 2f       	mov	r24, r19
    3316:	99 27       	eor	r25, r25
    3318:	8f b9       	out	0x0f, r24	; 15
    331a:	77 9b       	sbis	0x0e, 7	; 14
    331c:	fe cf       	rjmp	.-4      	; 0x331a <cmdreadeepromisp+0x58>
    331e:	8f b1       	in	r24, 0x0f	; 15
    3320:	2f b9       	out	0x0f, r18	; 15
    3322:	77 9b       	sbis	0x0e, 7	; 14
    3324:	fe cf       	rjmp	.-4      	; 0x3322 <cmdreadeepromisp+0x60>
    3326:	8f b1       	in	r24, 0x0f	; 15
    3328:	7f b9       	out	0x0f, r23	; 15
    332a:	77 9b       	sbis	0x0e, 7	; 14
    332c:	fe cf       	rjmp	.-4      	; 0x332a <cmdreadeepromisp+0x68>
    332e:	8f b1       	in	r24, 0x0f	; 15
    3330:	8d 93       	st	X+, r24
    3332:	4f 5f       	subi	r20, 0xFF	; 255
    3334:	5f 4f       	sbci	r21, 0xFF	; 255

⌨️ 快捷键说明

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