1 .file "serialdebug.c" 2 __SP_H__ = 0x3e 3 __SP_L__ = 0x3d 4 __SREG__ = 0x3f 5 __tmp_reg__ = 0 6 __zero_reg__ = 1 7 .text 8 .Ltext0: 9 .cfi_sections .debug_frame 10 .global usart_putchar 12 usart_putchar: 13 .LFB8: 14 .file 1 "libs/serialdebug.c" 1:libs/serialdebug.c **** #include 2:libs/serialdebug.c **** 3:libs/serialdebug.c **** #if SERIALDEBUG_USE_INTS 4:libs/serialdebug.c **** #include 5:libs/serialdebug.c **** #endif 6:libs/serialdebug.c **** 7:libs/serialdebug.c **** void serial_configure(void) { 8:libs/serialdebug.c **** // Configure serial output 9:libs/serialdebug.c **** SERIALDEBUG_SOFT_TX_PORT |= (1< 43:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #include 44:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #include 45:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 46:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** /** \file */ 47:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** /** \defgroup util_delay : Convenience functions for busy-wait delay loops 48:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** \code 49:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #define F_CPU 1000000UL // 1 MHz 50:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** //#define F_CPU 14.7456E6 51:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #include 52:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** \endcode 53:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 54:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** \note As an alternative method, it is possible to pass the 55:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** F_CPU macro down to the compiler from the Makefile. 56:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** Obviously, in that case, no \c \#define statement should be 57:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** used. 58:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 59:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** The functions in this header file are wrappers around the basic 60:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** busy-wait functions from . They are meant as 61:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** convenience functions where actual time values can be specified 62:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** rather than a number of cycles to wait for. The idea behind is 63:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** that compile-time constant expressions will be eliminated by 64:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** compiler optimization so floating-point expressions can be used 65:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** to calculate the number of delay cycles needed based on the CPU 66:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** frequency passed by the macro F_CPU. 67:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 68:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** \note In order for these functions to work as intended, compiler 69:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** optimizations must be enabled, and the delay time 70:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** must be an expression that is a known constant at 71:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** compile-time. If these requirements are not met, the resulting 72:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** delay will be much longer (and basically unpredictable), and 73:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** applications that otherwise do not use floating-point calculations 74:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** will experience severe code bloat by the floating-point library 75:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** routines linked into the application. 76:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 77:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** The functions available allow the specification of microsecond, and 78:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** millisecond delays directly, using the application-supplied macro 79:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** F_CPU as the CPU clock frequency (in Hertz). 80:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 81:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** */ 82:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 83:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #if !defined(__DOXYGEN__) 84:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** static inline void _delay_us(double __us) __attribute__((always_inline)); 85:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** static inline void _delay_ms(double __ms) __attribute__((always_inline)); 86:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #endif 87:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 88:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #ifndef F_CPU 89:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** /* prevent compiler error by supplying a default */ 90:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** # warning "F_CPU not defined for " 91:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** # define F_CPU 1000000UL 92:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #endif 93:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 94:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #ifndef __OPTIMIZE__ 95:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** # warning "Compiler optimizations disabled; functions from won't work as designed" 96:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #endif 97:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 98:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) && \ 99:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** !defined(__DELAY_BACKWARD_COMPATIBLE__) && \ 100:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __STDC_HOSTED__ 101:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** # include 102:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #endif 103:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 104:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** /** 105:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** \ingroup util_delay 106:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 107:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** Perform a delay of \c __ms milliseconds, using _delay_loop_2(). 108:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 109:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** The macro F_CPU is supposed to be defined to a 110:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** constant defining the CPU clock frequency (in Hertz). 111:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 112:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** The maximal possible delay is 262.14 ms / F_CPU in MHz. 113:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 114:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** When the user request delay which exceed the maximum possible one, 115:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** _delay_ms() provides a decreased resolution functionality. In this 116:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** mode _delay_ms() will work with a resolution of 1/10 ms, providing 117:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** delays up to 6.5535 seconds (independent from CPU frequency). The 118:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** user will not be informed about decreased resolution. 119:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 120:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** If the avr-gcc toolchain has __builtin_avr_delay_cycles(unsigned long) 121:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** support, maximal possible delay is 4294967.295 ms/ F_CPU in MHz. For 122:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** values greater than the maximal possible delay, overflows results in 123:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** no delay i.e., 0ms. 124:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 125:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** Conversion of __us into clock cycles may not always result in integer. 126:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** By default, the clock cycles rounded up to next integer. This ensures that 127:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** the user gets atleast __us microseconds of delay. 128:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 129:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** Alternatively, user can define __DELAY_ROUND_DOWN__ and __DELAY_ROUND_CLOSEST__ 130:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** to round down and round to closest integer. 131:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 132:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** Note: The new implementation of _delay_ms(double __ms) with 133:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __builtin_avr_delay_cycles(unsigned long) support is not backward compatible. 134:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** User can define __DELAY_BACKWARD_COMPATIBLE__ to get a backward compatible delay. 135:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** Also, the backward compatible 136:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** algorithm will be chosen if the code is compiled in a freestanding 137:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** environment (GCC option \c -ffreestanding), as the math functions 138:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** required for rounding are not available to the compiler then. 139:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 140:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** */ 141:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** void 142:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** _delay_ms(double __ms) 143:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** { 144:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** double __tmp ; 145:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) && \ 146:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** !defined(__DELAY_BACKWARD_COMPATIBLE__) && \ 147:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __STDC_HOSTED__ 148:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** uint32_t __ticks_dc; 149:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** extern void __builtin_avr_delay_cycles(unsigned long); 150:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __tmp = ((F_CPU) / 1e3) * __ms; 151:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 152:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #if defined(__DELAY_ROUND_DOWN__) 153:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __ticks_dc = (uint32_t)fabs(__tmp); 154:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 155:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #elif defined(__DELAY_ROUND_CLOSEST__) 156:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __ticks_dc = (uint32_t)(fabs(__tmp)+0.5); 157:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 158:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #else 159:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** //round up by default 160:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); 161:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #endif 162:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 163:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __builtin_avr_delay_cycles(__ticks_dc); 164:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 165:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #else 166:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** uint16_t __ticks; 167:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __tmp = ((F_CPU) / 4e3) * __ms; 168:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** if (__tmp < 1.0) 169:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __ticks = 1; 170:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** else if (__tmp > 65535) 171:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** { 172:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** // __ticks = requested delay in 1/10 ms 173:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __ticks = (uint16_t) (__ms * 10.0); 174:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** while(__ticks) 175:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** { 176:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** // wait 1/10 ms 177:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** _delay_loop_2(((F_CPU) / 4e3) / 10); 178:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __ticks --; 179:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** } 180:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** return; 181:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** } 182:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** else 183:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __ticks = (uint16_t)__tmp; 184:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** _delay_loop_2(__ticks); 185:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #endif 186:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** } 187:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 188:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** /** 189:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** \ingroup util_delay 190:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 191:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** Perform a delay of \c __us microseconds, using _delay_loop_1(). 192:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 193:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** The macro F_CPU is supposed to be defined to a 194:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** constant defining the CPU clock frequency (in Hertz). 195:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 196:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** The maximal possible delay is 768 us / F_CPU in MHz. 197:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 198:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** If the user requests a delay greater than the maximal possible one, 199:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** _delay_us() will automatically call _delay_ms() instead. The user 200:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** will not be informed about this case. 201:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 202:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** If the avr-gcc toolchain has __builtin_avr_delay_cycles(unsigned long) 203:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** support, maximal possible delay is 4294967.295 us/ F_CPU in MHz. For 204:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** values greater than the maximal possible delay, overflow results in 205:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** no delay i.e., 0us. 206:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 207:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** Conversion of __us into clock cycles may not always result in integer. 208:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** By default, the clock cycles rounded up to next integer. This ensures that 209:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** the user gets atleast __us microseconds of delay. 210:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 211:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** Alternatively, user can define __DELAY_ROUND_DOWN__ and __DELAY_ROUND_CLOSEST__ 212:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** to round down and round to closest integer. 213:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 214:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** Note: The new implementation of _delay_us(double __us) with 215:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __builtin_avr_delay_cycles(unsigned long) support is not backward compatible. 216:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** User can define __DELAY_BACKWARD_COMPATIBLE__ to get a backward compatible delay. 217:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** Also, the backward compatible 218:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** algorithm will be chosen if the code is compiled in a freestanding 219:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** environment (GCC option \c -ffreestanding), as the math functions 220:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** required for rounding are not available to the compiler then. 221:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 222:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** */ 223:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** void 224:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** _delay_us(double __us) 225:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** { 226:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** double __tmp ; 227:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) && \ 228:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** !defined(__DELAY_BACKWARD_COMPATIBLE__) && \ 229:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __STDC_HOSTED__ 230:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** uint32_t __ticks_dc; 231:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** extern void __builtin_avr_delay_cycles(unsigned long); 232:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __tmp = ((F_CPU) / 1e6) * __us; 233:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 234:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #if defined(__DELAY_ROUND_DOWN__) 235:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __ticks_dc = (uint32_t)fabs(__tmp); 236:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 237:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #elif defined(__DELAY_ROUND_CLOSEST__) 238:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __ticks_dc = (uint32_t)(fabs(__tmp)+0.5); 239:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 240:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #else 241:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** //round up by default 242:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); 243:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** #endif 244:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** 245:/usr/local/CrossPack-AVR-20131216/avr/include/util/delay.h **** __builtin_avr_delay_cycles(__ticks_dc); 28 .loc 2 245 0 29 0002 EFEC ldi r30,lo8(207) 30 0004 F0E0 ldi r31,hi8(207) 31 0006 3197 1: sbiw r30,1 32 0008 01F4 brne 1b 33 000a 00C0 rjmp . 34 000c 0000 nop 35 .LVL2: 36 000e 28E0 ldi r18,lo8(8) 37 0010 30E0 ldi r19,0 38 .LBE9: 39 .LBE8: 24:libs/serialdebug.c **** _delay_us(SERIALDEBUG_MICROSECONDS_PER_BIT); 25:libs/serialdebug.c **** 26:libs/serialdebug.c **** // data bits 27:libs/serialdebug.c **** for (bit_mask=0x01; bit_mask; bit_mask<<=1) { 40 .loc 1 27 0 41 0012 91E0 ldi r25,lo8(1) 42 .LVL3: 43 .L5: 28:libs/serialdebug.c **** if (c & bit_mask) { 44 .loc 1 28 0 45 0014 492F mov r20,r25 46 0016 4823 and r20,r24 47 0018 01F0 breq .L2 29:libs/serialdebug.c **** SERIALDEBUG_SOFT_TX_PORT |= (1<