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

📄 older_m88.lss

📁 脱机ISP编程器
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     7f2:	8d dd       	rcall	.-1254   	; 0x30e <com_match>
     7f4:	04 c0       	rjmp	.+8      	; 0x7fe <com_process+0x52>
		com.rxcnt=0;
	}
	
	else
	{
		if (com.rxcnt>=RX_BUF_SIZE)com.rxcnt=0;
     7f6:	90 91 4b 02 	lds	r25, 0x024B
     7fa:	90 31       	cpi	r25, 0x10	; 16
     7fc:	18 f0       	brcs	.+6      	; 0x804 <com_process+0x58>
     7fe:	10 92 4b 02 	sts	0x024B, r1
     802:	08 95       	ret
		else
		{
			com.rxbuf[com.rxcnt++]=rxtmp;
     804:	e9 2f       	mov	r30, r25
     806:	f0 e0       	ldi	r31, 0x00	; 0
     808:	e5 5c       	subi	r30, 0xC5	; 197
     80a:	fd 4f       	sbci	r31, 0xFD	; 253
     80c:	80 83       	st	Z, r24
     80e:	9f 5f       	subi	r25, 0xFF	; 255
     810:	90 93 4b 02 	sts	0x024B, r25
			usart_tsmt(rxtmp);
     814:	bd d5       	rcall	.+2938   	; 0x1390 <usart_tsmt>
     816:	08 95       	ret

00000818 <exe_readfuse>:
		sendstr(msg_done);
	}
}

