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

📄 main.lss

📁 这是基于ATmegA48的串口测试小程序 方便实用 功能强大
💻 LSS
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000000  00800100  0000015e  000001f2  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         0000015e  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          00000002  00800100  00800100  000001f2  2**0
                  ALLOC
  3 .noinit       00000000  00800102  00800102  000001f2  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000001f2  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  000001f4  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  00000560  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  000005e4  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 0000008a  00000000  00000000  000005f8  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000166  00000000  00000000  00000682  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 00000094  00000000  00000000  000007e8  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   000001e8  00000000  00000000  0000087c  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    000000f8  00000000  00000000  00000a64  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	19 c0       	rjmp	.+50     	; 0x34 <__ctors_end>
   2:	32 c0       	rjmp	.+100    	; 0x68 <__bad_interrupt>
   4:	31 c0       	rjmp	.+98     	; 0x68 <__bad_interrupt>
   6:	30 c0       	rjmp	.+96     	; 0x68 <__bad_interrupt>
   8:	2f c0       	rjmp	.+94     	; 0x68 <__bad_interrupt>
   a:	2e c0       	rjmp	.+92     	; 0x68 <__bad_interrupt>
   c:	2d c0       	rjmp	.+90     	; 0x68 <__bad_interrupt>
   e:	2c c0       	rjmp	.+88     	; 0x68 <__bad_interrupt>
  10:	2b c0       	rjmp	.+86     	; 0x68 <__bad_interrupt>
  12:	2a c0       	rjmp	.+84     	; 0x68 <__bad_interrupt>
  14:	29 c0       	rjmp	.+82     	; 0x68 <__bad_interrupt>
  16:	28 c0       	rjmp	.+80     	; 0x68 <__bad_interrupt>
  18:	27 c0       	rjmp	.+78     	; 0x68 <__bad_interrupt>
  1a:	26 c0       	rjmp	.+76     	; 0x68 <__bad_interrupt>
  1c:	25 c0       	rjmp	.+74     	; 0x68 <__bad_interrupt>
  1e:	24 c0       	rjmp	.+72     	; 0x68 <__bad_interrupt>
  20:	23 c0       	rjmp	.+70     	; 0x68 <__bad_interrupt>
  22:	22 c0       	rjmp	.+68     	; 0x68 <__bad_interrupt>
  24:	38 c0       	rjmp	.+112    	; 0x96 <__vector_18>
  26:	20 c0       	rjmp	.+64     	; 0x68 <__bad_interrupt>
  28:	1f c0       	rjmp	.+62     	; 0x68 <__bad_interrupt>
  2a:	1e c0       	rjmp	.+60     	; 0x68 <__bad_interrupt>
  2c:	1d c0       	rjmp	.+58     	; 0x68 <__bad_interrupt>
  2e:	1c c0       	rjmp	.+56     	; 0x68 <__bad_interrupt>
  30:	1b c0       	rjmp	.+54     	; 0x68 <__bad_interrupt>
  32:	1a c0       	rjmp	.+52     	; 0x68 <__bad_interrupt>

00000034 <__ctors_end>:
  34:	11 24       	eor	r1, r1
  36:	1f be       	out	0x3f, r1	; 63
  38:	cf ef       	ldi	r28, 0xFF	; 255
  3a:	d2 e0       	ldi	r29, 0x02	; 2
  3c:	de bf       	out	0x3e, r29	; 62
  3e:	cd bf       	out	0x3d, r28	; 61

00000040 <__do_copy_data>:
  40:	11 e0       	ldi	r17, 0x01	; 1
  42:	a0 e0       	ldi	r26, 0x00	; 0
  44:	b1 e0       	ldi	r27, 0x01	; 1
  46:	ee e5       	ldi	r30, 0x5E	; 94
  48:	f1 e0       	ldi	r31, 0x01	; 1
  4a:	02 c0       	rjmp	.+4      	; 0x50 <.do_copy_data_start>

0000004c <.do_copy_data_loop>:
  4c:	05 90       	lpm	r0, Z+
  4e:	0d 92       	st	X+, r0

00000050 <.do_copy_data_start>:
  50:	a0 30       	cpi	r26, 0x00	; 0
  52:	b1 07       	cpc	r27, r17
  54:	d9 f7       	brne	.-10     	; 0x4c <.do_copy_data_loop>

00000056 <__do_clear_bss>:
  56:	11 e0       	ldi	r17, 0x01	; 1
  58:	a0 e0       	ldi	r26, 0x00	; 0
  5a:	b1 e0       	ldi	r27, 0x01	; 1
  5c:	01 c0       	rjmp	.+2      	; 0x60 <.do_clear_bss_start>

0000005e <.do_clear_bss_loop>:
  5e:	1d 92       	st	X+, r1

