?? main.lss
字號:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000438 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000001 00800060 00000438 000004ac 2**0
ALLOC
2 .debug_aranges 00000020 00000000 00000000 000004ac 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 000000e2 00000000 00000000 000004cc 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 0000054b 00000000 00000000 000005ae 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 000001f1 00000000 00000000 00000af9 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 0000051e 00000000 00000000 00000cea 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 000000f0 00000000 00000000 00001208 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_str 000000eb 00000000 00000000 000012f8 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_loc 00000213 00000000 00000000 000013e3 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end>
2: 2c c0 rjmp .+88 ; 0x5c <__bad_interrupt>
4: 2b c0 rjmp .+86 ; 0x5c <__bad_interrupt>
6: 2a c0 rjmp .+84 ; 0x5c <__bad_interrupt>
8: 29 c0 rjmp .+82 ; 0x5c <__bad_interrupt>
a: 28 c0 rjmp .+80 ; 0x5c <__bad_interrupt>
c: 27 c0 rjmp .+78 ; 0x5c <__bad_interrupt>
e: 26 c0 rjmp .+76 ; 0x5c <__bad_interrupt>
10: 25 c0 rjmp .+74 ; 0x5c <__bad_interrupt>
12: 24 c0 rjmp .+72 ; 0x5c <__bad_interrupt>
14: 23 c0 rjmp .+70 ; 0x5c <__bad_interrupt>
16: 34 c0 rjmp .+104 ; 0x80 <__vector_11>
18: 21 c0 rjmp .+66 ; 0x5c <__bad_interrupt>
1a: 41 c0 rjmp .+130 ; 0x9e <__vector_13>
1c: 1f c0 rjmp .+62 ; 0x5c <__bad_interrupt>
1e: 1e c0 rjmp .+60 ; 0x5c <__bad_interrupt>
20: 1d c0 rjmp .+58 ; 0x5c <__bad_interrupt>
22: 1c c0 rjmp .+56 ; 0x5c <__bad_interrupt>
24: 1b c0 rjmp .+54 ; 0x5c <__bad_interrupt>
00000026 <__ctors_end>:
26: 11 24 eor r1, r1
28: 1f be out 0x3f, r1 ; 63
2a: cf e5 ldi r28, 0x5F ; 95
2c: d4 e0 ldi r29, 0x04 ; 4
2e: de bf out 0x3e, r29 ; 62
30: cd bf out 0x3d, r28 ; 61
00000032 <__do_copy_data>:
32: 10 e0 ldi r17, 0x00 ; 0
34: a0 e6 ldi r26, 0x60 ; 96
36: b0 e0 ldi r27, 0x00 ; 0
38: e8 e3 ldi r30, 0x38 ; 56
3a: f4 e0 ldi r31, 0x04 ; 4
3c: 02 c0 rjmp .+4 ; 0x42 <.do_copy_data_start>
0000003e <.do_copy_data_loop>:
3e: 05 90 lpm r0, Z+
40: 0d 92 st X+, r0
00000042 <.do_copy_data_start>:
42: a0 36 cpi r26, 0x60 ; 96
44: b1 07 cpc r27, r17
46: d9 f7 brne .-10 ; 0x3e <.do_copy_data_loop>
00000048 <__do_clear_bss>:
48: 10 e0 ldi r17, 0x00 ; 0
4a: a0 e6 ldi r26, 0x60 ; 96
4c: b0 e0 ldi r27, 0x00 ; 0
4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start>
00000050 <.do_clear_bss_loop>:
50: 1d 92 st X+, r1
00000052 <.do_clear_bss_start>:
52: a1 36 cpi r26, 0x61 ; 97
54: b1 07 cpc r27, r17
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop>
58: 52 d1 rcall .+676 ; 0x2fe <main>
5a: ec c1 rjmp .+984 ; 0x434 <_exit>
0000005c <__bad_interrupt>:
5c: d1 cf rjmp .-94 ; 0x0 <__vectors>
0000005e <USART_Init>:
volatile unsigned char sum=0; //定義全局的指令變量
//設置串口的參數
void USART_Init( unsigned int baud )
{
5e: 10 bc out 0x20, r1 ; 32
/* 設置波特率9600*/
UBRRH = 0;
UBRRL = 47;
60: 8f e2 ldi r24, 0x2F ; 47
62: 89 b9 out 0x09, r24 ; 9
/* 接收器與發送器使能*/
UCSRB = (1<<TXCIE)|(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
64: 88 ed ldi r24, 0xD8 ; 216
66: 8a b9 out 0x0a, r24 ; 10
/* 設置幀格式: 8 個數據位, 2 個停止位*/
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
68: 8e e8 ldi r24, 0x8E ; 142
6a: 80 bd out 0x20, r24 ; 32
}
6c: 08 95 ret
0000006e <USART_Transmit>:
void USART_Transmit( unsigned char data )
{PORTD|=(1<<PD2); //485輸出使能
6e: 92 9a sbi 0x12, 2 ; 18
/* 等待發送緩沖器為空 */
while ( !( UCSRA & (1<<UDRE)) )
70: 5d 9b sbis 0x0b, 5 ; 11
72: fe cf rjmp .-4 ; 0x70 <USART_Transmit+0x2>
;
/* 將數據放入緩沖器,發送數據 */
UDR = data;
74: 8c b9 out 0x0c, r24 ; 12
}
76: 08 95 ret
00000078 <USART_Receive>:
unsigned char USART_Receive( void )
{
78: 5f 9b sbis 0x0b, 7 ; 11
7a: fe cf rjmp .-4 ; 0x78 <USART_Receive>
/* 等待接收數據*/
while ( !(UCSRA & (1<<RXC)) )
;
/* 從緩沖器中獲取并返回數據*/
return UDR;
7c: 8c b1 in r24, 0x0c ; 12
}
7e: 08 95 ret
00000080 <__vector_11>:
SIGNAL (SIG_UART_RECV) //接收中斷
{sum=UDR;}
80: 1f 92 push r1
82: 0f 92 push r0
84: 0f b6 in r0, 0x3f ; 63
86: 0f 92 push r0
88: 11 24 eor r1, r1
8a: 8f 93 push r24
8c: 8c b1 in r24, 0x0c ; 12
8e: 80 93 60 00 sts 0x0060, r24
92: 8f 91 pop r24
94: 0f 90 pop r0
96: 0f be out 0x3f, r0 ; 63
98: 0f 90 pop r0
9a: 1f 90 pop r1
9c: 18 95 reti
0000009e <__vector_13>:
SIGNAL (SIG_UART_TRANS) //發送結束中斷
{PORTD&=~(1<<PD2); } //485輸入使能
9e: 1f 92 push r1
a0: 0f 92 push r0
a2: 0f b6 in r0, 0x3f ; 63
a4: 0f 92 push r0
a6: 11 24 eor r1, r1
a8: 92 98 cbi 0x12, 2 ; 18
aa: 0f 90 pop r0
ac: 0f be out 0x3f, r0 ; 63
ae: 0f 90 pop r0
b0: 1f 90 pop r1
b2: 18 95 reti
000000b4 <delay_us>:
/*************************************************************************************/
volatile void delay_us(unsigned char a) //挺時1uS
{
b4: df 93 push r29
b6: cf 93 push r28
b8: 00 d0 rcall .+0 ; 0xba <delay_us+0x6>
ba: 00 d0 rcall .+0 ; 0xbc <delay_us+0x8>
bc: cd b7 in r28, 0x3d ; 61
be: de b7 in r29, 0x3e ; 62
volatile unsigned int i=0,j=0;
c0: 1a 82 std Y+2, r1 ; 0x02
c2: 19 82 std Y+1, r1 ; 0x01
c4: 1c 82 std Y+4, r1 ; 0x04
c6: 1b 82 std Y+3, r1 ; 0x03
for(i=0;i<a;i++)
c8: 1a 82 std Y+2, r1 ; 0x02
ca: 19 82 std Y+1, r1 ; 0x01
cc: 28 2f mov r18, r24
ce: 30 e0 ldi r19, 0x00 ; 0
d0: 11 c0 rjmp .+34 ; 0xf4 <delay_us+0x40>
for(j=0;j<50;j++)
d2: 1c 82 std Y+4, r1 ; 0x04
d4: 1b 82 std Y+3, r1 ; 0x03
d6: 05 c0 rjmp .+10 ; 0xe2 <delay_us+0x2e>
d8: 8b 81 ldd r24, Y+3 ; 0x03
da: 9c 81 ldd r25, Y+4 ; 0x04
dc: 01 96 adiw r24, 0x01 ; 1
de: 9c 83 std Y+4, r25 ; 0x04
e0: 8b 83 std Y+3, r24 ; 0x03
e2: 8b 81 ldd r24, Y+3 ; 0x03
e4: 9c 81 ldd r25, Y+4 ; 0x04
e6: c2 97 sbiw r24, 0x32 ; 50
e8: b8 f3 brcs .-18 ; 0xd8 <delay_us+0x24>
/*************************************************************************************/
volatile void delay_us(unsigned char a) //挺時1uS
{
volatile unsigned int i=0,j=0;
for(i=0;i<a;i++)
ea: 89 81 ldd r24, Y+1 ; 0x01
ec: 9a 81 ldd r25, Y+2 ; 0x02
ee: 01 96 adiw r24, 0x01 ; 1
f0: 9a 83 std Y+2, r25 ; 0x02
f2: 89 83 std Y+1, r24 ; 0x01
f4: 89 81 ldd r24, Y+1 ; 0x01
f6: 9a 81 ldd r25, Y+2 ; 0x02
f8: 82 17 cp r24, r18
fa: 93 07 cpc r25, r19
fc: 50 f3 brcs .-44 ; 0xd2 <delay_us+0x1e>
for(j=0;j<50;j++)
;
}
fe: 0f 90 pop r0
100: 0f 90 pop r0
102: 0f 90 pop r0
104: 0f 90 pop r0
106: cf 91 pop r28
108: df 91 pop r29
10a: 08 95 ret
0000010c <ads_senddata>:
/*************************************************************************************/
//ads126發送一字節的數據
unsigned char ads_senddata(unsigned char data) //SPI發送數據,要在外部保證SS = 0
{
10c: 8f b9 out 0x0f, r24 ; 15
SPDR = data; //啟動數據傳輸
while((SPSR & 0x80) == 0); // 等待傳輸結束
10e: 77 9b sbis 0x0e, 7 ; 14
110: fe cf rjmp .-4 ; 0x10e <ads_senddata+0x2>
data = SPDR;
112: 8f b1 in r24, 0x0f ; 15
return data;
}
114: 08 95 ret
00000116 <ad_write>:
/*************************************************************************************/
void ad_write(unsigned char reg,unsigned char data)//寫寄存器。選擇寄存器地址,寫入的數據。
{
116: df 93 push r29
118: cf 93 push r28
11a: 00 d0 rcall .+0 ; 0x11c <ad_write+0x6>
11c: 00 d0 rcall .+0 ; 0x11e <ad_write+0x8>
11e: cd b7 in r28, 0x3d ; 61
120: de b7 in r29, 0x3e ; 62
PORTB&=~(1<<PB1); //SPI的CS=0使能
122: c1 98 cbi 0x18, 1 ; 24
while((PIND&0X8)!=0); //DRDY信號高時才能寫寄存器
124: 83 99 sbic 0x10, 3 ; 16
126: fe cf rjmp .-4 ; 0x124 <ad_write+0xe>
ads_senddata(0x50+reg);//選擇寫入寄存器
128: 80 5b subi r24, 0xB0 ; 176
/*************************************************************************************/
//ads126發送一字節的數據
unsigned char ads_senddata(unsigned char data) //SPI發送數據,要在外部保證SS = 0
{
SPDR = data; //啟動數據傳輸
12a: 8f b9 out 0x0f, r24 ; 15
while((SPSR & 0x80) == 0); // 等待傳輸結束
12c: 77 9b sbis 0x0e, 7 ; 14
12e: fe cf rjmp .-4 ; 0x12c <ad_write+0x16>
data = SPDR;
130: 8f b1 in r24, 0x0f ; 15
/*************************************************************************************/
//ads126發送一字節的數據
unsigned char ads_senddata(unsigned char data) //SPI發送數據,要在外部保證SS = 0
{
SPDR = data; //啟動數據傳輸
132: 1f b8 out 0x0f, r1 ; 15
while((SPSR & 0x80) == 0); // 等待傳輸結束
134: 77 9b sbis 0x0e, 7 ; 14
136: fe cf rjmp .-4 ; 0x134 <ad_write+0x1e>
data = SPDR;
138: 8f b1 in r24, 0x0f ; 15
/*************************************************************************************/
//ads126發送一字節的數據
unsigned char ads_senddata(unsigned char data) //SPI發送數據,要在外部保證SS = 0
{
SPDR = data; //啟動數據傳輸
13a: 6f b9 out 0x0f, r22 ; 15
while((SPSR & 0x80) == 0); // 等待傳輸結束
13c: 77 9b sbis 0x0e, 7 ; 14
13e: fe cf rjmp .-4 ; 0x13c <ad_write+0x26>
data = SPDR;
140: 8f b1 in r24, 0x0f ; 15
PORTB&=~(1<<PB1); //SPI的CS=0使能
while((PIND&0X8)!=0); //DRDY信號高時才能寫寄存器
ads_senddata(0x50+reg);//選擇寫入寄存器
ads_senddata(0x00); //寫入1個寄存器
ads_senddata(data); //寫入數據
PORTB|=(1<<PB1); //SPI的CS=1,停止
142: c1 9a sbi 0x18, 1 ; 24
/*************************************************************************************/
volatile void delay_us(unsigned char a) //挺時1uS
{
volatile unsigned int i=0,j=0;
144: 1a 82 std Y+2, r1 ; 0x02
146: 19 82 std Y+1, r1 ; 0x01
148: 1c 82 std Y+4, r1 ; 0x04
14a: 1b 82 std Y+3, r1 ; 0x03
for(i=0;i<a;i++)
14c: 1a 82 std Y+2, r1 ; 0x02
14e: 19 82 std Y+1, r1 ; 0x01
150: 11 c0 rjmp .+34 ; 0x174 <ad_write+0x5e>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -