📄 shiyan5.lss
字号:
shiyan5.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000012 00800100 0000044a 000004de 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 0000044a 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 00000017 00800112 00800112 000004f0 2**0
ALLOC
3 .noinit 00000000 00800129 00800129 000004f0 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000004f0 2**0
CONTENTS
5 .stab 000008b8 00000000 00000000 000004f0 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000a0e 00000000 00000000 00000da8 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 46 00 jmp 0x8c
4: 0c 94 63 00 jmp 0xc6
8: 0c 94 63 00 jmp 0xc6
c: 0c 94 63 00 jmp 0xc6
10: 0c 94 63 00 jmp 0xc6
14: 0c 94 63 00 jmp 0xc6
18: 0c 94 63 00 jmp 0xc6
1c: 0c 94 63 00 jmp 0xc6
20: 0c 94 63 00 jmp 0xc6
24: 0c 94 63 00 jmp 0xc6
28: 0c 94 63 00 jmp 0xc6
2c: 0c 94 63 00 jmp 0xc6
30: 0c 94 63 00 jmp 0xc6
34: 0c 94 63 00 jmp 0xc6
38: 0c 94 63 00 jmp 0xc6
3c: 0c 94 63 00 jmp 0xc6
40: 0c 94 63 00 jmp 0xc6
44: 0c 94 63 00 jmp 0xc6
48: 0c 94 63 00 jmp 0xc6
4c: 0c 94 63 00 jmp 0xc6
50: 0c 94 63 00 jmp 0xc6
54: 0c 94 63 00 jmp 0xc6
58: 0c 94 63 00 jmp 0xc6
5c: 0c 94 63 00 jmp 0xc6
60: 0c 94 63 00 jmp 0xc6
64: 0c 94 63 00 jmp 0xc6
68: 0c 94 63 00 jmp 0xc6
6c: 0c 94 63 00 jmp 0xc6
70: 0c 94 63 00 jmp 0xc6
74: 0c 94 63 00 jmp 0xc6
78: 0c 94 35 01 jmp 0x26a
7c: 0c 94 63 00 jmp 0xc6
80: 0c 94 63 00 jmp 0xc6
84: 0c 94 63 00 jmp 0xc6
88: 0c 94 63 00 jmp 0xc6
0000008c <__ctors_end>:
8c: 11 24 eor r1, r1
8e: 1f be out 0x3f, r1 ; 63
90: cf ef ldi r28, 0xFF ; 255
92: d0 e1 ldi r29, 0x10 ; 16
94: de bf out 0x3e, r29 ; 62
96: cd bf out 0x3d, r28 ; 61
00000098 <__do_copy_data>:
98: 11 e0 ldi r17, 0x01 ; 1
9a: a0 e0 ldi r26, 0x00 ; 0
9c: b1 e0 ldi r27, 0x01 ; 1
9e: ea e4 ldi r30, 0x4A ; 74
a0: f4 e0 ldi r31, 0x04 ; 4
a2: 00 e0 ldi r16, 0x00 ; 0
a4: 0b bf out 0x3b, r16 ; 59
a6: 02 c0 rjmp .+4 ; 0xac
000000a8 <.__do_copy_data_loop>:
a8: 07 90 elpm r0, Z+
aa: 0d 92 st X+, r0
000000ac <.__do_copy_data_start>:
ac: a2 31 cpi r26, 0x12 ; 18
ae: b1 07 cpc r27, r17
b0: d9 f7 brne .-10 ; 0xa8
000000b2 <__do_clear_bss>:
b2: 11 e0 ldi r17, 0x01 ; 1
b4: a2 e1 ldi r26, 0x12 ; 18
b6: b1 e0 ldi r27, 0x01 ; 1
b8: 01 c0 rjmp .+2 ; 0xbc
000000ba <.do_clear_bss_loop>:
ba: 1d 92 st X+, r1
000000bc <.do_clear_bss_start>:
bc: a9 32 cpi r26, 0x29 ; 41
be: b1 07 cpc r27, r17
c0: e1 f7 brne .-8 ; 0xba
c2: 0c 94 e7 01 jmp 0x3ce
000000c6 <__bad_interrupt>:
c6: 0c 94 00 00 jmp 0x0
000000ca <delay_us>:
int ii=0;
// ":" 地址 命令 寄存器地址 寄存器数量 校验 回车 换行
//******************************延时子程序*****************************************
void delay_us(uint16_t u) //延时2us左右,delay(240)=100us;
{
ca: cf 93 push r28
cc: df 93 push r29
ce: cd b7 in r28, 0x3d ; 61
d0: de b7 in r29, 0x3e ; 62
d2: 22 97 sbiw r28, 0x02 ; 2
d4: 0f b6 in r0, 0x3f ; 63
d6: f8 94 cli
d8: de bf out 0x3e, r29 ; 62
da: 0f be out 0x3f, r0 ; 63
dc: cd bf out 0x3d, r28 ; 61
de: 89 83 std Y+1, r24 ; 0x01
e0: 9a 83 std Y+2, r25 ; 0x02
while(u)
e2: 89 81 ldd r24, Y+1 ; 0x01
e4: 9a 81 ldd r25, Y+2 ; 0x02
e6: 00 97 sbiw r24, 0x00 ; 0
e8: 09 f4 brne .+2 ; 0xec
ea: 06 c0 rjmp .+12 ; 0xf8
{
u--;
ec: 89 81 ldd r24, Y+1 ; 0x01
ee: 9a 81 ldd r25, Y+2 ; 0x02
f0: 01 97 sbiw r24, 0x01 ; 1
f2: 89 83 std Y+1, r24 ; 0x01
f4: 9a 83 std Y+2, r25 ; 0x02
f6: f5 cf rjmp .-22 ; 0xe2
}
}
f8: 22 96 adiw r28, 0x02 ; 2
fa: 0f b6 in r0, 0x3f ; 63
fc: f8 94 cli
fe: de bf out 0x3e, r29 ; 62
100: 0f be out 0x3f, r0 ; 63
102: cd bf out 0x3d, r28 ; 61
104: df 91 pop r29
106: cf 91 pop r28
108: 08 95 ret
0000010a <delay_ms>:
// 延时nms
void delay_ms(uint16_t m)
{
10a: cf 93 push r28
10c: df 93 push r29
10e: cd b7 in r28, 0x3d ; 61
110: de b7 in r29, 0x3e ; 62
112: 24 97 sbiw r28, 0x04 ; 4
114: 0f b6 in r0, 0x3f ; 63
116: f8 94 cli
118: de bf out 0x3e, r29 ; 62
11a: 0f be out 0x3f, r0 ; 63
11c: cd bf out 0x3d, r28 ; 61
11e: 89 83 std Y+1, r24 ; 0x01
120: 9a 83 std Y+2, r25 ; 0x02
uint16_t i;
for(i=0;i<m;i++)
122: 1b 82 std Y+3, r1 ; 0x03
124: 1c 82 std Y+4, r1 ; 0x04
126: 2b 81 ldd r18, Y+3 ; 0x03
128: 3c 81 ldd r19, Y+4 ; 0x04
12a: 89 81 ldd r24, Y+1 ; 0x01
12c: 9a 81 ldd r25, Y+2 ; 0x02
12e: 28 17 cp r18, r24
130: 39 07 cpc r19, r25
132: 08 f0 brcs .+2 ; 0x136
134: 0a c0 rjmp .+20 ; 0x14a
{
delay_us(2400); //延时1ms
136: 80 e6 ldi r24, 0x60 ; 96
138: 99 e0 ldi r25, 0x09 ; 9
13a: 0e 94 65 00 call 0xca
13e: 8b 81 ldd r24, Y+3 ; 0x03
140: 9c 81 ldd r25, Y+4 ; 0x04
142: 01 96 adiw r24, 0x01 ; 1
144: 8b 83 std Y+3, r24 ; 0x03
146: 9c 83 std Y+4, r25 ; 0x04
148: ee cf rjmp .-36 ; 0x126
}
}
14a: 24 96 adiw r28, 0x04 ; 4
14c: 0f b6 in r0, 0x3f ; 63
14e: f8 94 cli
150: de bf out 0x3e, r29 ; 62
152: 0f be out 0x3f, r0 ; 63
154: cd bf out 0x3d, r28 ; 61
156: df 91 pop r29
158: cf 91 pop r28
15a: 08 95 ret
0000015c <delay_s>:
//延时ns
void delay_s(uint16_t n)
{
15c: cf 93 push r28
15e: df 93 push r29
160: cd b7 in r28, 0x3d ; 61
162: de b7 in r29, 0x3e ; 62
164: 24 97 sbiw r28, 0x04 ; 4
166: 0f b6 in r0, 0x3f ; 63
168: f8 94 cli
16a: de bf out 0x3e, r29 ; 62
16c: 0f be out 0x3f, r0 ; 63
16e: cd bf out 0x3d, r28 ; 61
170: 89 83 std Y+1, r24 ; 0x01
172: 9a 83 std Y+2, r25 ; 0x02
uint16_t j;
for(j=0;j<n;j++)
174: 1b 82 std Y+3, r1 ; 0x03
176: 1c 82 std Y+4, r1 ; 0x04
178: 2b 81 ldd r18, Y+3 ; 0x03
17a: 3c 81 ldd r19, Y+4 ; 0x04
17c: 89 81 ldd r24, Y+1 ; 0x01
17e: 9a 81 ldd r25, Y+2 ; 0x02
180: 28 17 cp r18, r24
182: 39 07 cpc r19, r25
184: 08 f0 brcs .+2 ; 0x188
186: 0a c0 rjmp .+20 ; 0x19c
{
delay_ms(1000); //延时1s
188: 88 ee ldi r24, 0xE8 ; 232
18a: 93 e0 ldi r25, 0x03 ; 3
18c: 0e 94 85 00 call 0x10a
190: 8b 81 ldd r24, Y+3 ; 0x03
192: 9c 81 ldd r25, Y+4 ; 0x04
194: 01 96 adiw r24, 0x01 ; 1
196: 8b 83 std Y+3, r24 ; 0x03
198: 9c 83 std Y+4, r25 ; 0x04
19a: ee cf rjmp .-36 ; 0x178
}
}
19c: 24 96 adiw r28, 0x04 ; 4
19e: 0f b6 in r0, 0x3f ; 63
1a0: f8 94 cli
1a2: de bf out 0x3e, r29 ; 62
1a4: 0f be out 0x3f, r0 ; 63
1a6: cd bf out 0x3d, r28 ; 61
1a8: df 91 pop r29
1aa: cf 91 pop r28
1ac: 08 95 ret
000001ae <usart1_init>:
void usart1_init(void)
{
1ae: cf 93 push r28
1b0: df 93 push r29
1b2: cd b7 in r28, 0x3d ; 61
1b4: de b7 in r29, 0x3e ; 62
UBRR1H=0x00;
1b6: 10 92 98 00 sts 0x0098, r1
UBRR1L=0x19;//设置波特率为2400bit/s,当晶振频率为7.3728M时
1ba: 89 e1 ldi r24, 0x19 ; 25
1bc: 80 93 99 00 sts 0x0099, r24
UCSR1A=0X00;
1c0: 10 92 9b 00 sts 0x009B, r1
UCSR1B=(1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1);//接收允许,发送允许,接收中断使能
1c4: 88 e9 ldi r24, 0x98 ; 152
1c6: 80 93 9a 00 sts 0x009A, r24
UCSR1C=(1<<UPM11)|(0<<UPM10)|(1<<UCSZ11);//异步传输,7个数据位,1个停止位,偶校验(根据MODBUS ASCII协议)
1ca: 84 e2 ldi r24, 0x24 ; 36
1cc: 80 93 9d 00 sts 0x009D, r24
sbi(DDRD,PD4);//CS485为输出,控制max485的发送和接收
1d0: 80 91 31 00 lds r24, 0x0031
1d4: 80 61 ori r24, 0x10 ; 16
1d6: 80 93 31 00 sts 0x0031, r24
cbi(PORTD,PD4);//max485接收使能
1da: 80 91 32 00 lds r24, 0x0032
1de: 8f 7e andi r24, 0xEF ; 239
1e0: 80 93 32 00 sts 0x0032, r24
}
1e4: df 91 pop r29
1e6: cf 91 pop r28
1e8: 08 95 ret
000001ea <sendchar>:
void sendchar(char data)//发送
{
1ea: cf 93 push r28
1ec: df 93 push r29
1ee: cd b7 in r28, 0x3d ; 61
1f0: de b7 in r29, 0x3e ; 62
1f2: 21 97 sbiw r28, 0x01 ; 1
1f4: 0f b6 in r0, 0x3f ; 63
1f6: f8 94 cli
1f8: de bf out 0x3e, r29 ; 62
1fa: 0f be out 0x3f, r0 ; 63
1fc: cd bf out 0x3d, r28 ; 61
1fe: 89 83 std Y+1, r24 ; 0x01
sbi(PORTD,PD4);//控制max485的发送
200: 80 91 32 00 lds r24, 0x0032
204: 80 61 ori r24, 0x10 ; 16
206: 80 93 32 00 sts 0x0032, r24
if(!(UCSR1A&(1<<UDRE1)))//等待UDRE被置位,否则对数据寄存器UDR的写操作将被忽略
20a: 80 91 9b 00 lds r24, 0x009B
20e: 99 27 eor r25, r25
210: 80 72 andi r24, 0x20 ; 32
212: 90 70 andi r25, 0x00 ; 0
214: 00 97 sbiw r24, 0x00 ; 0
216: 29 f4 brne .+10 ; 0x222
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -