older_m88.lss

来自「脱机ISP编程器」· LSS 代码 · 共 1,912 行 · 第 1/5 页

LSS
1,912
字号
    EEARL = (unsigned)__p;
#else
    EEAR = (unsigned)__p;
     646:	32 bd       	out	0x22, r19	; 34
     648:	21 bd       	out	0x21, r18	; 33
#endif
    EECR |= (1 << EERE);
     64a:	f8 9a       	sbi	0x1f, 0	; 31
    return EEDR;
     64c:	80 b5       	in	r24, 0x20	; 32
		hex2send(eeprom_read_byte(FUSE_ADDRESS+section*3));
     64e:	57 d6       	rcall	.+3246   	; 0x12fe <hex2send>
		eeprom_busy_wait();
     650:	f9 99       	sbic	0x1f, 1	; 31
     652:	fe cf       	rjmp	.-4      	; 0x650 <get_data+0xc4>
		hex2send(eeprom_read_byte(FUSE_ADDRESS+1+section*3));
     654:	90 91 57 02 	lds	r25, 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 ());
     658:	f9 99       	sbic	0x1f, 1	; 31
     65a:	fe cf       	rjmp	.-4      	; 0x658 <get_data+0xcc>
#if	E2END <= 0xFF
    EEARL = (unsigned)__p;
#else
    EEAR = (unsigned)__p;
     65c:	83 e0       	ldi	r24, 0x03	; 3
     65e:	98 9f       	mul	r25, r24
     660:	c0 01       	movw	r24, r0
     662:	11 24       	eor	r1, r1
     664:	01 96       	adiw	r24, 0x01	; 1
     666:	92 bd       	out	0x22, r25	; 34
     668:	81 bd       	out	0x21, r24	; 33
#endif
    EECR |= (1 << EERE);
     66a:	f8 9a       	sbi	0x1f, 0	; 31
    return EEDR;
     66c:	80 b5       	in	r24, 0x20	; 32
     66e:	47 d6       	rcall	.+3214   	; 0x12fe <hex2send>
		eeprom_busy_wait();
     670:	f9 99       	sbic	0x1f, 1	; 31
     672:	fe cf       	rjmp	.-4      	; 0x670 <get_data+0xe4>
		hex2send(eeprom_read_byte(FUSE_ADDRESS+2+section*3));
     674:	90 91 57 02 	lds	r25, 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 ());
     678:	f9 99       	sbic	0x1f, 1	; 31
     67a:	fe cf       	rjmp	.-4      	; 0x678 <get_data+0xec>
#if	E2END <= 0xFF
    EEARL = (unsigned)__p;