void exe_readfuse(void)
{
     818:	53 d4       	rcall	.+2214   	; 0x10c0 <read_fuse>
     81a:	88 23       	and	r24, r24
     81c:	19 f0       	breq	.+6      	; 0x824 <exe_readfuse+0xc>
     81e:	80 ee       	ldi	r24, 0xE0	; 224
     820:	91 e0       	ldi	r25, 0x01	; 1
     822:	05 c0       	rjmp	.+10     	; 0x82e <exe_readfuse+0x16>
	//pgm_sendstr(&instr_sheet[7].explain[0]);
	if (read_fuse()!=0)sendstr(msg_fail);
	else
	{
		sendstr(&fuse_ascii[0]);
     824:	8e ee       	ldi	r24, 0xEE	; 238
     826:	91 e0       	ldi	r25, 0x01	; 1
     828:	c6 d5       	rcall	.+2956   	; 0x13b6 <sendstr>
		sendstr(msg_done);
     82a:	86 ee       	ldi	r24, 0xE6	; 230
     82c:	91 e0       	ldi	r25, 0x01	; 1
     82e:	c3 d5       	rcall	.+2950   	; 0x13b6 <sendstr>
     830:	08 95       	ret

00000832 <exe_readid>:
{
	pgm_sendstr(&instr_sheet[5].explain[0]);
}*/

void exe_readid(void)
{
     832:	c3 d3       	rcall	.+1926   	; 0xfba <read_id>
     834:	88 23       	and	r24, r24
     836:	19 f0       	breq	.+6      	; 0x83e <exe_readid+0xc>
     838:	80 ee       	ldi	r24, 0xE0	; 224
     83a:	91 e0       	ldi	r25, 0x01	; 1
     83c:	05 c0       	rjmp	.+10     	; 0x848 <exe_readid+0x16>
	//pgm_sendstr(&instr_sheet[6].explain[0]);
	if (read_id()!=0)sendstr(msg_fail);
	else
	{
		sendstr(&chip_id_ascii[0]);
     83e:	87 ef       	ldi	r24, 0xF7	; 247
     840:	91 e0       	ldi	r25, 0x01	; 1
     842:	b9 d5       	rcall	.+2930   	; 0x13b6 <sendstr>
		sendstr(msg_done);
     844:	86 ee       	ldi	r24, 0xE6	; 230
     846:	91 e0       	ldi	r25, 0x01	; 1
     848:	b6 d5       	rcall	.+2924   	; 0x13b6 <sendstr>
     84a:	08 95       	ret

0000084c <exe_eraseavr>:
	if (reset_avr())sendstr(msg_fail);
	else sendstr(msg_done);
}

void exe_eraseavr(void)
{
     84c:	e4 d1       	rcall	.+968    	; 0xc16 <erase_chip>
     84e:	88 23       	and	r24, r24
     850:	19 f0       	breq	.+6      	; 0x858 <exe_eraseavr+0xc>
     852:	80 ee       	ldi	r24, 0xE0	; 224
     854:	91 e0       	ldi	r25, 0x01	; 1
     856:	02 c0       	rjmp	.+4      	; 0x85c <exe_eraseavr+0x10>
	//pgm_sendstr(&instr_sheet[4].explain[0]);
	if (erase_chip()!=0)sendstr(msg_fail);
	else sendstr(msg_done);
     858:	86 ee       	ldi	r24, 0xE6	; 230
     85a:	91 e0       	ldi	r25, 0x01	; 1
     85c:	ac d5       	rcall	.+2904   	; 0x13b6 <sendstr>
     85e:	08 95       	ret

00000860 <exe_progflash>:
	if (write_lockbit(avr_lockbit))sendstr(msg_fail);
	else sendstr(msg_done);
}

void exe_progflash(void)
{
     860:	df 92       	push	r13
     862:	ef 92       	push	r14
     864:	ff 92       	push	r15
     866:	0f 93       	push	r16
     868:	1f 93       	push	r17
     86a:	cf 93       	push	r28
     86c:	df 93       	push	r29
	if(error_flag==1)
     86e:	80 91 4f 02 	lds	r24, 0x024F
     872:	81 30       	cpi	r24, 0x01	; 1
     874:	29 f4       	brne	.+10     	; 0x880 <exe_progflash+0x20>
	{
		error_flag=0;
     876:	10 92 4f 02 	sts	0x024F, r1
		LED_2_ON();
     87a:	45 9a       	sbi	0x08, 5	; 8
		keylock=0;
     87c:	10 92 50 02 	sts	0x0250, r1
	}
	//pgm_sendstr(&instr_sheet[15].explain[0]);
	unsigned int flash_size=1;
	unsigned char tmp=3;
	eeprom_busy_wait();
     880:	f9 99       	sbic	0x1f, 1	; 31
     882:	fe cf       	rjmp	.-4      	; 0x880 <exe_progflash+0x20>
	
	tmp=eeprom_read_byte(SIZE_ADDRESS+section*2);
     884:	80 91 57 02 	lds	r24, 0x0257
/** \ingroup avr_eeprom
    Read one byte from EEPROM address \a __p.
 */
__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p)
{
    do {} while (!eeprom_is_ready ());
     888:	f9 99       	sbic	0x1f, 1	; 31
     88a:	fe cf       	rjmp	.-4      	; 0x888 <exe_progflash+0x28>
#if	E2END <= 0xFF
    EEARL = (unsigned)__p;
#else
    EEAR = (unsigned)__p;
     88c:	90 e0       	ldi	r25, 0x00	; 0
     88e:	88 0f       	add	r24, r24
     890:	99 1f       	adc	r25, r25
     892:	80 5c       	subi	r24, 0xC0	; 192
     894:	9f 4f       	sbci	r25, 0xFF	; 255
     896:	92 bd       	out	0x22, r25	; 34
     898:	81 bd       	out	0x21, r24	; 33
#endif
    EECR |= (1 << EERE);
     89a:	f8 9a       	sbi	0x1f, 0	; 31
    return EEDR;
     89c:	80 b5       	in	r24, 0x20	; 32
	
	unsigned char avr_page_size=2;
	
	if (tmp<=5)avr_page_size=1;
     89e:	86 30       	cpi	r24, 0x06	; 6
     8a0:	18 f0       	brcs	.+6      	; 0x8a8 <exe_progflash+0x48>
     8a2:	a2 e0       	ldi	r26, 0x02	; 2
     8a4:	da 2e       	mov	r13, r26
     8a6:	06 c0       	rjmp	.+12     	; 0x8b4 <exe_progflash+0x54>
	
	if (tmp<=3)avr_page_size=0;
     8a8:	84 30       	cpi	r24, 0x04	; 4
     8aa:	10 f4       	brcc	.+4      	; 0x8b0 <exe_progflash+0x50>
     8ac:	dd 24       	eor	r13, r13
     8ae:	02 c0       	rjmp	.+4      	; 0x8b4 <exe_progflash+0x54>
     8b0:	dd 24       	eor	r13, r13
     8b2:	d3 94       	inc	r13
     8b4:	f1 e0       	ldi	r31, 0x01	; 1
     8b6:	ef 2e       	mov	r14, r31
     8b8:	f1 2c       	mov	r15, r1
     8ba:	20 e0       	ldi	r18, 0x00	; 0
	
	for (unsigned char t1=0;t1<tmp+1;t1++)flash_size*=2;
     8bc:	48 2f       	mov	r20, r24
     8be:	50 e0       	ldi	r21, 0x00	; 0
     8c0:	03 c0       	rjmp	.+6      	; 0x8c8 <exe_progflash+0x68>
     8c2:	ee 0c       	add	r14, r14
     8c4:	ff 1c       	adc	r15, r15
     8c6:	2f 5f       	subi	r18, 0xFF	; 255
     8c8:	82 2f       	mov	r24, r18
     8ca:	90 e0       	ldi	r25, 0x00	; 0
     8cc:	48 17       	cp	r20, r24
     8ce:	59 07       	cpc	r21, r25
     8d0:	c4 f7       	brge	.-16     	; 0x8c2 <exe_progflash+0x62>
	
	keylock=1;
     8d2:	81 e0       	ldi	r24, 0x01	; 1
     8d4:	80 93 50 02 	sts	0x0250, r24
	
	cli();
     8d8:	f8 94       	cli
	
	sendstr("Erase Chip..");
     8da:	84 e7       	ldi	r24, 0x74	; 116
     8dc:	91 e0       	ldi	r25, 0x01	; 1
     8de:	6b d5       	rcall	.+2774   	; 0x13b6 <sendstr>
	
	exe_eraseavr();
     8e0:	b5 df       	rcall	.-150    	; 0x84c <exe_eraseavr>
	
	sendstr("Prog FLASH..");
     8e2:	81 e8       	ldi	r24, 0x81	; 129
     8e4:	91 e0       	ldi	r25, 0x01	; 1
     8e6:	67 d5       	rcall	.+2766   	; 0x13b6 <sendstr>
	
	ispConnect();
     8e8:	ab d0       	rcall	.+342    	; 0xa40 <ispConnect>
	
	if (ispEnterProgrammingMode())
     8ea:	d1 d0       	rcall	.+418    	; 0xa8e <ispEnterProgrammingMode>
     8ec:	88 23       	and	r24, r24
     8ee:	39 f0       	breq	.+14     	; 0x8fe <exe_progflash+0x9e>
	{
		sendstr(msg_fail);
     8f0:	80 ee       	ldi	r24, 0xE0	; 224
     8f2:	91 e0       	ldi	r25, 0x01	; 1
     8f4:	60 d5       	rcall	.+2752   	; 0x13b6 <sendstr>
		error_flag=1;
     8f6:	81 e0       	ldi	r24, 0x01	; 1
     8f8:	80 93 4f 02 	sts	0x024F, r24
     8fc:	35 c0       	rjmp	.+106    	; 0x968 <exe_progflash+0x108>
		//(*((void(*)(void))(0x0000UL)))();
	}
	
	else
	{
		LED_2_OFF();
     8fe:	45 98       	cbi	0x08, 5	; 8
     900:	c0 e0       	ldi	r28, 0x00	; 0
     902:	d0 e0       	ldi	r29, 0x00	; 0
     904:	26 c0       	rjmp	.+76     	; 0x952 <exe_progflash+0xf2>
		
		for (i=0;i<flash_size;i++)
		{
			static unsigned char led_flag=1;
			
			if (led_flag)
     906:	80 91 ed 01 	lds	r24, 0x01ED
     90a:	88 23       	and	r24, r24
     90c:	21 f0       	breq	.+8      	; 0x916 <exe_progflash+0xb6>
			{
				LED_1_ON();
     90e:	44 9a       	sbi	0x08, 4	; 8
				usart_tsmt(0x2e);
     910:	8e e2       	ldi	r24, 0x2E	; 46
     912:	3e d5       	rcall	.+2684   	; 0x1390 <usart_tsmt>
     914:	01 c0       	rjmp	.+2      	; 0x918 <exe_progflash+0xb8>
			}
			
			else LED_1_OFF();
     916:	44 98       	cbi	0x08, 4	; 8
			
			led_flag=!led_flag;
     918:	90 e0       	ldi	r25, 0x00	; 0
     91a:	80 91 ed 01 	lds	r24, 0x01ED
     91e:	88 23       	and	r24, r24
     920:	09 f4       	brne	.+2      	; 0x924 <exe_progflash+0xc4>
     922:	91 e0       	ldi	r25, 0x01	; 1
     924:	90 93 ed 01 	sts	0x01ED, r25
			
			DF_read_page(i+section*256);
     928:	10 91 57 02 	lds	r17, 0x0257
     92c:	00 e0       	ldi	r16, 0x00	; 0
     92e:	ce 01       	movw	r24, r28
     930:	80 0f       	add	r24, r16
     932:	91 1f       	adc	r25, r17
     934:	73 d7       	rcall	.+3814   	; 0x181c <DF_read_page>
			
			if (error_flag)
     936:	80 91 4f 02 	lds	r24, 0x024F
     93a:	88 23       	and	r24, r24
     93c:	21 f0       	breq	.+8      	; 0x946 <exe_progflash+0xe6>
			{
				sendstr(msg_fail);
     93e:	80 ee       	ldi	r24, 0xE0	; 224
     940:	91 e0       	ldi	r25, 0x01	; 1
     942:	39 d5       	rcall	.+2674   	; 0x13b6 <sendstr>
     944:	14 c0       	rjmp	.+40     	; 0x96e <exe_progflash+0x10e>
				return;
			}
			
			else pro_page_1by1(avr_page_size,i);
     946:	ae 01       	movw	r20, r28
     948:	60 e0       	ldi	r22, 0x00	; 0
     94a:	70 e0       	ldi	r23, 0x00	; 0
     94c:	8d 2d       	mov	r24, r13
     94e:	fe d1       	rcall	.+1020   	; 0xd4c <pro_page_1by1>
	{
		LED_2_OFF();
		
		unsigned int i;
		
		for (i=0;i<flash_size;i++)
     950:	21 96       	adiw	r28, 0x01	; 1
     952:	ce 15       	cp	r28, r14
     954:	df 05       	cpc	r29, r15
     956:	b8 f2       	brcs	.-82     	; 0x906 <exe_progflash+0xa6>
			}
			
			else pro_page_1by1(avr_page_size,i);
		}
		
		ispDisconnect();
     958:	8c d0       	rcall	.+280    	; 0xa72 <ispDisconnect>

		error_flag=0;
     95a:	10 92 4f 02 	sts	0x024F, r1
		keylock=0;
     95e:	10 92 50 02 	sts	0x0250, r1
		sendstr(msg_done);
     962:	86 ee       	ldi	r24, 0xE6	; 230
     964:	91 e0       	ldi	r25, 0x01	; 1
     966:	27 d5       	rcall	.+2638   	; 0x13b6 <sendstr>
		
	}
	LED_1_OFF();
     968:	44 98       	cbi	0x08, 4	; 8
	LED_2_ON();
     96a:	45 9a       	sbi	0x08, 5	; 8
	sei();
     96c:	78 94       	sei
	
}
     96e:	df 91       	pop	r29
     970:	cf 91       	pop	r28
     972:	1f 91       	pop	r17
     974:	0f 91       	pop	r16
     976:	ff 90       	pop	r15
     978:	ef 90       	pop	r14
     97a:	df 90       	pop	r13
     97c:	08 95       	ret

0000097e <exe_progchip>:
	
		
}

void exe_progchip(void)
{
     97e:	8e e8       	ldi	r24, 0x8E	; 142
     980:	91 e0       	ldi	r25, 0x01	; 1
     982:	19 d5       	rcall	.+2610   	; 0x13b6 <sendstr>
     984:	88 ee       	ldi	r24, 0xE8	; 232
     986:	93 e0       	ldi	r25, 0x03	; 3
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
     988:	28 ec       	ldi	r18, 0xC8	; 200
     98a:	30 e0       	ldi	r19, 0x00	; 0
     98c:	f9 01       	movw	r30, r18
     98e:	31 97       	sbiw	r30, 0x01	; 1
     990:	f1 f7       	brne	.-4      	; 0x98e <exe_progchip+0x10>
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
     992:	01 97       	sbiw	r24, 0x01	; 1
		__ticks = 1;
	else if (__tmp > 65535)
	{
		//	__ticks = requested delay in 1/10 ms
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
     994:	d9 f7       	brne	.-10   

⌨️ 快捷键说明

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