📄 older_m88.lss
字号:
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 + -