#else
    EEAR = (unsigned)__p;
     67c:	83 e0       	ldi	r24, 0x03	; 3
     67e:	98 9f       	mul	r25, r24
     680:	c0 01       	movw	r24, r0
     682:	11 24       	eor	r1, r1
     684:	02 96       	adiw	r24, 0x02	; 2
     686:	7e c0       	rjmp	.+252    	; 0x784 <get_data+0x1f8>
		sendstr(msg_done);
	}
	
	else if ((getlockbit_flag==1)&&(com.rxcnt==2))
     688:	80 91 39 02 	lds	r24, 0x0239
     68c:	81 30       	cpi	r24, 0x01	; 1
     68e:	11 f5       	brne	.+68     	; 0x6d4 <get_data+0x148>
     690:	80 91 4b 02 	lds	r24, 0x024B
     694:	82 30       	cpi	r24, 0x02	; 2
     696:	f1 f4       	brne	.+60     	; 0x6d4 <get_data+0x148>
	{
		avr_lockbit=ascii2hex(&com.rxbuf[0]);
     698:	8b e3       	ldi	r24, 0x3B	; 59
     69a:	92 e0       	ldi	r25, 0x02	; 2
     69c:	bc dd       	rcall	.-1160   	; 0x216 <ascii2hex>
     69e:	28 2f       	mov	r18, r24
     6a0:	80 93 dd 01 	sts	0x01DD, r24
		eeprom_busy_wait();
     6a4:	f9 99       	sbic	0x1f, 1	; 31
     6a6:	fe cf       	rjmp	.-4      	; 0x6a4 <get_data+0x118>
		eeprom_write_byte(LOCKBIT_ADDRESS+section,avr_lockbit);
     6a8:	80 91 57 02 	lds	r24, 0x0257
     6ac:	90 e0       	ldi	r25, 0x00	; 0
/** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());
     6ae:	f9 99       	sbic	0x1f, 1	; 31
     6b0:	fe cf       	rjmp	.-4      	; 0x6ae <get_data+0x122>

#if	defined(EEPM0) && defined(EEPM1)
    EECR = 0;		/* Set programming mode: erase and write.	*/
     6b2:	1f ba       	out	0x1f, r1	; 31
#endif

#if	E2END <= 0xFF
    EEARL = (unsigned)__p;
#else
    EEAR = (unsigned)__p;
     6b4:	c0 96       	adiw	r24, 0x30	; 48
     6b6:	92 bd       	out	0x22, r25	; 34
     6b8:	81 bd       	out	0x21, r24	; 33
     6ba:	c0 97       	sbiw	r24, 0x30	; 48
#endif
    EEDR = __value;
     6bc:	20 bd       	out	0x20, r18	; 32

    __asm__ __volatile__ (
     6be:	0f b6       	in	r0, 0x3f	; 63
     6c0:	f8 94       	cli
     6c2:	fa 9a       	sbi	0x1f, 2	; 31
     6c4:	f9 9a       	sbi	0x1f, 1	; 31
     6c6:	0f be       	out	0x3f, r0	; 63
		eeprom_busy_wait();
     6c8:	f9 99       	sbic	0x1f, 1	; 31
     6ca:	fe cf       	rjmp	.-4      	; 0x6c8 <get_data+0x13c>
/** \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 ());
     6cc:	f9 99       	sbic	0x1f, 1	; 31
     6ce:	fe cf       	rjmp	.-4      	; 0x6cc <get_data+0x140>
#if	E2END <= 0xFF
    EEARL = (unsigned)__p;
#else
    EEAR = (unsigned)__p;
     6d0:	c0 96       	adiw	r24, 0x30	; 48
     6d2:	58 c0       	rjmp	.+176    	; 0x784 <get_data+0x1f8>
		hex2send(eeprom_read_byte(LOCKBIT_ADDRESS+section));
		sendstr(msg_done);
	}
	
	else if ((getprogsize_flag==1)&&(com.rxcnt==5)&&(com.rxbuf[2]==0x20))
     6d4:	80 91 3a 02 	lds	r24, 0x023A
     6d8:	81 30       	cpi	r24, 0x01	; 1
     6da:	09 f0       	breq	.+2      	; 0x6de <get_data+0x152>
     6dc:	5b c0       	rjmp	.+182    	; 0x794 <get_data+0x208>
     6de:	80 91 4b 02 	lds	r24, 0x024B
     6e2:	85 30       	cpi	r24, 0x05	; 5
     6e4:	09 f0       	breq	.+2      	; 0x6e8 <get_data+0x15c>
     6e6:	56 c0       	rjmp	.+172    	; 0x794 <get_data+0x208>
     6e8:	80 91 3d 02 	lds	r24, 0x023D
     6ec:	80 32       	cpi	r24, 0x20	; 32
     6ee:	09 f0       	breq	.+2      	; 0x6f2 <get_data+0x166>
     6f0:	51 c0       	rjmp	.+162    	; 0x794 <get_data+0x208>
	{
		avr_size[0]=ascii2hex(&com.rxbuf[0]);
     6f2:	8b e3       	ldi	r24, 0x3B	; 59
     6f4:	92 e0       	ldi	r25, 0x02	; 2
     6f6:	8f dd       	rcall	.-1250   	; 0x216 <ascii2hex>
     6f8:	18 2f       	mov	r17, r24
     6fa:	80 93 de 01 	sts	0x01DE, r24
		avr_size[1]=ascii2hex(&com.rxbuf[3]);
     6fe:	8e e3       	ldi	r24, 0x3E	; 62
     700:	92 e0       	ldi	r25, 0x02	; 2
     702:	89 dd       	rcall	.-1262   	; 0x216 <ascii2hex>
     704:	28 2f       	mov	r18, r24
     706:	80 93 df 01 	sts	0x01DF, r24
		eeprom_busy_wait();
     70a:	f9 99       	sbic	0x1f, 1	; 31
     70c:	fe cf       	rjmp	.-4      	; 0x70a <get_data+0x17e>
		eeprom_write_byte(SIZE_ADDRESS+section*2,avr_size[0]);
     70e:	80 91 57 02 	lds	r24, 0x0257
     712:	90 e0       	ldi	r25, 0x00	; 0
     714:	88 0f       	add	r24, r24
     716:	99 1f       	adc	r25, r25
/** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());
     718:	f9 99       	sbic	0x1f, 1	; 31
     71a:	fe cf       	rjmp	.-4      	; 0x718 <get_data+0x18c>

#if	defined(EEPM0) && defined(EEPM1)
    EECR = 0;		/* Set programming mode: erase and write.	*/
     71c:	1f ba       	out	0x1f, r1	; 31
#endif

#if	E2END <= 0xFF
    EEARL = (unsigned)__p;
#else
    EEAR = (unsigned)__p;
     71e:	80 5c       	subi	r24, 0xC0	; 192
     720:	9f 4f       	sbci	r25, 0xFF	; 255
     722:	92 bd       	out	0x22, r25	; 34
     724:	81 bd       	out	0x21, r24	; 33
     726:	80 54       	subi	r24, 0x40	; 64
     728:	90 40       	sbci	r25, 0x00	; 0
#endif
    EEDR = __value;
     72a:	10 bd       	out	0x20, r17	; 32

    __asm__ __volatile__ (
     72c:	0f b6       	in	r0, 0x3f	; 63
     72e:	f8 94       	cli
     730:	fa 9a       	sbi	0x1f, 2	; 31
     732:	f9 9a       	sbi	0x1f, 1	; 31
     734:	0f be       	out	0x3f, r0	; 63
		eeprom_busy_wait();
     736:	f9 99       	sbic	0x1f, 1	; 31
     738:	fe cf       	rjmp	.-4      	; 0x736 <get_data+0x1aa>
/** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());
     73a:	f9 99       	sbic	0x1f, 1	; 31
     73c:	fe cf       	rjmp	.-4      	; 0x73a <get_data+0x1ae>

#if	defined(EEPM0) && defined(EEPM1)
    EECR = 0;		/* Set programming mode: erase and write.	*/
     73e:	1f ba       	out	0x1f, r1	; 31
#endif

#if	E2END <= 0xFF
    EEARL = (unsigned)__p;
#else
    EEAR = (unsigned)__p;
     740:	8f 5b       	subi	r24, 0xBF	; 191
     742:	9f 4f       	sbci	r25, 0xFF	; 255
     744:	92 bd       	out	0x22, r25	; 34
     746:	81 bd       	out	0x21, r24	; 33
     748:	81 54       	subi	r24, 0x41	; 65
     74a:	90 40       	sbci	r25, 0x00	; 0
#endif
    EEDR = __value;
     74c:	20 bd       	out	0x20, r18	; 32

    __asm__ __volatile__ (
     74e:	0f b6       	in	r0, 0x3f	; 63
     750:	f8 94       	cli
     752:	fa 9a       	sbi	0x1f, 2	; 31
     754:	f9 9a       	sbi	0x1f, 1	; 31
     756:	0f be       	out	0x3f, r0	; 63
		eeprom_write_byte(SIZE_ADDRESS+1+section*2,avr_size[1]);
		eeprom_busy_wait();
     758:	f9 99       	sbic	0x1f, 1	; 31
     75a:	fe cf       	rjmp	.-4      	; 0x758 <get_data+0x1cc>
/** \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 ());
     75c:	f9 99       	sbic	0x1f, 1	; 31
     75e:	fe cf       	rjmp	.-4      	; 0x75c <get_data+0x1d0>
#if	E2END <= 0xFF
    EEARL = (unsigned)__p;
#else
    EEAR = (unsigned)__p;
     760:	80 5c       	subi	r24, 0xC0	; 192
     762:	9f 4f       	sbci	r25, 0xFF	; 255
     764:	92 bd       	out	0x22, r25	; 34
     766:	81 bd       	out	0x21, r24	; 33
#endif
    EECR |= (1 << EERE);
     768:	f8 9a       	sbi	0x1f, 0	; 31
    return EEDR;
     76a:	80 b5       	in	r24, 0x20	; 32
		hex2send(eeprom_read_byte(SIZE_ADDRESS+section*2));
     76c:	c8 d5       	rcall	.+2960   	; 0x12fe <hex2send>
		eeprom_busy_wait();
     76e:	f9 99       	sbic	0x1f, 1	; 31
     770:	fe cf       	rjmp	.-4      	; 0x76e <get_data+0x1e2>
		hex2send(eeprom_read_byte(SIZE_ADDRESS+1+section*2));
     772:	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 ());
     776:	f9 99       	sbic	0x1f, 1	; 31
     778:	fe cf       	rjmp	.-4      	; 0x776 <get_data+0x1ea>
#if	E2END <= 0xFF
    EEARL = (unsigned)__p;
#else
    EEAR = (unsigned)__p;
     77a:	90 e0       	ldi	r25, 0x00	; 0
     77c:	88 0f       	add	r24, r24
     77e:	99 1f       	adc	r25, r25
     780:	8f 5b       	subi	r24, 0xBF	; 191
     782:	9f 4f       	sbci	r25, 0xFF	; 255
     784:	92 bd       	out	0x22, r25	; 34
     786:	81 bd       	out	0x21, r24	; 33
#endif
    EECR |= (1 << EERE);
     788:	f8 9a       	sbi	0x1f, 0	; 31
    return EEDR;
     78a:	80 b5       	in	r24, 0x20	; 32
     78c:	b8 d5       	rcall	.+2928   	; 0x12fe <hex2send>
		sendstr(msg_done);
     78e:	86 ee       	ldi	r24, 0xE6	; 230
     790:	91 e0       	ldi	r25, 0x01	; 1
     792:	02 c0       	rjmp	.+4      	; 0x798 <get_data+0x20c>
	}
	
	else
		sendstr("Invalid Value!");
     794:	85 e6       	ldi	r24, 0x65	; 101
     796:	91 e0       	ldi	r25, 0x01	; 1
     798:	0e d6       	rcall	.+3100   	; 0x13b6 <sendstr>
		
	getfuse_flag=0;
     79a:	10 92 38 02 	sts	0x0238, r1
	
	getlockbit_flag=0;
     79e:	10 92 39 02 	sts	0x0239, r1
	
	getprogsize_flag=0;
     7a2:	10 92 3a 02 	sts	0x023A, r1
}
     7a6:	1f 91       	pop	r17
     7a8:	0f 91       	pop	r16
     7aa:	08 95       	ret

000007ac <com_process>:

void com_process(unsigned char rxtmp)
{
     7ac:	88 30       	cpi	r24, 0x08	; 8
     7ae:	71 f4       	brne	.+28     	; 0x7cc <com_process+0x20>
	//unsigned char rxtmp;
	//rxtmp=usart_rcv();
	if (rxtmp==0x08)
	{
		if (com.rxcnt>0)
     7b0:	80 91 4b 02 	lds	r24, 0x024B
     7b4:	88 23       	and	r24, r24
     7b6:	79 f1       	breq	.+94     	; 0x816 <com_process+0x6a>
		{
			com.rxcnt--;
     7b8:	81 50       	subi	r24, 0x01	; 1
     7ba:	80 93 4b 02 	sts	0x024B, r24
			usart_tsmt(0x08);
     7be:	88 e0       	ldi	r24, 0x08	; 8
     7c0:	e7 d5       	rcall	.+3022   	; 0x1390 <usart_tsmt>
			usart_tsmt(0x20);
     7c2:	80 e2       	ldi	r24, 0x20	; 32
     7c4:	e5 d5       	rcall	.+3018   	; 0x1390 <usart_tsmt>
			usart_tsmt(0x08);
     7c6:	88 e0       	ldi	r24, 0x08	; 8
     7c8:	e3 d5       	rcall	.+3014   	; 0x1390 <usart_tsmt>
     7ca:	08 95       	ret
		}
	}
	
	else if (rxtmp==0x0d)
     7cc:	8d 30       	cpi	r24, 0x0D	; 13
     7ce:	99 f4       	brne	.+38     	; 0x7f6 <com_process+0x4a>
	{
		usart_tsmt(0x0d);
     7d0:	df d5       	rcall	.+3006   	; 0x1390 <usart_tsmt>
		usart_tsmt(0x0a);
     7d2:	8a e0       	ldi	r24, 0x0A	; 10
     7d4:	dd d5       	rcall	.+3002   	; 0x1390 <usart_tsmt>
		//command processing...
		
		if (getfuse_flag||getlockbit_flag||getprogsize_flag)get_data();
     7d6:	80 91 38 02 	lds	r24, 0x0238
     7da:	88 23       	and	r24, r24
     7dc:	41 f4       	brne	.+16     	; 0x7ee <com_process+0x42>
     7de:	80 91 39 02 	lds	r24, 0x0239
     7e2:	88 23       	and	r24, r24
     7e4:	21 f4       	brne	.+8      	; 0x7ee <com_process+0x42>
     7e6:	80 91 3a 02 	lds	r24, 0x023A
     7ea:	88 23       	and	r24, r24
     7ec:	11 f0       	breq	.+4      	; 0x7f2 <com_process+0x46>
     7ee:	ce de       	rcall	.-612    	; 0x58c <get_data>
     7f0:	06 c0       	rjmp	.+12     	; 0x7fe <com_process+0x52>
		else com_match();

⌨️ 快捷键说明

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