00000060 <.do_clear_bss_start>:
  60:	a2 30       	cpi	r26, 0x02	; 2
  62:	b1 07       	cpc	r27, r17
  64:	e1 f7       	brne	.-8      	; 0x5e <.do_clear_bss_loop>
  66:	6b c0       	rjmp	.+214    	; 0x13e <main>

00000068 <__bad_interrupt>:
  68:	cb cf       	rjmp	.-106    	; 0x0 <__vectors>

0000006a <port_init>:
#define serial_active_flag                  BIT0

void port_init(void)
{
    DDRD = 0xff;
  6a:	8f ef       	ldi	r24, 0xFF	; 255
  6c:	8a b9       	out	0x0a, r24	; 10
    PORTD = 0x00;
  6e:	1b b8       	out	0x0b, r1	; 11
    DDRC = 0xff;
  70:	87 b9       	out	0x07, r24	; 7
    PORTC = 0x00;
  72:	18 b8       	out	0x08, r1	; 8
    DDRB = 0xff;
  74:	84 b9       	out	0x04, r24	; 4
    PORTB = 0x00;
  76:	15 b8       	out	0x05, r1	; 5
  78:	08 95       	ret

0000007a <PutChar>:
}

void PutChar(unsigned char send_char)
{
  7a:	98 2f       	mov	r25, r24
    #ifdef MCU_MEGA8
    cli();
    while(!(UCSRA&(1<<UDRE)));
    UDR = send_char;
    while(!(UCSRA&(1<<UDRE)));
    sei();
    #else
    cli();
  7c:	f8 94       	cli
    while(!(UCSR0A & (1<<UDRE0)));
  7e:	80 91 c0 00 	lds	r24, 0x00C0
  82:	85 ff       	sbrs	r24, 5
  84:	fc cf       	rjmp	.-8      	; 0x7e <PutChar+0x4>
    UDR0 = send_char;
  86:	90 93 c6 00 	sts	0x00C6, r25
    while(!(UCSR0A & (1<<UDRE0)));
  8a:	80 91 c0 00 	lds	r24, 0x00C0
  8e:	85 ff       	sbrs	r24, 5
  90:	fc cf       	rjmp	.-8      	; 0x8a <PutChar+0x10>
    sei();
  92:	78 94       	sei
  94:	08 95       	ret

00000096 <__vector_18>:
    #endif
}

#ifdef MCU_MEGA8
ISR(USART_RXC_vect)
{
    if(!TEST_BIT(g_ucByteFlag0, serial_active_flag))
    {
        SET_BIT(g_ucByteFlag0, serial_active_flag);
        g_ucSerialDataBuf = UDR;
    }
}
#else
ISR(USART_RX_vect)
{
  96:	1f 92       	push	r1
  98:	0f 92       	push	r0
  9a:	0f b6       	in	r0, 0x3f	; 63
  9c:	0f 92       	push	r0
  9e:	11 24       	eor	r1, r1
  a0:	8f 93       	push	r24
    if(!TEST_BIT(g_ucByteFlag0, serial_active_flag))
  a2:	80 91 01 01 	lds	r24, 0x0101
  a6:	80 fd       	sbrc	r24, 0
  a8:	09 c0       	rjmp	.+18     	; 0xbc <__vector_18+0x26>
    {
        SET_BIT(g_ucByteFlag0, serial_active_flag);
  aa:	80 91 01 01 	lds	r24, 0x0101
  ae:	81 60       	ori	r24, 0x01	; 1
  b0:	80 93 01 01 	sts	0x0101, r24
        g_ucSerialDataBuf = UDR0;
  b4:	80 91 c6 00 	lds	r24, 0x00C6
  b8:	80 93 00 01 	sts	0x0100, r24
  bc:	8f 91       	pop	r24
  be:	0f 90       	pop	r0
  c0:	0f be       	out	0x3f, r0	; 63
  c2:	0f 90       	pop	r0
  c4:	1f 90       	pop	r1
  c6:	18 95       	reti

000000c8 <uart_init>:
    }
}
#endif

void uart_init(void)
{
    #ifdef MCU_MEGA8
    UCSRB = 0;
	UCSRA = 0x00;
	UCSRC = (1<<UCSZ1)|(1<<UCSZ0);
    UBRRL = (FOSC/16/(BAUD+1))%256;
	UBRRH = (FOSC/16/(BAUD+1))/256;
	UCSRB = (1<<RXEN) | (1<<TXEN) | (1<<RXCIE);
	#else
	UCSR0B = 0;
  c8:	10 92 c1 00 	sts	0x00C1, r1
	UCSR0A = 0x00;
  cc:	10 92 c0 00 	sts	0x00C0, r1
	UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
  d0:	86 e0       	ldi	r24, 0x06	; 6
  d2:	80 93 c2 00 	sts	0x00C2, r24
    UBRR0L = (FOSC/16/BAUD - 1)%256;
  d6:	8c e0       	ldi	r24, 0x0C	; 12
  d8:	80 93 c4 00 	sts	0x00C4, r24
	UBRR0H = (FOSC/16/BAUD - 1)/256;
  dc:	10 92 c5 00 	sts	0x00C5, r1
	UCSR0B = (1<<RXCIE0) | (1<<RXEN0) | (1<<TXEN0);
  e0:	88 e9       	ldi	r24, 0x98	; 152
  e2:	80 93 c1 00 	sts	0x00C1, r24
  e6:	08 95       	ret

000000e8 <SerailData>:
	#endif
}

void SerailData(void)
{
    if(TEST_BIT(g_ucByteFlag0, serial_active_flag))
  e8:	80 91 01 01 	lds	r24, 0x0101
  ec:	80 ff       	sbrs	r24, 0
  ee:	08 95       	ret
    {
        PutChar(g_ucSerialDataBuf);
  f0:	80 91 00 01 	lds	r24, 0x0100
  f4:	c2 df       	rcall	.-124    	; 0x7a <PutChar>
        
        switch(g_ucSerialDataBuf)
  f6:	80 91 00 01 	lds	r24, 0x0100
  fa:	99 27       	eor	r25, r25
  fc:	82 36       	cpi	r24, 0x62	; 98
  fe:	91 05       	cpc	r25, r1
 100:	a1 f0       	breq	.+40     	; 0x12a <SerailData+0x42>
 102:	83 36       	cpi	r24, 0x63	; 99
 104:	91 05       	cpc	r25, r1
 106:	64 f0       	brlt	.+24     	; 0x120 <SerailData+0x38>
 108:	83 36       	cpi	r24, 0x63	; 99
 10a:	91 05       	cpc	r25, r1
 10c:	91 f0       	breq	.+36     	; 0x132 <SerailData+0x4a>
 10e:	84 36       	cpi	r24, 0x64	; 100
 110:	91 05       	cpc	r25, r1
 112:	89 f0       	breq	.+34     	; 0x136 <SerailData+0x4e>
        {
            case 'a': Red_Led_on();
            break;
            case 'b': Red_Led_off();
            break;
            case 'c': Green_Led_on();
            break;
            case 'd': Green_Led_off();
            break;
        }
        CLEAR_BIT(g_ucByteFlag0, serial_active_flag);
 114:	80 91 01 01 	lds	r24, 0x0101
 118:	8e 7f       	andi	r24, 0xFE	; 254
 11a:	80 93 01 01 	sts	0x0101, r24
 11e:	08 95       	ret
 120:	81 36       	cpi	r24, 0x61	; 97
 122:	91 05       	cpc	r25, r1
 124:	b9 f7       	brne	.-18     	; 0x114 <SerailData+0x2c>
 126:	5f 98       	cbi	0x0b, 7	; 11
 128:	f5 cf       	rjmp	.-22     	; 0x114 <SerailData+0x2c>
 12a:	8b b1       	in	r24, 0x0b	; 11
 12c:	8f 67       	ori	r24, 0x7F	; 127
 12e:	8b b9       	out	0x0b, r24	; 11
 130:	f1 cf       	rjmp	.-30     	; 0x114 <SerailData+0x2c>
 132:	5e 98       	cbi	0x0b, 6	; 11
 134:	ef cf       	rjmp	.-34     	; 0x114 <SerailData+0x2c>
 136:	8b b1       	in	r24, 0x0b	; 11
 138:	8f 6b       	ori	r24, 0xBF	; 191
 13a:	8b b9       	out	0x0b, r24	; 11
 13c:	eb cf       	rjmp	.-42     	; 0x114 <SerailData+0x2c>

0000013e <main>:
    }
}

int main(void)
{
 13e:	cf ef       	ldi	r28, 0xFF	; 255
 140:	d2 e0       	ldi	r29, 0x02	; 2
 142:	de bf       	out	0x3e, r29	; 62
 144:	cd bf       	out	0x3d, r28	; 61
    port_init();
 146:	91 df       	rcall	.-222    	; 0x6a <port_init>
    uart_init();
 148:	bf df       	rcall	.-130    	; 0xc8 <uart_init>
    g_ucByteFlag0 = 0;
 14a:	10 92 01 01 	sts	0x0101, r1
    PutChar('O');
 14e:	8f e4       	ldi	r24, 0x4F	; 79
 150:	94 df       	rcall	.-216    	; 0x7a <PutChar>
    PutChar('K');
 152:	8b e4       	ldi	r24, 0x4B	; 75
 154:	92 df       	rcall	.-220    	; 0x7a <PutChar>
    sei();
 156:	78 94       	sei
    while(1)
    {
        SerailData();
 158:	c7 df       	rcall	.-114    	; 0xe8 <SerailData>
 15a:	c6 df       	rcall	.-116    	; 0xe8 <SerailData>
 15c:	fd cf       	rjmp	.-6      	; 0x158 <main+0x1a>

⌨️ 快捷键说明

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