📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000580 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000032 00800060 00000580 00000614 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000039 00800092 00800092 00000646 2**0
ALLOC
3 .debug_aranges 00000020 00000000 00000000 00000646 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_pubnames 000000a7 00000000 00000000 00000666 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_info 00000aa0 00000000 00000000 0000070d 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_abbrev 000001ce 00000000 00000000 000011ad 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 000005b7 00000000 00000000 0000137b 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_frame 00000090 00000000 00000000 00001934 2**2
CONTENTS, READONLY, DEBUGGING
9 .debug_str 00000104 00000000 00000000 000019c4 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_loc 0000036b 00000000 00000000 00001ac8 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_ranges 00000048 00000000 00000000 00001e33 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end>
4: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
8: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
10: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
14: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
18: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
1c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
20: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
24: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
28: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
2c: 0c 94 57 00 jmp 0xae ; 0xae <__vector_11>
30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
34: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
38: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
3c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
40: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
44: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
48: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
4c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
50: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d4 e0 ldi r29, 0x04 ; 4
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: e0 e8 ldi r30, 0x80 ; 128
68: f5 e0 ldi r31, 0x05 ; 5
6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start>
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a2 39 cpi r26, 0x92 ; 146
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: a2 e9 ldi r26, 0x92 ; 146
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start>
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: ab 3c cpi r26, 0xCB ; 203
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0e 94 11 01 call 0x222 ; 0x222 <main>
8a: 0c 94 be 02 jmp 0x57c ; 0x57c <_exit>
0000008e <__bad_interrupt>:
8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000092 <usart_init>:
}
}
void usart_init(void)//串口初始化函数
{
UCSRB|=((1<<RXCIE)|(1<<RXEN)|(1<<TXEN));//异步串口,开接受中断
92: 8a b1 in r24, 0x0a ; 10
94: 88 69 ori r24, 0x98 ; 152
96: 8a b9 out 0x0a, r24 ; 10
UCSRC|=((1<<URSEL)|(0<<UMSEL)|(1<<UPM1)|(0<<UPM0)
98: 80 b5 in r24, 0x20 ; 32
9a: 86 6a ori r24, 0xA6 ; 166
9c: 80 bd out 0x20, r24 ; 32
|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0));//偶校验,1个停止位,8位
UBRRH|=((0<<URSEL));
9e: 80 b5 in r24, 0x20 ; 32
a0: 80 bd out 0x20, r24 ; 32
UBRRL=51;//波特率:9600bps.//8M频率
a2: 83 e3 ldi r24, 0x33 ; 51
a4: 89 b9 out 0x09, r24 ; 9
}
a6: 08 95 ret
000000a8 <trans_uart>:
void trans_uart(uchar dat)//串口传送函数
{
while(!(UCSRA|(1<<UDRE)));//判断数据寄存器是否可用
a8: 9b b1 in r25, 0x0b ; 11
UDR=dat;
aa: 8c b9 out 0x0c, r24 ; 12
}
ac: 08 95 ret
000000ae <__vector_11>:
SIGNAL(SIG_UART_RECV)
{
ae: 1f 92 push r1
b0: 0f 92 push r0
b2: 0f b6 in r0, 0x3f ; 63
b4: 0f 92 push r0
b6: 11 24 eor r1, r1
b8: 8f 93 push r24
ba: 9f 93 push r25
bc: ef 93 push r30
be: ff 93 push r31
uchar temp=0;
temp=UDR;
c0: 9c b1 in r25, 0x0c ; 12
PORTB=temp;
c2: 98 bb out 0x18, r25 ; 24
trs[i]=temp;
c4: 80 91 ca 00 lds r24, 0x00CA
c8: e8 2f mov r30, r24
ca: f0 e0 ldi r31, 0x00 ; 0
cc: e0 5a subi r30, 0xA0 ; 160
ce: ff 4f sbci r31, 0xFF ; 255
d0: 90 83 st Z, r25
i++;
d2: 8f 5f subi r24, 0xFF ; 255
d4: 80 93 ca 00 sts 0x00CA, r24
if(i==10)
d8: 8a 30 cpi r24, 0x0A ; 10
da: 11 f4 brne .+4 ; 0xe0 <__vector_11+0x32>
i=0;
dc: 10 92 ca 00 sts 0x00CA, r1
//trans_uart(temp);
while(!(UCSRA|(1<<UDRE)));//判断数据寄存器是否可用
e0: 8b b1 in r24, 0x0b ; 11
UDR=temp;
e2: 9c b9 out 0x0c, r25 ; 12
q=temp;
e4: 90 93 92 00 sts 0x0092, r25
e8: 10 92 93 00 sts 0x0093, r1
//UCSRB|=(1<<TXEN);
}
ec: ff 91 pop r31
ee: ef 91 pop r30
f0: 9f 91 pop r25
f2: 8f 91 pop r24
f4: 0f 90 pop r0
f6: 0f be out 0x3f, r0 ; 63
f8: 0f 90 pop r0
fa: 1f 90 pop r1
fc: 18 95 reti
000000fe <delay>:
void delay(uint x)
{
uint y=0,z=0;
for(y=x;y>0;y--)
for(z=124;z>0;z--);
}
fe: 08 95 ret
00000100 <byte_write>:
//*********************写液晶函数(1602)**********************************//
void byte_write(uchar rs,uchar dat)//写液晶函数
{
if(rs==1)
100: 81 30 cpi r24, 0x01 ; 1
102: 11 f4 brne .+4 ; 0x108 <byte_write+0x8>
PORTC|=(1<<rs_lcd);
104: aa 9a sbi 0x15, 2 ; 21
106: 01 c0 rjmp .+2 ; 0x10a <byte_write+0xa>
else
PORTC&=(~(1<<rs_lcd));
108: aa 98 cbi 0x15, 2 ; 21
// rw_lcd=0;
PORTC&=(~(1<<en_lcd));
10a: ab 98 cbi 0x15, 3 ; 21
PORTB=dat;
10c: 68 bb out 0x18, r22 ; 24
PORTC|=(1<<en_lcd);
10e: ab 9a sbi 0x15, 3 ; 21
PORTC&=(~(1<<en_lcd));
110: ab 98 cbi 0x15, 3 ; 21
// rw_lcd=1;
PORTC|=(1<<rs_lcd);
112: aa 9a sbi 0x15, 2 ; 21
}
114: 08 95 ret
00000116 <init_lcd>:
for(y=x;y>0;y--)
for(z=124;z>0;z--);
}
//*********************液晶初始化函数(1602)**********************************//
void init_lcd(void)
{
116: 0f 93 push r16
118: 1f 93 push r17
PORTB=0XFF;
11a: 9f ef ldi r25, 0xFF ; 255
11c: 98 bb out 0x18, r25 ; 24
PORTC|=((1<<en_lcd)|(1<<rs_lcd));//设置为高
11e: 85 b3 in r24, 0x15 ; 21
120: 8c 60 ori r24, 0x0C ; 12
122: 85 bb out 0x15, r24 ; 21
DDRC|=((1<<en_lcd)|(1<<rs_lcd));//设置为输出
124: 84 b3 in r24, 0x14 ; 20
126: 8c 60 ori r24, 0x0C ; 12
128: 84 bb out 0x14, r24 ; 20
DDRB=0xff;
12a: 97 bb out 0x17, r25 ; 23
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
12c: 80 e0 ldi r24, 0x00 ; 0
12e: 9c e6 ldi r25, 0x6C ; 108
130: 01 97 sbiw r24, 0x01 ; 1
132: f1 f7 brne .-4 ; 0x130 <init_lcd+0x1a>
_delay_ms(15);
byte_write(0,0x38);
134: 80 e0 ldi r24, 0x00 ; 0
136: 68 e3 ldi r22, 0x38 ; 56
138: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
13c: 00 e0 ldi r16, 0x00 ; 0
13e: 14 e2 ldi r17, 0x24 ; 36
140: c8 01 movw r24, r16
142: 01 97 sbiw r24, 0x01 ; 1
144: f1 f7 brne .-4 ; 0x142 <init_lcd+0x2c>
_delay_ms(5);
byte_write(0,0x38);
146: 80 e0 ldi r24, 0x00 ; 0
148: 68 e3 ldi r22, 0x38 ; 56
14a: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
14e: c8 01 movw r24, r16
150: 01 97 sbiw r24, 0x01 ; 1
152: f1 f7 brne .-4 ; 0x150 <init_lcd+0x3a>
_delay_ms(5);
byte_write(0,0x38);
154: 80 e0 ldi r24, 0x00 ; 0
156: 68 e3 ldi r22, 0x38 ; 56
158: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
15c: c8 01 movw r24, r16
15e: 01 97 sbiw r24, 0x01 ; 1
160: f1 f7 brne .-4 ; 0x15e <init_lcd+0x48>
_delay_ms(5);
byte_write(0,0x38);_delay_ms(5);
162: 80 e0 ldi r24, 0x00 ; 0
164: 68 e3 ldi r22, 0x38 ; 56
166: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
16a: c8 01 movw r24, r16
16c: 01 97 sbiw r24, 0x01 ; 1
16e: f1 f7 brne .-4 ; 0x16c <init_lcd+0x56>
byte_write(0,0x0c);_delay_ms(5);
170: 80 e0 ldi r24, 0x00 ; 0
172: 6c e0 ldi r22, 0x0C ; 12
174: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
178: c8 01 movw r24, r16
17a: 01 97 sbiw r24, 0x01 ; 1
17c: f1 f7 brne .-4 ; 0x17a <init_lcd+0x64>
byte_write(0,0x06);_delay_ms(5);
17e: 80 e0 ldi r24, 0x00 ; 0
180: 66 e0 ldi r22, 0x06 ; 6
182: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
186: c8 01 movw r24, r16
188: 01 97 sbiw r24, 0x01 ; 1
18a: f1 f7 brne .-4 ; 0x188 <init_lcd+0x72>
byte_write(0,0x01);_delay_ms(5);
18c: 80 e0 ldi r24, 0x00 ; 0
18e: 61 e0 ldi r22, 0x01 ; 1
190: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
194: c8 01 movw r24, r16
196: 01 97 sbiw r24, 0x01 ; 1
198: f1 f7 brne .-4 ; 0x196 <init_lcd+0x80>
byte_write(0,0x80);_delay_ms(1);//地址取在0x80
19a: 80 e0 ldi r24, 0x00 ; 0
19c: 60 e8 ldi r22, 0x80 ; 128
19e: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
1a2: 03 e3 ldi r16, 0x33 ; 51
1a4: 17 e0 ldi r17, 0x07 ; 7
1a6: c8 01 movw r24, r16
1a8: 01 97 sbiw r24, 0x01 ; 1
1aa: f1 f7 brne .-4 ; 0x1a8 <init_lcd+0x92>
byte_write(1,'T');_delay_ms(1);
1ac: 81 e0 ldi r24, 0x01 ; 1
1ae: 64 e5 ldi r22, 0x54 ; 84
1b0: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
1b4: c8 01 movw r24, r16
1b6: 01 97 sbiw r24, 0x01 ; 1
1b8: f1 f7 brne .-4 ; 0x1b6 <init_lcd+0xa0>
byte_write(1,':');_delay_ms(1);
1ba: 81 e0 ldi r24, 0x01 ; 1
1bc: 6a e3 ldi r22, 0x3A ; 58
1be: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
1c2: c8 01 movw r24, r16
1c4: 01 97 sbiw r24, 0x01 ; 1
1c6: f1 f7 brne .-4 ; 0x1c4 <init_lcd+0xae>
byte_write(0,0xc0);_delay_ms(1);//地址取在0x80
1c8: 80 e0 ldi r24, 0x00 ; 0
1ca: 60 ec ldi r22, 0xC0 ; 192
1cc: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
1d0: c8 01 movw r24, r16
1d2: 01 97 sbiw r24, 0x01 ; 1
1d4: f1 f7 brne .-4 ; 0x1d2 <init_lcd+0xbc>
byte_write(1,'M');_delay_ms(1);//
1d6: 81 e0 ldi r24, 0x01 ; 1
1d8: 6d e4 ldi r22, 0x4D ; 77
1da: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
1de: c8 01 movw r24, r16
1e0: 01 97 sbiw r24, 0x01 ; 1
1e2: f1 f7 brne .-4 ; 0x1e0 <init_lcd+0xca>
byte_write(1,':');_delay_ms(1);
1e4: 81 e0 ldi r24, 0x01 ; 1
1e6: 6a e3 ldi r22, 0x3A ; 58
1e8: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
1ec: c8 01 movw r24, r16
1ee: 01 97 sbiw r24, 0x01 ; 1
1f0: f1 f7 brne .-4 ; 0x1ee <init_lcd+0xd8>
byte_write(0,0xc9);_delay_ms(1);//地址取在0x80
1f2: 80 e0 ldi r24, 0x00 ; 0
1f4: 69 ec ldi r22, 0xC9 ; 201
1f6: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
1fa: c8 01 movw r24, r16
1fc: 01 97 sbiw r24, 0x01 ; 1
1fe: f1 f7 brne .-4 ; 0x1fc <init_lcd+0xe6>
byte_write(1,'S');_delay_ms(1);//
200: 81 e0 ldi r24, 0x01 ; 1
202: 63 e5 ldi r22, 0x53 ; 83
204: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
208: c8 01 movw r24, r16
20a: 01 97 sbiw r24, 0x01 ; 1
20c: f1 f7 brne .-4 ; 0x20a <init_lcd+0xf4>
byte_write(1,':');_delay_ms(1);
20e: 81 e0 ldi r24, 0x01 ; 1
210: 6a e3 ldi r22, 0x3A ; 58
212: 0e 94 80 00 call 0x100 ; 0x100 <byte_write>
216: c8 01 movw r24, r16
218: 01 97 sbiw r24, 0x01 ; 1
21a: f1 f7 brne .-4 ; 0x218 <init_lcd+0x102>
}
21c: 1f 91 pop r17
21e: 0f 91 pop r16
220: 08 95 ret
00000222 <main>:
uchar i=0;
int main(void)
{
uchar n=0,pp=0;
DDRB=0XFF;
222: 8f ef ldi r24, 0xFF ; 255
224: 87 bb out 0x17, r24 ; 23
PORTB=0XFF;
226: 88 bb out 0x18, r24 ; 24
}
}
void usart_init(void)//串口初始化函数
{
UCSRB|=((1<<RXCIE)|(1<<RXEN)|(1<<TXEN));//异步串口,开接受中断
228: 8a b1 in r24, 0x0a ; 10
22a: 88 69 ori r24, 0x98 ; 152
22c: 8a b9 out 0x0a, r24 ; 10
UCSRC|=((1<<URSEL)|(0<<UMSEL)|(1<<UPM1)|(0<<UPM0)
22e: 80 b5 in r24, 0x20 ; 32
230: 86 6a ori r24, 0xA6 ; 166
232: 80 bd out 0x20, r24 ; 32
|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0));//偶校验,1个停止位,8位
UBRRH|=((0<<URSEL));
234: 80 b5 in r24, 0x20 ; 32
236: 80 bd out 0x20, r24 ; 32
UBRRL=51;//波特率:9600bps.//8M频率
238: 83 e3 ldi r24, 0x33 ; 51
23a: 89 b9 out 0x09, r24 ; 9
{
uchar n=0,pp=0;
DDRB=0XFF;
PORTB=0XFF;
usart_init();
_SEI();
23c: 78 94 sei
init_lcd();
23e: 0e 94 8b 00 call 0x116 ; 0x116 <init_lcd>
242: 20 e0 ldi r18, 0x00 ; 0
244: 48 eb ldi r20, 0xB8 ; 184
246: 50 e0 ldi r21, 0x00 ; 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -