📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00001506 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000008e 00800060 00001506 0000159a 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000000a 008000ee 008000ee 00001628 2**0
ALLOC
3 .stab 0000036c 00000000 00000000 00001628 2**2
CONTENTS, READONLY, DEBUGGING
4 .stabstr 00000084 00000000 00000000 00001994 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_aranges 00000040 00000000 00000000 00001a18 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 00000089 00000000 00000000 00001a58 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00000354 00000000 00000000 00001ae1 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 000001b9 00000000 00000000 00001e35 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 00000405 00000000 00000000 00001fee 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_frame 00000090 00000000 00000000 000023f3 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_str 0000014b 00000000 00000000 00002483 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_loc 00000226 00000000 00000000 000025ce 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end>
4: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
8: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
c: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
10: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
14: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
18: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
1c: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
20: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
24: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
28: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
2c: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
30: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
34: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
38: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
3c: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
40: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
44: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
48: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
4c: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
50: 0c 94 45 00 jmp 0x8a ; 0x8a <__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: d8 e0 ldi r29, 0x08 ; 8
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: e6 e0 ldi r30, 0x06 ; 6
68: f5 e1 ldi r31, 0x15 ; 21
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: ae 3e cpi r26, 0xEE ; 238
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: ae ee ldi r26, 0xEE ; 238
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: a8 3f cpi r26, 0xF8 ; 248
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0c 94 47 00 jmp 0x8e ; 0x8e <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
0000008e <main>:
#include <main.h>
//############################################################################
//Hauptprogramm
int main (void){
8e: 0e 94 69 00 call 0xd2 ; 0xd2 <Handy_Init>
//############################################################################
//Initzialisierung der unter Routinen
Handy_Init();
Send_SMS("49171666999","So einfach geht das!");
92: 60 e6 ldi r22, 0x60 ; 96
94: 70 e0 ldi r23, 0x00 ; 0
96: 85 e7 ldi r24, 0x75 ; 117
98: 90 e0 ldi r25, 0x00 ; 0
9a: 0e 94 74 00 call 0xe8 ; 0xe8 <Send_SMS>
9e: ff cf rjmp .-2 ; 0x9e <main+0x10>
000000a0 <uart_putchar>:
#include <handy.h>
//############################################################################
//Routine f黵 die Serielle Ausgabe
int uart_putchar (char c){
a0: 1f 93 push r17
a2: 18 2f mov r17, r24
//############################################################################
if (c == '\n')
a4: 8a 30 cpi r24, 0x0A ; 10
a6: 19 f4 brne .+6 ; 0xae <uart_putchar+0xe>
uart_putchar('\r');
a8: 8d e0 ldi r24, 0x0D ; 13
aa: 0e 94 50 00 call 0xa0 ; 0xa0 <uart_putchar>
//Warten solange bis Zeichen gesendet wurde
while(!(USR & (1<<UDRE)));
ae: 5d 9b sbis 0x0b, 5 ; 11
b0: fe cf rjmp .-4 ; 0xae <uart_putchar+0xe>
//Ausgabe des Zeichens
UDR = c;
b2: 1c b9 out 0x0c, r17 ; 12
return (0);
};
b4: 80 e0 ldi r24, 0x00 ; 0
b6: 90 e0 ldi r25, 0x00 ; 0
b8: 1f 91 pop r17
ba: 08 95 ret
000000bc <uart_getchar>:
//############################################################################
//Routine f黵 die Serielle Ausgabe
int uart_getchar (void){
bc: 5f 9b sbis 0x0b, 7 ; 11
be: fe cf rjmp .-4 ; 0xbc <uart_getchar>
//############################################################################
while(!(USR & (1<<RXC)));
return(UDR);
c0: 8c b1 in r24, 0x0c ; 12
};
c2: 99 27 eor r25, r25
c4: 08 95 ret
000000c6 <uart_clear>:
//############################################################################
//Routine f黵 die Serielle Ausgabe
void uart_clear (void){
c6: 90 e0 ldi r25, 0x00 ; 0
//############################################################################
unsigned char a;
for (char c=0;c<10;c++){
a = UDR;
c8: 8c b1 in r24, 0x0c ; 12
ca: 9f 5f subi r25, 0xFF ; 255
cc: 9a 30 cpi r25, 0x0A ; 10
ce: e1 f7 brne .-8 ; 0xc8 <uart_clear+0x2>
d0: 08 95 ret
000000d2 <Handy_Init>:
}
};
//############################################################################
//INstallation der Seriellen Schnittstelle
void Handy_Init (void){
d2: 88 e1 ldi r24, 0x18 ; 24
d4: 8a b9 out 0x0a, r24 ; 10
//############################################################################
//Enable TXEN im Register UCR TX-Data Enable
UCR=(1 << TXEN | 1<<RXEN);
//Teiler wird gesetzt
UBRR=(SYSCLK / (BAUD_RATE * 16L) - 1);
d6: 8d e4 ldi r24, 0x4D ; 77
d8: 89 b9 out 0x09, r24 ; 9
//鰂fnet einen Kanal f黵 printf (STDOUT)
fdevopen (uart_putchar, uart_getchar);
da: 6e e5 ldi r22, 0x5E ; 94
dc: 70 e0 ldi r23, 0x00 ; 0
de: 80 e5 ldi r24, 0x50 ; 80
e0: 90 e0 ldi r25, 0x00 ; 0
e2: 0e 94 fc 01 call 0x3f8 ; 0x3f8 <fdevopen>
e6: 08 95 ret
000000e8 <Send_SMS>:
};
//############################################################################
void Handy_Time ( unsigned char *year,unsigned char *month,
unsigned char *day,unsigned char *hour,
unsigned char *minute,unsigned char *secound){
//############################################################################
unsigned char tmp[30];
unsigned int var[5];
uart_clear();
printf("at+cclk?\r\n");
gets(tmp);
scanf("+CCLK: \"%2d/%2d/%2d,%2d:%2d:%2d+ \"\r\n",&var[0],&var[1],
&var[2],&var[3],
&var[4],&var[5]);
*year = var[0];
*month = var[1];
*day = var[2];
*hour= var[3];
*minute = var[4];
*secound = var[5];
};
//############################################################################
char Send_SMS (char* zielnummer,char* nachricht){
e8: bf 92 push r11
ea: cf 92 push r12
ec: df 92 push r13
ee: ef 92 push r14
f0: ff 92 push r15
f2: 0f 93 push r16
f4: 1f 93 push r17
f6: cf 93 push r28
f8: df 93 push r29
fa: cd b7 in r28, 0x3d ; 61
fc: de b7 in r29, 0x3e ; 62
fe: c1 54 subi r28, 0x41 ; 65
100: d0 40 sbci r29, 0x00 ; 0
102: 0f b6 in r0, 0x3f ; 63
104: f8 94 cli
106: de bf out 0x3e, r29 ; 62
108: 0f be out 0x3f, r0 ; 63
10a: cd bf out 0x3d, r28 ; 61
10c: 6c 01 movw r12, r24
10e: 7b 01 movw r14, r22
110: 00 e0 ldi r16, 0x00 ; 0
112: 81 e0 ldi r24, 0x01 ; 1
114: b8 2e mov r11, r24
116: 38 c0 rjmp .+112 ; 0x188 <Send_SMS+0xa0>
//############################################################################
unsigned char tmp1 = 0;
unsigned char tmp2 = 1;
unsigned char tmp3 = 0;
unsigned char tmp4 = 0;
unsigned char nachrichtneu[49];
unsigned char zielnummerneu[16];
unsigned char shift = 0;
//erzeugen des Nachrichten Strings
while (nachricht[tmp1] != 0){
nachrichtneu[tmp2] = (nachricht[tmp1]&0x7F)>>shift;
118: 2b 2d mov r18, r11
11a: 33 27 eor r19, r19
11c: 41 2f mov r20, r17
11e: 55 27 eor r21, r21
120: be 01 movw r22, r28
122: 6f 5e subi r22, 0xEF ; 239
124: 7f 4f sbci r23, 0xFF ; 255
126: fb 01 movw r30, r22
128: e2 0f add r30, r18
12a: f3 1f adc r31, r19
12c: 99 27 eor r25, r25
12e: 8f 77 andi r24, 0x7F ; 127
130: 90 70 andi r25, 0x00 ; 0
132: 04 2e mov r0, r20
134: 02 c0 rjmp .+4 ; 0x13a <Send_SMS+0x52>
136: 95 95 asr r25
138: 87 95 ror r24
13a: 0a 94 dec r0
13c: e2 f7 brpl .-8 ; 0x136 <Send_SMS+0x4e>
13e: 80 83 st Z, r24
140: 0f 5f subi r16, 0xFF ; 255
if (shift != 0){
142: 11 23 and r17, r17
144: 09 f4 brne .+2 ; 0x148 <Send_SMS+0x60>
146: c8 c0 rjmp .+400 ; 0x2d8 <Send_SMS+0x1f0>
nachrichtneu[tmp2-1] |= (nachricht[tmp1]&((1<<shift)-1))<<(8-shift);
148: f9 01 movw r30, r18
14a: 31 97 sbiw r30, 0x01 ; 1
14c: 2c 91 ld r18, X
14e: e6 0f add r30, r22
150: f7 1f adc r31, r23
152: 33 27 eor r19, r19
154: 81 e0 ldi r24, 0x01 ; 1
156: 90 e0 ldi r25, 0x00 ; 0
158: 04 2e mov r0, r20
15a: 02 c0 rjmp .+4 ; 0x160 <Send_SMS+0x78>
15c: 88 0f add r24, r24
15e: 99 1f adc r25, r25
160: 0a 94 dec r0
162: e2 f7 brpl .-8 ; 0x15c <Send_SMS+0x74>
164: 01 97 sbiw r24, 0x01 ; 1
166: 28 23 and r18, r24
168: 39 23 and r19, r25
16a: 88 e0 ldi r24, 0x08 ; 8
16c: 90 e0 ldi r25, 0x00 ; 0
16e: 84 1b sub r24, r20
170: 95 0b sbc r25, r21
172: 02 c0 rjmp .+4 ; 0x178 <Send_SMS+0x90>
174: 22 0f add r18, r18
176: 33 1f adc r19, r19
178: 8a 95 dec r24
17a: e2 f7 brpl .-8 ; 0x174 <Send_SMS+0x8c>
17c: 80 81 ld r24, Z
17e: 82 2b or r24, r18
180: 80 83 st Z, r24
};
shift++;
182: 1f 5f subi r17, 0xFF ; 255
tmp1++;
if (shift == 8){
184: 18 30 cpi r17, 0x08 ; 8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -