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 + -
显示快捷键?