1 .file "serial_example.c" 2 __SREG__ = 0x3f 3 __SP_H__ = 0x3e 4 __SP_L__ = 0x3d 5 __CCP__ = 0x34 6 __tmp_reg__ = 0 7 __zero_reg__ = 1 8 .global __do_copy_data 9 .global __do_clear_bss 11 .text 12 .Ltext0: 82 .data 83 .LC0: 84 0000 6865 6C6C .string "hello world\n\r" 84 6F20 776F 84 726C 640A 84 0D00 85 .LC1: 86 000e 476F 7420 .string "Got character: %c %d\n\r" 86 6368 6172 86 6163 7465 86 723A 2025 86 6320 2564 87 .text 89 .global main 91 main: 0:serial_example.c **** #include 1:serial_example.c **** 2:serial_example.c **** // Load the ISRs 3:serial_example.c **** #include "oulib_serial_buffered.h" 4:serial_example.c **** 5:serial_example.c **** /************************* 6:serial_example.c **** * USB Serial Connection * 7:serial_example.c **** *************************/ 8:serial_example.c **** #define SERIAL_PORT 0 9:serial_example.c **** #define SERIAL_BAUD 38400 10:serial_example.c **** #define SERIAL_BUFFER_SIZE 40 11:serial_example.c **** 12:serial_example.c **** /////////////////////////////////////////////////////////////////////////// 13:serial_example.c **** // File pointer for USB connection 14:serial_example.c **** FILE* fp0 = NULL; 15:serial_example.c **** 16:serial_example.c **** /////////////////////////////////////////////////////////////////////////// 17:serial_example.c **** 18:serial_example.c **** /////////////////////////////////////////////////////////////////////////// 19:serial_example.c **** int main(void) 20:serial_example.c **** { 93 .LM0: 94 .LFBB1: 95 0000 0F93 push r16 96 0002 CF93 push r28 97 0004 DF93 push r29 98 /* prologue: function */ 99 /* frame size = 0 */ 21:serial_example.c **** char c; 22:serial_example.c **** uint8_t i; 23:serial_example.c **** 24:serial_example.c **** // LED on the Arduino 25:serial_example.c **** DDRB = 0x80; 101 .LM1: 102 0006 80E8 ldi r24,lo8(-128) 103 0008 84B9 out 36-32,r24 26:serial_example.c **** 27:serial_example.c **** // Flash the LED a few times 28:serial_example.c **** PORTB ^= 0x80; 105 .LM2: 106 000a 85B1 in r24,37-32 107 000c 8058 subi r24,lo8(-(-128)) 108 000e 85B9 out 37-32,r24 29:serial_example.c **** delay_ms(100); 110 .LM3: 111 0010 84E6 ldi r24,lo8(100) 112 0012 90E0 ldi r25,hi8(100) 113 0014 0E94 0000 call delay_ms 30:serial_example.c **** PORTB ^= 0x80; 115 .LM4: 116 0018 85B1 in r24,37-32 117 001a 8058 subi r24,lo8(-(-128)) 118 001c 85B9 out 37-32,r24 31:serial_example.c **** delay_ms(100); 120 .LM5: 121 001e 84E6 ldi r24,lo8(100) 122 0020 90E0 ldi r25,hi8(100) 123 0022 0E94 0000 call delay_ms 32:serial_example.c **** PORTB ^= 0x80; 125 .LM6: 126 0026 85B1 in r24,37-32 127 0028 8058 subi r24,lo8(-(-128)) 128 002a 85B9 out 37-32,r24 33:serial_example.c **** delay_ms(100); 130 .LM7: 131 002c 84E6 ldi r24,lo8(100) 132 002e 90E0 ldi r25,hi8(100) 133 0030 0E94 0000 call delay_ms 34:serial_example.c **** PORTB ^= 0x80; 135 .LM8: 136 0034 85B1 in r24,37-32 137 0036 8058 subi r24,lo8(-(-128)) 138 0038 85B9 out 37-32,r24 35:serial_example.c **** delay_ms(100); 140 .LM9: 141 003a 84E6 ldi r24,lo8(100) 142 003c 90E0 ldi r25,hi8(100) 143 003e 0E94 0000 call delay_ms 36:serial_example.c **** 37:serial_example.c **** // Initialize the serial port connected to the USB cable 38:serial_example.c **** fp0 = serial_init_buffered(SERIAL_PORT, SERIAL_BAUD, SERIAL_BUFFER_SIZE, SERIAL_BUFFER_SIZE); 145 .LM10: 146 0042 80E0 ldi r24,lo8(0) 147 0044 40E0 ldi r20,lo8(38400) 148 0046 56E9 ldi r21,hi8(38400) 149 0048 60E0 ldi r22,hlo8(38400) 150 004a 70E0 ldi r23,hhi8(38400) 151 004c 28E2 ldi r18,lo8(40) 152 004e 08E2 ldi r16,lo8(40) 153 0050 0E94 0000 call serial_init_buffered 154 0054 BC01 movw r22,r24 155 0056 9093 0000 sts (fp0)+1,r25 156 005a 8093 0000 sts fp0,r24 39:serial_example.c **** 40:serial_example.c **** // Initialize all interrupts 41:serial_example.c **** sei(); 158 .LM11: 159 /* #APP */ 160 ; 42 "serial_example.c" 1 161 005e 7894 sei 162 ; 0 "" 2 42:serial_example.c **** 43:serial_example.c **** // Say 'hello' 44:serial_example.c **** fprintf(fp0, "hello world\n\r"); 164 .LM12: 165 /* #NOAPP */ 166 0060 80E0 ldi r24,lo8(.LC0) 167 0062 90E0 ldi r25,hi8(.LC0) 168 0064 0E94 0000 call fputs 45:serial_example.c **** 46:serial_example.c **** while(1){ 47:serial_example.c **** // Is there anything coming in from the serial port? 48:serial_example.c **** if(serial_buffered_input_waiting(fp0)) { 49:serial_example.c **** // Yes - read that character 50:serial_example.c **** c = fgetc(fp0); 51:serial_example.c **** 52:serial_example.c **** // Report that we received this char 53:serial_example.c **** fprintf(fp0, "Got character: %c %d\n\r", c, c); 170 .LM13: 171 0068 C0E0 ldi r28,lo8(.LC1) 172 006a D0E0 ldi r29,hi8(.LC1) 173 .L6: 49:serial_example.c **** if(serial_buffered_input_waiting(fp0)) { 175 .LM14: 176 006c 8091 0000 lds r24,fp0 177 0070 9091 0000 lds r25,(fp0)+1 178 0074 0E94 0000 call serial_buffered_input_waiting 179 0078 8823 tst r24 180 007a 01F4 brne .+2 181 007c 00C0 rjmp .L2 51:serial_example.c **** c = fgetc(fp0); 183 .LM15: 184 007e 8091 0000 lds r24,fp0 185 0082 9091 0000 lds r25,(fp0)+1 186 0086 0E94 0000 call fgetc 187 008a 082F mov r16,r24 189 .LM16: 190 008c 8DB7 in r24,__SP_L__ 191 008e 9EB7 in r25,__SP_H__ 192 0090 0897 sbiw r24,8 193 0092 0FB6 in __tmp_reg__,__SREG__ 194 0094 F894 cli 195 0096 9EBF out __SP_H__,r25 196 0098 0FBE out __SREG__,__tmp_reg__ 197 009a 8DBF out __SP_L__,r24 198 009c EDB7 in r30,__SP_L__ 199 009e FEB7 in r31,__SP_H__ 200 00a0 3196 adiw r30,1 201 00a2 8091 0000 lds r24,fp0 202 00a6 9091 0000 lds r25,(fp0)+1 203 00aa ADB7 in r26,__SP_L__ 204 00ac BEB7 in r27,__SP_H__ 205 00ae 1296 adiw r26,1+1 206 00b0 9C93 st X,r25 207 00b2 8E93 st -X,r24 208 00b4 1197 sbiw r26,1 209 00b6 D383 std Z+3,r29 210 00b8 C283 std Z+2,r28 211 00ba 0483 std Z+4,r16 212 00bc 1582 std Z+5,__zero_reg__ 213 00be 0683 std Z+6,r16 214 00c0 1782 std Z+7,__zero_reg__ 215 00c2 0E94 0000 call fprintf 54:serial_example.c **** 55:serial_example.c **** // Do something specific depending on which character it is 56:serial_example.c **** switch(c) 217 .LM17: 218 00c6 8DB7 in r24,__SP_L__ 219 00c8 9EB7 in r25,__SP_H__ 220 00ca 0896 adiw r24,8 221 00cc 0FB6 in __tmp_reg__,__SREG__ 222 00ce F894 cli 223 00d0 9EBF out __SP_H__,r25 224 00d2 0FBE out __SREG__,__tmp_reg__ 225 00d4 8DBF out __SP_L__,r24 226 00d6 0636 cpi r16,lo8(102) 227 00d8 01F0 breq .L3 228 00da 0337 cpi r16,lo8(115) 229 00dc 01F4 brne .L2 230 00de 00C0 rjmp .L9 231 .L3: 232 00e0 00E0 ldi r16,lo8(0) 233 .L5: 57:serial_example.c **** { 58:serial_example.c **** case 'f': 59:serial_example.c **** // Flash the LED fast 60:serial_example.c **** for(i = 0; i < 8; ++i) { 61:serial_example.c **** PORTB ^= 0x80; 235 .LM18: 236 00e2 85B1 in r24,37-32 237 00e4 8058 subi r24,lo8(-(-128)) 238 00e6 85B9 out 37-32,r24 62:serial_example.c **** delay_ms(100); 240 .LM19: 241 00e8 84E6 ldi r24,lo8(100) 242 00ea 90E0 ldi r25,hi8(100) 243 00ec 0E94 0000 call delay_ms 61:serial_example.c **** for(i = 0; i < 8; ++i) { 245 .LM20: 246 00f0 0F5F subi r16,lo8(-(1)) 247 00f2 0830 cpi r16,lo8(8) 248 00f4 01F4 brne .L5 249 00f6 00C0 rjmp .L2 250 .L9: 63:serial_example.c **** }; 64:serial_example.c **** break; // Don't forget to terminate cases with breaks! 65:serial_example.c **** case 's': 66:serial_example.c **** // Flash the LED slow 67:serial_example.c **** for(i = 0; i < 2; ++i) { 68:serial_example.c **** PORTB ^= 0x80; 252 .LM21: 253 00f8 85B1 in r24,37-32 254 00fa 8058 subi r24,lo8(-(-128)) 255 00fc 85B9 out 37-32,r24 69:serial_example.c **** delay_ms(1000); 257 .LM22: 258 00fe 88EE ldi r24,lo8(1000) 259 0100 93E0 ldi r25,hi8(1000) 260 0102 0E94 0000 call delay_ms 69:serial_example.c **** delay_ms(1000); 262 .LM23: 263 0106 85B1 in r24,37-32 264 0108 8058 subi r24,lo8(-(-128)) 265 010a 85B9 out 37-32,r24 267 .LM24: 268 010c 88EE ldi r24,lo8(1000) 269 010e 93E0 ldi r25,hi8(1000) 270 0110 0E94 0000 call delay_ms 271 .L2: 70:serial_example.c **** }; 71:serial_example.c **** break; 72:serial_example.c **** 73:serial_example.c **** }; 74:serial_example.c **** }; 75:serial_example.c **** // Default flash rate 76:serial_example.c **** PORTB ^= 0x80; 273 .LM25: 274 0114 85B1 in r24,37-32 275 0116 8058 subi r24,lo8(-(-128)) 276 0118 85B9 out 37-32,r24 77:serial_example.c **** delay_ms(250); 278 .LM26: 279 011a 8AEF ldi r24,lo8(250) 280 011c 90E0 ldi r25,hi8(250) 281 011e 0E94 0000 call delay_ms 282 0122 00C0 rjmp .L6 287 .Lscope1: 289 .global __vector_55 291 __vector_55: 293 .Ltext1: 0:../../oulib/include/oulib_serial_buffered.h **** #include "oulib.h" 1:../../oulib/include/oulib_serial_buffered.h **** 2:../../oulib/include/oulib_serial_buffered.h **** #ifdef SERIAL_NPORTS_2 3:../../oulib/include/oulib_serial_buffered.h **** // Two serial ports 4:../../oulib/include/oulib_serial_buffered.h **** struct OU_FILE_BUF *ou_file_buf[2] = {NULL, NULL}; 5:../../oulib/include/oulib_serial_buffered.h **** 6:../../oulib/include/oulib_serial_buffered.h **** ISR(USART0_RX_vect) { 7:../../oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[0]); 8:../../oulib/include/oulib_serial_buffered.h **** } 9:../../oulib/include/oulib_serial_buffered.h **** ISR(USART1_RX_vect) { 10:../../oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[1]); 11:../../oulib/include/oulib_serial_buffered.h **** } 12:../../oulib/include/oulib_serial_buffered.h **** ISR(USART0_UDRE_vect) { 13:../../oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[0]); 14:../../oulib/include/oulib_serial_buffered.h **** } 15:../../oulib/include/oulib_serial_buffered.h **** ISR(USART1_UDRE_vect) { 16:../../oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[1]); 17:../../oulib/include/oulib_serial_buffered.h **** } 18:../../oulib/include/oulib_serial_buffered.h **** #else 19:../../oulib/include/oulib_serial_buffered.h **** #ifdef SERIAL_NPORTS_4 20:../../oulib/include/oulib_serial_buffered.h **** // Four serial ports 21:../../oulib/include/oulib_serial_buffered.h **** struct OU_FILE_BUF *ou_file_buf[4] = {NULL, NULL, NULL, NULL}; 22:../../oulib/include/oulib_serial_buffered.h **** 23:../../oulib/include/oulib_serial_buffered.h **** ISR(USART0_RX_vect) { 24:../../oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[0]); 25:../../oulib/include/oulib_serial_buffered.h **** } 26:../../oulib/include/oulib_serial_buffered.h **** ISR(USART1_RX_vect) { 27:../../oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[1]); 28:../../oulib/include/oulib_serial_buffered.h **** } 29:../../oulib/include/oulib_serial_buffered.h **** 30:../../oulib/include/oulib_serial_buffered.h **** ISR(USART2_RX_vect) { 31:../../oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[2]); 32:../../oulib/include/oulib_serial_buffered.h **** } 33:../../oulib/include/oulib_serial_buffered.h **** 34:../../oulib/include/oulib_serial_buffered.h **** ISR(USART3_RX_vect) { 35:../../oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[3]); 36:../../oulib/include/oulib_serial_buffered.h **** } 37:../../oulib/include/oulib_serial_buffered.h **** ISR(USART0_UDRE_vect) { 38:../../oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[0]); 39:../../oulib/include/oulib_serial_buffered.h **** } 40:../../oulib/include/oulib_serial_buffered.h **** ISR(USART1_UDRE_vect) { 41:../../oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[1]); 42:../../oulib/include/oulib_serial_buffered.h **** } 43:../../oulib/include/oulib_serial_buffered.h **** ISR(USART2_UDRE_vect) { 44:../../oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[2]); 45:../../oulib/include/oulib_serial_buffered.h **** } 46:../../oulib/include/oulib_serial_buffered.h **** ISR(USART3_UDRE_vect) { 295 .LM27: 296 .LFBB2: 297 0124 1F92 push __zero_reg__ 298 0126 0F92 push r0 299 0128 0FB6 in r0,__SREG__ 300 012a 0F92 push r0 301 012c 0BB6 in r0,91-32 302 012e 0F92 push r0 303 0130 1124 clr __zero_reg__ 304 0132 2F93 push r18 305 0134 3F93 push r19 306 0136 4F93 push r20 307 0138 5F93 push r21 308 013a 6F93 push r22 309 013c 7F93 push r23 310 013e 8F93 push r24 311 0140 9F93 push r25 312 0142 AF93 push r26 313 0144 BF93 push r27 314 0146 EF93 push r30 315 0148 FF93 push r31 316 /* prologue: Signal */ 317 /* frame size = 0 */ 47:../../oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[3]); 319 .LM28: 320 014a 8091 0000 lds r24,ou_file_buf+6 321 014e 9091 0000 lds r25,(ou_file_buf+6)+1 322 0152 0E94 0000 call serial_transmit_isr 323 /* epilogue start */ 48:../../oulib/include/oulib_serial_buffered.h **** } 325 .LM29: 326 0156 FF91 pop r31 327 0158 EF91 pop r30 328 015a BF91 pop r27 329 015c AF91 pop r26 330 015e 9F91 pop r25 331 0160 8F91 pop r24 332 0162 7F91 pop r23 333 0164 6F91 pop r22 334 0166 5F91 pop r21 335 0168 4F91 pop r20 336 016a 3F91 pop r19 337 016c 2F91 pop r18 338 016e 0F90 pop r0 339 0170 0BBE out 91-32,r0 340 0172 0F90 pop r0 341 0174 0FBE out __SREG__,r0 342 0176 0F90 pop r0 343 0178 1F90 pop __zero_reg__ 344 017a 1895 reti 346 .Lscope2: 348 .global __vector_52 350 __vector_52: 44:../../oulib/include/oulib_serial_buffered.h **** ISR(USART2_UDRE_vect) { 352 .LM30: 353 .LFBB3: 354 017c 1F92 push __zero_reg__ 355 017e 0F92 push r0 356 0180 0FB6 in r0,__SREG__ 357 0182 0F92 push r0 358 0184 0BB6 in r0,91-32 359 0186 0F92 push r0 360 0188 1124 clr __zero_reg__ 361 018a 2F93 push r18 362 018c 3F93 push r19 363 018e 4F93 push r20 364 0190 5F93 push r21 365 0192 6F93 push r22 366 0194 7F93 push r23 367 0196 8F93 push r24 368 0198 9F93 push r25 369 019a AF93 push r26 370 019c BF93 push r27 371 019e EF93 push r30 372 01a0 FF93 push r31 373 /* prologue: Signal */ 374 /* frame size = 0 */ 45:../../oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[2]); 376 .LM31: 377 01a2 8091 0000 lds r24,ou_file_buf+4 378 01a6 9091 0000 lds r25,(ou_file_buf+4)+1 379 01aa 0E94 0000 call serial_transmit_isr 380 /* epilogue start */ 46:../../oulib/include/oulib_serial_buffered.h **** } 382 .LM32: 383 01ae FF91 pop r31 384 01b0 EF91 pop r30 385 01b2 BF91 pop r27 386 01b4 AF91 pop r26 387 01b6 9F91 pop r25 388 01b8 8F91 pop r24 389 01ba 7F91 pop r23 390 01bc 6F91 pop r22 391 01be 5F91 pop r21 392 01c0 4F91 pop r20 393 01c2 3F91 pop r19 394 01c4 2F91 pop r18 395 01c6 0F90 pop r0 396 01c8 0BBE out 91-32,r0 397 01ca 0F90 pop r0 398 01cc 0FBE out __SREG__,r0 399 01ce 0F90 pop r0 400 01d0 1F90 pop __zero_reg__ 401 01d2 1895 reti 403 .Lscope3: 405 .global __vector_37 407 __vector_37: 41:../../oulib/include/oulib_serial_buffered.h **** ISR(USART1_UDRE_vect) { 409 .LM33: 410 .LFBB4: 411 01d4 1F92 push __zero_reg__ 412 01d6 0F92 push r0 413 01d8 0FB6 in r0,__SREG__ 414 01da 0F92 push r0 415 01dc 0BB6 in r0,91-32 416 01de 0F92 push r0 417 01e0 1124 clr __zero_reg__ 418 01e2 2F93 push r18 419 01e4 3F93 push r19 420 01e6 4F93 push r20 421 01e8 5F93 push r21 422 01ea 6F93 push r22 423 01ec 7F93 push r23 424 01ee 8F93 push r24 425 01f0 9F93 push r25 426 01f2 AF93 push r26 427 01f4 BF93 push r27 428 01f6 EF93 push r30 429 01f8 FF93 push r31 430 /* prologue: Signal */ 431 /* frame size = 0 */ 42:../../oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[1]); 433 .LM34: 434 01fa 8091 0000 lds r24,ou_file_buf+2 435 01fe 9091 0000 lds r25,(ou_file_buf+2)+1 436 0202 0E94 0000 call serial_transmit_isr 437 /* epilogue start */ 43:../../oulib/include/oulib_serial_buffered.h **** } 439 .LM35: 440 0206 FF91 pop r31 441 0208 EF91 pop r30 442 020a BF91 pop r27 443 020c AF91 pop r26 444 020e 9F91 pop r25 445 0210 8F91 pop r24 446 0212 7F91 pop r23 447 0214 6F91 pop r22 448 0216 5F91 pop r21 449 0218 4F91 pop r20 450 021a 3F91 pop r19 451 021c 2F91 pop r18 452 021e 0F90 pop r0 453 0220 0BBE out 91-32,r0 454 0222 0F90 pop r0 455 0224 0FBE out __SREG__,r0 456 0226 0F90 pop r0 457 0228 1F90 pop __zero_reg__ 458 022a 1895 reti 460 .Lscope4: 462 .global __vector_26 464 __vector_26: 38:../../oulib/include/oulib_serial_buffered.h **** ISR(USART0_UDRE_vect) { 466 .LM36: 467 .LFBB5: 468 022c 1F92 push __zero_reg__ 469 022e 0F92 push r0 470 0230 0FB6 in r0,__SREG__ 471 0232 0F92 push r0 472 0234 0BB6 in r0,91-32 473 0236 0F92 push r0 474 0238 1124 clr __zero_reg__ 475 023a 2F93 push r18 476 023c 3F93 push r19 477 023e 4F93 push r20 478 0240 5F93 push r21 479 0242 6F93 push r22 480 0244 7F93 push r23 481 0246 8F93 push r24 482 0248 9F93 push r25 483 024a AF93 push r26 484 024c BF93 push r27 485 024e EF93 push r30 486 0250 FF93 push r31 487 /* prologue: Signal */ 488 /* frame size = 0 */ 39:../../oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[0]); 490 .LM37: 491 0252 8091 0000 lds r24,ou_file_buf 492 0256 9091 0000 lds r25,(ou_file_buf)+1 493 025a 0E94 0000 call serial_transmit_isr 494 /* epilogue start */ 40:../../oulib/include/oulib_serial_buffered.h **** } 496 .LM38: 497 025e FF91 pop r31 498 0260 EF91 pop r30 499 0262 BF91 pop r27 500 0264 AF91 pop r26 501 0266 9F91 pop r25 502 0268 8F91 pop r24 503 026a 7F91 pop r23 504 026c 6F91 pop r22 505 026e 5F91 pop r21 506 0270 4F91 pop r20 507 0272 3F91 pop r19 508 0274 2F91 pop r18 509 0276 0F90 pop r0 510 0278 0BBE out 91-32,r0 511 027a 0F90 pop r0 512 027c 0FBE out __SREG__,r0 513 027e 0F90 pop r0 514 0280 1F90 pop __zero_reg__ 515 0282 1895 reti 517 .Lscope5: 519 .global __vector_54 521 __vector_54: 35:../../oulib/include/oulib_serial_buffered.h **** ISR(USART3_RX_vect) { 523 .LM39: 524 .LFBB6: 525 0284 1F92 push __zero_reg__ 526 0286 0F92 push r0 527 0288 0FB6 in r0,__SREG__ 528 028a 0F92 push r0 529 028c 0BB6 in r0,91-32 530 028e 0F92 push r0 531 0290 1124 clr __zero_reg__ 532 0292 2F93 push r18 533 0294 3F93 push r19 534 0296 4F93 push r20 535 0298 5F93 push r21 536 029a 6F93 push r22 537 029c 7F93 push r23 538 029e 8F93 push r24 539 02a0 9F93 push r25 540 02a2 AF93 push r26 541 02a4 BF93 push r27 542 02a6 EF93 push r30 543 02a8 FF93 push r31 544 /* prologue: Signal */ 545 /* frame size = 0 */ 36:../../oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[3]); 547 .LM40: 548 02aa 8091 0000 lds r24,ou_file_buf+6 549 02ae 9091 0000 lds r25,(ou_file_buf+6)+1 550 02b2 0E94 0000 call serial_receive_isr 551 /* epilogue start */ 37:../../oulib/include/oulib_serial_buffered.h **** } 553 .LM41: 554 02b6 FF91 pop r31 555 02b8 EF91 pop r30 556 02ba BF91 pop r27 557 02bc AF91 pop r26 558 02be 9F91 pop r25 559 02c0 8F91 pop r24 560 02c2 7F91 pop r23 561 02c4 6F91 pop r22 562 02c6 5F91 pop r21 563 02c8 4F91 pop r20 564 02ca 3F91 pop r19 565 02cc 2F91 pop r18 566 02ce 0F90 pop r0 567 02d0 0BBE out 91-32,r0 568 02d2 0F90 pop r0 569 02d4 0FBE out __SREG__,r0 570 02d6 0F90 pop r0 571 02d8 1F90 pop __zero_reg__ 572 02da 1895 reti 574 .Lscope6: 576 .global __vector_51 578 __vector_51: 31:../../oulib/include/oulib_serial_buffered.h **** ISR(USART2_RX_vect) { 580 .LM42: 581 .LFBB7: 582 02dc 1F92 push __zero_reg__ 583 02de 0F92 push r0 584 02e0 0FB6 in r0,__SREG__ 585 02e2 0F92 push r0 586 02e4 0BB6 in r0,91-32 587 02e6 0F92 push r0 588 02e8 1124 clr __zero_reg__ 589 02ea 2F93 push r18 590 02ec 3F93 push r19 591 02ee 4F93 push r20 592 02f0 5F93 push r21 593 02f2 6F93 push r22 594 02f4 7F93 push r23 595 02f6 8F93 push r24 596 02f8 9F93 push r25 597 02fa AF93 push r26 598 02fc BF93 push r27 599 02fe EF93 push r30 600 0300 FF93 push r31 601 /* prologue: Signal */ 602 /* frame size = 0 */ 32:../../oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[2]); 604 .LM43: 605 0302 8091 0000 lds r24,ou_file_buf+4 606 0306 9091 0000 lds r25,(ou_file_buf+4)+1 607 030a 0E94 0000 call serial_receive_isr 608 /* epilogue start */ 33:../../oulib/include/oulib_serial_buffered.h **** } 610 .LM44: 611 030e FF91 pop r31 612 0310 EF91 pop r30 613 0312 BF91 pop r27 614 0314 AF91 pop r26 615 0316 9F91 pop r25 616 0318 8F91 pop r24 617 031a 7F91 pop r23 618 031c 6F91 pop r22 619 031e 5F91 pop r21 620 0320 4F91 pop r20 621 0322 3F91 pop r19 622 0324 2F91 pop r18 623 0326 0F90 pop r0 624 0328 0BBE out 91-32,r0 625 032a 0F90 pop r0 626 032c 0FBE out __SREG__,r0 627 032e 0F90 pop r0 628 0330 1F90 pop __zero_reg__ 629 0332 1895 reti 631 .Lscope7: 633 .global __vector_36 635 __vector_36: 27:../../oulib/include/oulib_serial_buffered.h **** ISR(USART1_RX_vect) { 637 .LM45: 638 .LFBB8: 639 0334 1F92 push __zero_reg__ 640 0336 0F92 push r0 641 0338 0FB6 in r0,__SREG__ 642 033a 0F92 push r0 643 033c 0BB6 in r0,91-32 644 033e 0F92 push r0 645 0340 1124 clr __zero_reg__ 646 0342 2F93 push r18 647 0344 3F93 push r19 648 0346 4F93 push r20 649 0348 5F93 push r21 650 034a 6F93 push r22 651 034c 7F93 push r23 652 034e 8F93 push r24 653 0350 9F93 push r25 654 0352 AF93 push r26 655 0354 BF93 push r27 656 0356 EF93 push r30 657 0358 FF93 push r31 658 /* prologue: Signal */ 659 /* frame size = 0 */ 28:../../oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[1]); 661 .LM46: 662 035a 8091 0000 lds r24,ou_file_buf+2 663 035e 9091 0000 lds r25,(ou_file_buf+2)+1 664 0362 0E94 0000 call serial_receive_isr 665 /* epilogue start */ 29:../../oulib/include/oulib_serial_buffered.h **** } 667 .LM47: 668 0366 FF91 pop r31 669 0368 EF91 pop r30 670 036a BF91 pop r27 671 036c AF91 pop r26 672 036e 9F91 pop r25 673 0370 8F91 pop r24 674 0372 7F91 pop r23 675 0374 6F91 pop r22 676 0376 5F91 pop r21 677 0378 4F91 pop r20 678 037a 3F91 pop r19 679 037c 2F91 pop r18 680 037e 0F90 pop r0 681 0380 0BBE out 91-32,r0 682 0382 0F90 pop r0 683 0384 0FBE out __SREG__,r0 684 0386 0F90 pop r0 685 0388 1F90 pop __zero_reg__ 686 038a 1895 reti 688 .Lscope8: 690 .global __vector_25 692 __vector_25: 24:../../oulib/include/oulib_serial_buffered.h **** ISR(USART0_RX_vect) { 694 .LM48: 695 .LFBB9: 696 038c 1F92 push __zero_reg__ 697 038e 0F92 push r0 698 0390 0FB6 in r0,__SREG__ 699 0392 0F92 push r0 700 0394 0BB6 in r0,91-32 701 0396 0F92 push r0 702 0398 1124 clr __zero_reg__ 703 039a 2F93 push r18 704 039c 3F93 push r19 705 039e 4F93 push r20 706 03a0 5F93 push r21 707 03a2 6F93 push r22 708 03a4 7F93 push r23 709 03a6 8F93 push r24 710 03a8 9F93 push r25 711 03aa AF93 push r26 712 03ac BF93 push r27 713 03ae EF93 push r30 714 03b0 FF93 push r31 715 /* prologue: Signal */ 716 /* frame size = 0 */ 25:../../oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[0]); 718 .LM49: 719 03b2 8091 0000 lds r24,ou_file_buf 720 03b6 9091 0000 lds r25,(ou_file_buf)+1 721 03ba 0E94 0000 call serial_receive_isr 722 /* epilogue start */ 26:../../oulib/include/oulib_serial_buffered.h **** } 724 .LM50: 725 03be FF91 pop r31 726 03c0 EF91 pop r30 727 03c2 BF91 pop r27 728 03c4 AF91 pop r26 729 03c6 9F91 pop r25 730 03c8 8F91 pop r24 731 03ca 7F91 pop r23 732 03cc 6F91 pop r22 733 03ce 5F91 pop r21 734 03d0 4F91 pop r20 735 03d2 3F91 pop r19 736 03d4 2F91 pop r18 737 03d6 0F90 pop r0 738 03d8 0BBE out 91-32,r0 739 03da 0F90 pop r0 740 03dc 0FBE out __SREG__,r0 741 03de 0F90 pop r0 742 03e0 1F90 pop __zero_reg__ 743 03e2 1895 reti 745 .Lscope9: 746 .global ou_file_buf 747 .global ou_file_buf 748 .section .bss 751 ou_file_buf: 752 0000 0000 0000 .skip 8,0 752 0000 0000 753 .global fp0 754 .global fp0 757 fp0: 758 0008 0000 .skip 2,0 761 .text 763 .Letext0: DEFINED SYMBOLS *ABS*:0000000000000000 serial_example.c /tmp/cc2hhg5z.s:2 *ABS*:000000000000003f __SREG__ /tmp/cc2hhg5z.s:3 *ABS*:000000000000003e __SP_H__ /tmp/cc2hhg5z.s:4 *ABS*:000000000000003d __SP_L__ /tmp/cc2hhg5z.s:5 *ABS*:0000000000000034 __CCP__ /tmp/cc2hhg5z.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/cc2hhg5z.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/cc2hhg5z.s:91 .text:0000000000000000 main /tmp/cc2hhg5z.s:757 .bss:0000000000000008 fp0 /tmp/cc2hhg5z.s:291 .text:0000000000000124 __vector_55 /tmp/cc2hhg5z.s:751 .bss:0000000000000000 ou_file_buf /tmp/cc2hhg5z.s:350 .text:000000000000017c __vector_52 /tmp/cc2hhg5z.s:407 .text:00000000000001d4 __vector_37 /tmp/cc2hhg5z.s:464 .text:000000000000022c __vector_26 /tmp/cc2hhg5z.s:521 .text:0000000000000284 __vector_54 /tmp/cc2hhg5z.s:578 .text:00000000000002dc __vector_51 /tmp/cc2hhg5z.s:635 .text:0000000000000334 __vector_36 /tmp/cc2hhg5z.s:692 .text:000000000000038c __vector_25 UNDEFINED SYMBOLS __do_copy_data __do_clear_bss delay_ms serial_init_buffered fputs serial_buffered_input_waiting fgetc fprintf serial_transmit_isr serial_receive_isr