CODE
#include <avr/io.h>
#include <compat/ina90.h>
#include <avr/interrupt.h>
#define baudrate 23
#define UART_RX_BUFFER_SIZE 256
#define UART_TX_BUFFER_SIZE 256
#define UART_RX_BUFFER_MASK 255
#define UART_TX_BUFFER_MASK 255
#define F_ReceiveByte 0
#define F_TransmitData 1
static volatile uint8_t fl;
static volatile uint8_t UART_RxBuf[UART_RX_BUFFER_SIZE];
static volatile uint8_t UART_RxHead;
static volatile uint8_t UART_RxTail;
static volatile uint8_t UART_TxBuf[UART_TX_BUFFER_SIZE];
static volatile uint8_t UART_TxHead;
static volatile uint8_t UART_TxTail;
void initUART ( void )
{
UBRRH = ( uint8_t ) ( baudrate >> 8 );
UBRRL = ( uint8_t ) baudrate;
UCSRB = ( ( 1 << RXCIE ) | ( 1 << RXEN ) | ( 1 << TXEN ) );
UART_RxTail = 0;
UART_RxHead = 0;
UART_TxTail = 0;
UART_TxHead = 0;
}
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
while ( tmphead == UART_TxTail );
UART_TxBuf[tmphead] = data;
UART_TxHead = tmphead;
UCSRB |= ( 1 << UDRIE );
}
uint8_t ReceiveByte ( void )
{
uint8_t tmptail;
while ( UART_RxHead == UART_RxTail );
tmptail = ( UART_RxTail + 1 ) & UART_RX_BUFFER_MASK;
UART_RxTail = tmptail;
if(UART_RxHead == UART_RxTail)
fl &= ~( 1 << F_ReceiveByte );
return UART_RxBuf[tmptail];
}
SIGNAL ( USART_RXC_vect )
{
uint8_t data;
uint8_t tmphead;
fl |= ( 1 << F_ReceiveByte );
data = UDR;
tmphead = ( UART_RxHead + 1 ) & UART_RX_BUFFER_MASK;
UART_RxHead = tmphead;
UART_RxBuf[UART_RxHead] = data;
}
SIGNAL ( USART_UDRE_vect )
{
uint8_t tmptail;
if ( UART_TxHead != UART_TxTail )
{
tmptail = ( UART_TxTail + 1 ) & UART_TX_BUFFER_MASK;
UART_TxTail = tmptail;
UDR = UART_TxBuf[tmptail];
}
else
{
UCSRB &= ~( 1 << UDRIE );
}
}
int main ( void )
{
initUART();
_SEI ( );
while ( 1 )
{
TransmitByte(36);
TransmitByte(37);
TransmitByte(38);
TransmitByte(39);
TransmitByte(40);
TransmitByte(41);
TransmitByte(42);
TransmitByte(43);
}
return 0;
}
#include <compat/ina90.h>
#include <avr/interrupt.h>
#define baudrate 23
#define UART_RX_BUFFER_SIZE 256
#define UART_TX_BUFFER_SIZE 256
#define UART_RX_BUFFER_MASK 255
#define UART_TX_BUFFER_MASK 255
#define F_ReceiveByte 0
#define F_TransmitData 1
static volatile uint8_t fl;
static volatile uint8_t UART_RxBuf[UART_RX_BUFFER_SIZE];
static volatile uint8_t UART_RxHead;
static volatile uint8_t UART_RxTail;
static volatile uint8_t UART_TxBuf[UART_TX_BUFFER_SIZE];
static volatile uint8_t UART_TxHead;
static volatile uint8_t UART_TxTail;
void initUART ( void )
{
UBRRH = ( uint8_t ) ( baudrate >> 8 );
UBRRL = ( uint8_t ) baudrate;
UCSRB = ( ( 1 << RXCIE ) | ( 1 << RXEN ) | ( 1 << TXEN ) );
UART_RxTail = 0;
UART_RxHead = 0;
UART_TxTail = 0;
UART_TxHead = 0;
}
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
while ( tmphead == UART_TxTail );
UART_TxBuf[tmphead] = data;
UART_TxHead = tmphead;
UCSRB |= ( 1 << UDRIE );
}
uint8_t ReceiveByte ( void )
{
uint8_t tmptail;
while ( UART_RxHead == UART_RxTail );
tmptail = ( UART_RxTail + 1 ) & UART_RX_BUFFER_MASK;
UART_RxTail = tmptail;
if(UART_RxHead == UART_RxTail)
fl &= ~( 1 << F_ReceiveByte );
return UART_RxBuf[tmptail];
}
SIGNAL ( USART_RXC_vect )
{
uint8_t data;
uint8_t tmphead;
fl |= ( 1 << F_ReceiveByte );
data = UDR;
tmphead = ( UART_RxHead + 1 ) & UART_RX_BUFFER_MASK;
UART_RxHead = tmphead;
UART_RxBuf[UART_RxHead] = data;
}
SIGNAL ( USART_UDRE_vect )
{
uint8_t tmptail;
if ( UART_TxHead != UART_TxTail )
{
tmptail = ( UART_TxTail + 1 ) & UART_TX_BUFFER_MASK;
UART_TxTail = tmptail;
UDR = UART_TxBuf[tmptail];
}
else
{
UCSRB &= ~( 1 << UDRIE );
}
}
int main ( void )
{
initUART();
_SEI ( );
while ( 1 )
{
TransmitByte(36);
TransmitByte(37);
TransmitByte(38);
TransmitByte(39);
TransmitByte(40);
TransmitByte(41);
TransmitByte(42);
TransmitByte(43);
}
return 0;
}
После компиляции в WinAVR получаю:
CODE
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000002b8 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000205 00800060 00800060 0000032c 2**0
ALLOC
2 .debug_aranges 00000020 00000000 00000000 0000032c 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 00000069 00000000 00000000 0000034c 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 00000337 00000000 00000000 000003b5 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 00000164 00000000 00000000 000006ec 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 00000348 00000000 00000000 00000850 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 00000070 00000000 00000000 00000b98 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_str 000000fa 00000000 00000000 00000c08 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_loc 000000fa 00000000 00000000 00000d02 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_ranges 00000180 00000000 00000000 00000dfc 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 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
34: 0c 94 83 00 jmp 0x106 ; 0x106 <__vector_13>
38: 0c 94 a7 00 jmp 0x14e ; 0x14e <__vector_14>
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: 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: e8 eb ldi r30, 0xB8 ; 184
68: f2 e0 ldi r31, 0x02 ; 2
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: a0 36 cpi r26, 0x60 ; 96
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 12 e0 ldi r17, 0x02 ; 2
78: a0 e6 ldi r26, 0x60 ; 96
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: a5 36 cpi r26, 0x65 ; 101
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0e 94 cb 00 call 0x196 ; 0x196 <main>
8a: 0c 94 5a 01 jmp 0x2b4 ; 0x2b4 <_exit>
0000008e <__bad_interrupt>:
8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000092 <initUART>:
void initUART ( void )
{
UBRRH = ( uint8_t ) ( baudrate >> 8 );
92: 10 bc out 0x20, r1 ; 32
UBRRL = ( uint8_t ) baudrate;
94: 87 e1 ldi r24, 0x17 ; 23
96: 89 b9 out 0x09, r24 ; 9
UCSRB = ( ( 1 << RXCIE ) | ( 1 << RXEN ) | ( 1 << TXEN ) );
98: 88 e9 ldi r24, 0x98 ; 152
9a: 8a b9 out 0x0a, r24 ; 10
UART_RxTail = 0;
9c: 10 92 62 01 sts 0x0162, r1
UART_RxHead = 0;
a0: 10 92 61 01 sts 0x0161, r1
UART_TxTail = 0;
a4: 10 92 64 02 sts 0x0264, r1
UART_TxHead = 0;
a8: 10 92 63 02 sts 0x0263, r1
}
ac: 08 95 ret
000000ae <TransmitByte>:
void TransmitByte ( uint8_t data )
{
ae: 28 2f mov r18, r24
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
b0: 90 91 63 02 lds r25, 0x0263
b4: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
b6: 80 91 64 02 lds r24, 0x0264
ba: 98 17 cp r25, r24
bc: e1 f3 breq .-8 ; 0xb6 <TransmitByte+0x8>
UART_TxBuf[tmphead] = data;
be: e9 2f mov r30, r25
c0: f0 e0 ldi r31, 0x00 ; 0
c2: ed 59 subi r30, 0x9D ; 157
c4: fe 4f sbci r31, 0xFE ; 254
c6: 20 83 st Z, r18
UART_TxHead = tmphead;
c8: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
cc: 55 9a sbi 0x0a, 5 ; 10
}
ce: 08 95 ret
000000d0 <ReceiveByte>:
uint8_t ReceiveByte ( void )
{
uint8_t tmptail;
while ( UART_RxHead == UART_RxTail );
d0: 90 91 61 01 lds r25, 0x0161
d4: 80 91 62 01 lds r24, 0x0162
d8: 98 17 cp r25, r24
da: d1 f3 breq .-12 ; 0xd0 <ReceiveByte>
tmptail = ( UART_RxTail + 1 ) & UART_RX_BUFFER_MASK;
dc: e0 91 62 01 lds r30, 0x0162
e0: ef 5f subi r30, 0xFF ; 255
UART_RxTail = tmptail;
e2: e0 93 62 01 sts 0x0162, r30
if(UART_RxHead == UART_RxTail)
e6: 90 91 61 01 lds r25, 0x0161
ea: 80 91 62 01 lds r24, 0x0162
ee: 98 17 cp r25, r24
f0: 29 f4 brne .+10 ; 0xfc <ReceiveByte+0x2c>
fl &= ~( 1 << F_ReceiveByte );
f2: 80 91 60 00 lds r24, 0x0060
f6: 8e 7f andi r24, 0xFE ; 254
f8: 80 93 60 00 sts 0x0060, r24
return UART_RxBuf[tmptail];
fc: f0 e0 ldi r31, 0x00 ; 0
fe: ef 59 subi r30, 0x9F ; 159
100: ff 4f sbci r31, 0xFF ; 255
102: 80 81 ld r24, Z
}
104: 08 95 ret
00000106 <__vector_13>:
SIGNAL ( USART_RXC_vect )
{
106: 1f 92 push r1
108: 0f 92 push r0
10a: 0f b6 in r0, 0x3f ; 63
10c: 0f 92 push r0
10e: 11 24 eor r1, r1
110: 8f 93 push r24
112: 9f 93 push r25
114: ef 93 push r30
116: ff 93 push r31
uint8_t data;
uint8_t tmphead;
fl |= ( 1 << F_ReceiveByte );
118: 80 91 60 00 lds r24, 0x0060
11c: 81 60 ori r24, 0x01 ; 1
11e: 80 93 60 00 sts 0x0060, r24
data = UDR;
122: 9c b1 in r25, 0x0c ; 12
tmphead = ( UART_RxHead + 1 ) & UART_RX_BUFFER_MASK;
124: 80 91 61 01 lds r24, 0x0161
128: 8f 5f subi r24, 0xFF ; 255
UART_RxHead = tmphead;
12a: 80 93 61 01 sts 0x0161, r24
UART_RxBuf[UART_RxHead] = data;
12e: 80 91 61 01 lds r24, 0x0161
132: e1 e6 ldi r30, 0x61 ; 97
134: f0 e0 ldi r31, 0x00 ; 0
136: e8 0f add r30, r24
138: f1 1d adc r31, r1
13a: 90 83 st Z, r25
}
13c: ff 91 pop r31
13e: ef 91 pop r30
140: 9f 91 pop r25
142: 8f 91 pop r24
144: 0f 90 pop r0
146: 0f be out 0x3f, r0 ; 63
148: 0f 90 pop r0
14a: 1f 90 pop r1
14c: 18 95 reti
0000014e <__vector_14>:
SIGNAL ( USART_UDRE_vect )
{
14e: 1f 92 push r1
150: 0f 92 push r0
152: 0f b6 in r0, 0x3f ; 63
154: 0f 92 push r0
156: 11 24 eor r1, r1
158: 8f 93 push r24
15a: 9f 93 push r25
15c: ef 93 push r30
15e: ff 93 push r31
uint8_t tmptail;
if ( UART_TxHead != UART_TxTail )
160: 90 91 63 02 lds r25, 0x0263
164: 80 91 64 02 lds r24, 0x0264
168: 98 17 cp r25, r24
16a: 59 f0 breq .+22 ; 0x182 <__vector_14+0x34>
{
tmptail = ( UART_TxTail + 1 ) & UART_TX_BUFFER_MASK;
16c: e0 91 64 02 lds r30, 0x0264
170: ef 5f subi r30, 0xFF ; 255
UART_TxTail = tmptail;
172: e0 93 64 02 sts 0x0264, r30
UDR = UART_TxBuf[tmptail];
176: f0 e0 ldi r31, 0x00 ; 0
178: ed 59 subi r30, 0x9D ; 157
17a: fe 4f sbci r31, 0xFE ; 254
17c: 80 81 ld r24, Z
17e: 8c b9 out 0x0c, r24 ; 12
180: 01 c0 rjmp .+2 ; 0x184 <__vector_14+0x36>
}
else
{
UCSRB &= ~( 1 << UDRIE );
182: 55 98 cbi 0x0a, 5 ; 10
}
}
184: ff 91 pop r31
186: ef 91 pop r30
188: 9f 91 pop r25
18a: 8f 91 pop r24
18c: 0f 90 pop r0
18e: 0f be out 0x3f, r0 ; 63
190: 0f 90 pop r0
192: 1f 90 pop r1
194: 18 95 reti
00000196 <main>:
void initUART ( void )
{
UBRRH = ( uint8_t ) ( baudrate >> 8 );
196: 10 bc out 0x20, r1 ; 32
UBRRL = ( uint8_t ) baudrate;
198: 87 e1 ldi r24, 0x17 ; 23
19a: 89 b9 out 0x09, r24 ; 9
UCSRB = ( ( 1 << RXCIE ) | ( 1 << RXEN ) | ( 1 << TXEN ) );
19c: 88 e9 ldi r24, 0x98 ; 152
19e: 8a b9 out 0x0a, r24 ; 10
UART_RxTail = 0;
1a0: 10 92 62 01 sts 0x0162, r1
UART_RxHead = 0;
1a4: 10 92 61 01 sts 0x0161, r1
UART_TxTail = 0;
1a8: 10 92 64 02 sts 0x0264, r1
UART_TxHead = 0;
1ac: 10 92 63 02 sts 0x0263, r1
}
int main ( void )
{
initUART();
_SEI ( );
1b0: 78 94 sei
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
while ( tmphead == UART_TxTail );
UART_TxBuf[tmphead] = data;
1b2: b4 e2 ldi r27, 0x24 ; 36
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
1b4: a5 e2 ldi r26, 0x25 ; 37
1b6: 76 e2 ldi r23, 0x26 ; 38
1b8: 67 e2 ldi r22, 0x27 ; 39
1ba: 58 e2 ldi r21, 0x28 ; 40
1bc: 49 e2 ldi r20, 0x29 ; 41
1be: 3a e2 ldi r19, 0x2A ; 42
1c0: 2b e2 ldi r18, 0x2B ; 43
1c2: 90 91 63 02 lds r25, 0x0263
1c6: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
1c8: 80 91 64 02 lds r24, 0x0264
1cc: 98 17 cp r25, r24
1ce: e1 f3 breq .-8 ; 0x1c8 <main+0x32>
UART_TxBuf[tmphead] = data;
1d0: e9 2f mov r30, r25
1d2: f0 e0 ldi r31, 0x00 ; 0
1d4: ed 59 subi r30, 0x9D ; 157
1d6: fe 4f sbci r31, 0xFE ; 254
1d8: b0 83 st Z, r27
UART_TxHead = tmphead;
1da: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
1de: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
1e0: 90 91 63 02 lds r25, 0x0263
1e4: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
1e6: 80 91 64 02 lds r24, 0x0264
1ea: 98 17 cp r25, r24
1ec: e1 f3 breq .-8 ; 0x1e6 <main+0x50>
UART_TxBuf[tmphead] = data;
1ee: e9 2f mov r30, r25
1f0: f0 e0 ldi r31, 0x00 ; 0
1f2: ed 59 subi r30, 0x9D ; 157
1f4: fe 4f sbci r31, 0xFE ; 254
1f6: a0 83 st Z, r26
UART_TxHead = tmphead;
1f8: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
1fc: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
1fe: 90 91 63 02 lds r25, 0x0263
202: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
204: 80 91 64 02 lds r24, 0x0264
208: 98 17 cp r25, r24
20a: e1 f3 breq .-8 ; 0x204 <main+0x6e>
UART_TxBuf[tmphead] = data;
20c: e9 2f mov r30, r25
20e: f0 e0 ldi r31, 0x00 ; 0
210: ed 59 subi r30, 0x9D ; 157
212: fe 4f sbci r31, 0xFE ; 254
214: 70 83 st Z, r23
UART_TxHead = tmphead;
216: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
21a: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
21c: 90 91 63 02 lds r25, 0x0263
220: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
222: 80 91 64 02 lds r24, 0x0264
226: 98 17 cp r25, r24
228: e1 f3 breq .-8 ; 0x222 <main+0x8c>
UART_TxBuf[tmphead] = data;
22a: e9 2f mov r30, r25
22c: f0 e0 ldi r31, 0x00 ; 0
22e: ed 59 subi r30, 0x9D ; 157
230: fe 4f sbci r31, 0xFE ; 254
232: 60 83 st Z, r22
UART_TxHead = tmphead;
234: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
238: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
23a: 90 91 63 02 lds r25, 0x0263
23e: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
240: 80 91 64 02 lds r24, 0x0264
244: 98 17 cp r25, r24
246: e1 f3 breq .-8 ; 0x240 <main+0xaa>
UART_TxBuf[tmphead] = data;
248: e9 2f mov r30, r25
24a: f0 e0 ldi r31, 0x00 ; 0
24c: ed 59 subi r30, 0x9D ; 157
24e: fe 4f sbci r31, 0xFE ; 254
250: 50 83 st Z, r21
UART_TxHead = tmphead;
252: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
256: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
258: 90 91 63 02 lds r25, 0x0263
25c: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
25e: 80 91 64 02 lds r24, 0x0264
262: 98 17 cp r25, r24
264: e1 f3 breq .-8 ; 0x25e <main+0xc8>
UART_TxBuf[tmphead] = data;
266: e9 2f mov r30, r25
268: f0 e0 ldi r31, 0x00 ; 0
26a: ed 59 subi r30, 0x9D ; 157
26c: fe 4f sbci r31, 0xFE ; 254
26e: 40 83 st Z, r20
UART_TxHead = tmphead;
270: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
274: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
276: 90 91 63 02 lds r25, 0x0263
27a: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
27c: 80 91 64 02 lds r24, 0x0264
280: 98 17 cp r25, r24
282: e1 f3 breq .-8 ; 0x27c <main+0xe6>
UART_TxBuf[tmphead] = data;
284: e9 2f mov r30, r25
286: f0 e0 ldi r31, 0x00 ; 0
288: ed 59 subi r30, 0x9D ; 157
28a: fe 4f sbci r31, 0xFE ; 254
28c: 30 83 st Z, r19
UART_TxHead = tmphead;
28e: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
292: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
294: 90 91 63 02 lds r25, 0x0263
298: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
29a: 80 91 64 02 lds r24, 0x0264
29e: 98 17 cp r25, r24
2a0: e1 f3 breq .-8 ; 0x29a <main+0x104>
UART_TxBuf[tmphead] = data;
2a2: e9 2f mov r30, r25
2a4: f0 e0 ldi r31, 0x00 ; 0
2a6: ed 59 subi r30, 0x9D ; 157
2a8: fe 4f sbci r31, 0xFE ; 254
2aa: 20 83 st Z, r18
UART_TxHead = tmphead;
2ac: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
2b0: 55 9a sbi 0x0a, 5 ; 10
2b2: 87 cf rjmp .-242 ; 0x1c2 <main+0x2c>
000002b4 <_exit>:
2b4: f8 94 cli
000002b6 <__stop_program>:
2b6: ff cf rjmp .-2 ; 0x2b6 <__stop_program>
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000002b8 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000205 00800060 00800060 0000032c 2**0
ALLOC
2 .debug_aranges 00000020 00000000 00000000 0000032c 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 00000069 00000000 00000000 0000034c 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 00000337 00000000 00000000 000003b5 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 00000164 00000000 00000000 000006ec 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 00000348 00000000 00000000 00000850 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 00000070 00000000 00000000 00000b98 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_str 000000fa 00000000 00000000 00000c08 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_loc 000000fa 00000000 00000000 00000d02 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_ranges 00000180 00000000 00000000 00000dfc 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 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
34: 0c 94 83 00 jmp 0x106 ; 0x106 <__vector_13>
38: 0c 94 a7 00 jmp 0x14e ; 0x14e <__vector_14>
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: 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: e8 eb ldi r30, 0xB8 ; 184
68: f2 e0 ldi r31, 0x02 ; 2
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: a0 36 cpi r26, 0x60 ; 96
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 12 e0 ldi r17, 0x02 ; 2
78: a0 e6 ldi r26, 0x60 ; 96
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: a5 36 cpi r26, 0x65 ; 101
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0e 94 cb 00 call 0x196 ; 0x196 <main>
8a: 0c 94 5a 01 jmp 0x2b4 ; 0x2b4 <_exit>
0000008e <__bad_interrupt>:
8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000092 <initUART>:
void initUART ( void )
{
UBRRH = ( uint8_t ) ( baudrate >> 8 );
92: 10 bc out 0x20, r1 ; 32
UBRRL = ( uint8_t ) baudrate;
94: 87 e1 ldi r24, 0x17 ; 23
96: 89 b9 out 0x09, r24 ; 9
UCSRB = ( ( 1 << RXCIE ) | ( 1 << RXEN ) | ( 1 << TXEN ) );
98: 88 e9 ldi r24, 0x98 ; 152
9a: 8a b9 out 0x0a, r24 ; 10
UART_RxTail = 0;
9c: 10 92 62 01 sts 0x0162, r1
UART_RxHead = 0;
a0: 10 92 61 01 sts 0x0161, r1
UART_TxTail = 0;
a4: 10 92 64 02 sts 0x0264, r1
UART_TxHead = 0;
a8: 10 92 63 02 sts 0x0263, r1
}
ac: 08 95 ret
000000ae <TransmitByte>:
void TransmitByte ( uint8_t data )
{
ae: 28 2f mov r18, r24
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
b0: 90 91 63 02 lds r25, 0x0263
b4: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
b6: 80 91 64 02 lds r24, 0x0264
ba: 98 17 cp r25, r24
bc: e1 f3 breq .-8 ; 0xb6 <TransmitByte+0x8>
UART_TxBuf[tmphead] = data;
be: e9 2f mov r30, r25
c0: f0 e0 ldi r31, 0x00 ; 0
c2: ed 59 subi r30, 0x9D ; 157
c4: fe 4f sbci r31, 0xFE ; 254
c6: 20 83 st Z, r18
UART_TxHead = tmphead;
c8: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
cc: 55 9a sbi 0x0a, 5 ; 10
}
ce: 08 95 ret
000000d0 <ReceiveByte>:
uint8_t ReceiveByte ( void )
{
uint8_t tmptail;
while ( UART_RxHead == UART_RxTail );
d0: 90 91 61 01 lds r25, 0x0161
d4: 80 91 62 01 lds r24, 0x0162
d8: 98 17 cp r25, r24
da: d1 f3 breq .-12 ; 0xd0 <ReceiveByte>
tmptail = ( UART_RxTail + 1 ) & UART_RX_BUFFER_MASK;
dc: e0 91 62 01 lds r30, 0x0162
e0: ef 5f subi r30, 0xFF ; 255
UART_RxTail = tmptail;
e2: e0 93 62 01 sts 0x0162, r30
if(UART_RxHead == UART_RxTail)
e6: 90 91 61 01 lds r25, 0x0161
ea: 80 91 62 01 lds r24, 0x0162
ee: 98 17 cp r25, r24
f0: 29 f4 brne .+10 ; 0xfc <ReceiveByte+0x2c>
fl &= ~( 1 << F_ReceiveByte );
f2: 80 91 60 00 lds r24, 0x0060
f6: 8e 7f andi r24, 0xFE ; 254
f8: 80 93 60 00 sts 0x0060, r24
return UART_RxBuf[tmptail];
fc: f0 e0 ldi r31, 0x00 ; 0
fe: ef 59 subi r30, 0x9F ; 159
100: ff 4f sbci r31, 0xFF ; 255
102: 80 81 ld r24, Z
}
104: 08 95 ret
00000106 <__vector_13>:
SIGNAL ( USART_RXC_vect )
{
106: 1f 92 push r1
108: 0f 92 push r0
10a: 0f b6 in r0, 0x3f ; 63
10c: 0f 92 push r0
10e: 11 24 eor r1, r1
110: 8f 93 push r24
112: 9f 93 push r25
114: ef 93 push r30
116: ff 93 push r31
uint8_t data;
uint8_t tmphead;
fl |= ( 1 << F_ReceiveByte );
118: 80 91 60 00 lds r24, 0x0060
11c: 81 60 ori r24, 0x01 ; 1
11e: 80 93 60 00 sts 0x0060, r24
data = UDR;
122: 9c b1 in r25, 0x0c ; 12
tmphead = ( UART_RxHead + 1 ) & UART_RX_BUFFER_MASK;
124: 80 91 61 01 lds r24, 0x0161
128: 8f 5f subi r24, 0xFF ; 255
UART_RxHead = tmphead;
12a: 80 93 61 01 sts 0x0161, r24
UART_RxBuf[UART_RxHead] = data;
12e: 80 91 61 01 lds r24, 0x0161
132: e1 e6 ldi r30, 0x61 ; 97
134: f0 e0 ldi r31, 0x00 ; 0
136: e8 0f add r30, r24
138: f1 1d adc r31, r1
13a: 90 83 st Z, r25
}
13c: ff 91 pop r31
13e: ef 91 pop r30
140: 9f 91 pop r25
142: 8f 91 pop r24
144: 0f 90 pop r0
146: 0f be out 0x3f, r0 ; 63
148: 0f 90 pop r0
14a: 1f 90 pop r1
14c: 18 95 reti
0000014e <__vector_14>:
SIGNAL ( USART_UDRE_vect )
{
14e: 1f 92 push r1
150: 0f 92 push r0
152: 0f b6 in r0, 0x3f ; 63
154: 0f 92 push r0
156: 11 24 eor r1, r1
158: 8f 93 push r24
15a: 9f 93 push r25
15c: ef 93 push r30
15e: ff 93 push r31
uint8_t tmptail;
if ( UART_TxHead != UART_TxTail )
160: 90 91 63 02 lds r25, 0x0263
164: 80 91 64 02 lds r24, 0x0264
168: 98 17 cp r25, r24
16a: 59 f0 breq .+22 ; 0x182 <__vector_14+0x34>
{
tmptail = ( UART_TxTail + 1 ) & UART_TX_BUFFER_MASK;
16c: e0 91 64 02 lds r30, 0x0264
170: ef 5f subi r30, 0xFF ; 255
UART_TxTail = tmptail;
172: e0 93 64 02 sts 0x0264, r30
UDR = UART_TxBuf[tmptail];
176: f0 e0 ldi r31, 0x00 ; 0
178: ed 59 subi r30, 0x9D ; 157
17a: fe 4f sbci r31, 0xFE ; 254
17c: 80 81 ld r24, Z
17e: 8c b9 out 0x0c, r24 ; 12
180: 01 c0 rjmp .+2 ; 0x184 <__vector_14+0x36>
}
else
{
UCSRB &= ~( 1 << UDRIE );
182: 55 98 cbi 0x0a, 5 ; 10
}
}
184: ff 91 pop r31
186: ef 91 pop r30
188: 9f 91 pop r25
18a: 8f 91 pop r24
18c: 0f 90 pop r0
18e: 0f be out 0x3f, r0 ; 63
190: 0f 90 pop r0
192: 1f 90 pop r1
194: 18 95 reti
00000196 <main>:
void initUART ( void )
{
UBRRH = ( uint8_t ) ( baudrate >> 8 );
196: 10 bc out 0x20, r1 ; 32
UBRRL = ( uint8_t ) baudrate;
198: 87 e1 ldi r24, 0x17 ; 23
19a: 89 b9 out 0x09, r24 ; 9
UCSRB = ( ( 1 << RXCIE ) | ( 1 << RXEN ) | ( 1 << TXEN ) );
19c: 88 e9 ldi r24, 0x98 ; 152
19e: 8a b9 out 0x0a, r24 ; 10
UART_RxTail = 0;
1a0: 10 92 62 01 sts 0x0162, r1
UART_RxHead = 0;
1a4: 10 92 61 01 sts 0x0161, r1
UART_TxTail = 0;
1a8: 10 92 64 02 sts 0x0264, r1
UART_TxHead = 0;
1ac: 10 92 63 02 sts 0x0263, r1
}
int main ( void )
{
initUART();
_SEI ( );
1b0: 78 94 sei
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
while ( tmphead == UART_TxTail );
UART_TxBuf[tmphead] = data;
1b2: b4 e2 ldi r27, 0x24 ; 36
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
1b4: a5 e2 ldi r26, 0x25 ; 37
1b6: 76 e2 ldi r23, 0x26 ; 38
1b8: 67 e2 ldi r22, 0x27 ; 39
1ba: 58 e2 ldi r21, 0x28 ; 40
1bc: 49 e2 ldi r20, 0x29 ; 41
1be: 3a e2 ldi r19, 0x2A ; 42
1c0: 2b e2 ldi r18, 0x2B ; 43
1c2: 90 91 63 02 lds r25, 0x0263
1c6: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
1c8: 80 91 64 02 lds r24, 0x0264
1cc: 98 17 cp r25, r24
1ce: e1 f3 breq .-8 ; 0x1c8 <main+0x32>
UART_TxBuf[tmphead] = data;
1d0: e9 2f mov r30, r25
1d2: f0 e0 ldi r31, 0x00 ; 0
1d4: ed 59 subi r30, 0x9D ; 157
1d6: fe 4f sbci r31, 0xFE ; 254
1d8: b0 83 st Z, r27
UART_TxHead = tmphead;
1da: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
1de: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
1e0: 90 91 63 02 lds r25, 0x0263
1e4: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
1e6: 80 91 64 02 lds r24, 0x0264
1ea: 98 17 cp r25, r24
1ec: e1 f3 breq .-8 ; 0x1e6 <main+0x50>
UART_TxBuf[tmphead] = data;
1ee: e9 2f mov r30, r25
1f0: f0 e0 ldi r31, 0x00 ; 0
1f2: ed 59 subi r30, 0x9D ; 157
1f4: fe 4f sbci r31, 0xFE ; 254
1f6: a0 83 st Z, r26
UART_TxHead = tmphead;
1f8: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
1fc: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
1fe: 90 91 63 02 lds r25, 0x0263
202: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
204: 80 91 64 02 lds r24, 0x0264
208: 98 17 cp r25, r24
20a: e1 f3 breq .-8 ; 0x204 <main+0x6e>
UART_TxBuf[tmphead] = data;
20c: e9 2f mov r30, r25
20e: f0 e0 ldi r31, 0x00 ; 0
210: ed 59 subi r30, 0x9D ; 157
212: fe 4f sbci r31, 0xFE ; 254
214: 70 83 st Z, r23
UART_TxHead = tmphead;
216: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
21a: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
21c: 90 91 63 02 lds r25, 0x0263
220: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
222: 80 91 64 02 lds r24, 0x0264
226: 98 17 cp r25, r24
228: e1 f3 breq .-8 ; 0x222 <main+0x8c>
UART_TxBuf[tmphead] = data;
22a: e9 2f mov r30, r25
22c: f0 e0 ldi r31, 0x00 ; 0
22e: ed 59 subi r30, 0x9D ; 157
230: fe 4f sbci r31, 0xFE ; 254
232: 60 83 st Z, r22
UART_TxHead = tmphead;
234: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
238: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
23a: 90 91 63 02 lds r25, 0x0263
23e: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
240: 80 91 64 02 lds r24, 0x0264
244: 98 17 cp r25, r24
246: e1 f3 breq .-8 ; 0x240 <main+0xaa>
UART_TxBuf[tmphead] = data;
248: e9 2f mov r30, r25
24a: f0 e0 ldi r31, 0x00 ; 0
24c: ed 59 subi r30, 0x9D ; 157
24e: fe 4f sbci r31, 0xFE ; 254
250: 50 83 st Z, r21
UART_TxHead = tmphead;
252: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
256: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
258: 90 91 63 02 lds r25, 0x0263
25c: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
25e: 80 91 64 02 lds r24, 0x0264
262: 98 17 cp r25, r24
264: e1 f3 breq .-8 ; 0x25e <main+0xc8>
UART_TxBuf[tmphead] = data;
266: e9 2f mov r30, r25
268: f0 e0 ldi r31, 0x00 ; 0
26a: ed 59 subi r30, 0x9D ; 157
26c: fe 4f sbci r31, 0xFE ; 254
26e: 40 83 st Z, r20
UART_TxHead = tmphead;
270: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
274: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
276: 90 91 63 02 lds r25, 0x0263
27a: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
27c: 80 91 64 02 lds r24, 0x0264
280: 98 17 cp r25, r24
282: e1 f3 breq .-8 ; 0x27c <main+0xe6>
UART_TxBuf[tmphead] = data;
284: e9 2f mov r30, r25
286: f0 e0 ldi r31, 0x00 ; 0
288: ed 59 subi r30, 0x9D ; 157
28a: fe 4f sbci r31, 0xFE ; 254
28c: 30 83 st Z, r19
UART_TxHead = tmphead;
28e: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
292: 55 9a sbi 0x0a, 5 ; 10
void TransmitByte ( uint8_t data )
{
uint8_t tmphead;
tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK;
294: 90 91 63 02 lds r25, 0x0263
298: 9f 5f subi r25, 0xFF ; 255
while ( tmphead == UART_TxTail );
29a: 80 91 64 02 lds r24, 0x0264
29e: 98 17 cp r25, r24
2a0: e1 f3 breq .-8 ; 0x29a <main+0x104>
UART_TxBuf[tmphead] = data;
2a2: e9 2f mov r30, r25
2a4: f0 e0 ldi r31, 0x00 ; 0
2a6: ed 59 subi r30, 0x9D ; 157
2a8: fe 4f sbci r31, 0xFE ; 254
2aa: 20 83 st Z, r18
UART_TxHead = tmphead;
2ac: 90 93 63 02 sts 0x0263, r25
UCSRB |= ( 1 << UDRIE );
2b0: 55 9a sbi 0x0a, 5 ; 10
2b2: 87 cf rjmp .-242 ; 0x1c2 <main+0x2c>
000002b4 <_exit>:
2b4: f8 94 cli
000002b6 <__stop_program>:
2b6: ff cf rjmp .-2 ; 0x2b6 <__stop_program>
Вопросы:
- почему компилятор вставляет функции (TransmitByte) на место их вызова
- как сделать штоб функции нормально вызывались
P.S. Сори если вопрос дурацкий
