1 .file "main.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 .section .rodata.str1.1,"aMS",@progbits,1 11 .LC0: 12 0000 4C4F 5645 .string "LOVE" 12 00 13 .section .text.startup,"ax",@progbits 14 .global main 16 main: 17 .LFB6: 18 .file 1 "main.c" 1:main.c **** #define F_CPU 1000000L 2:main.c **** #define CONFIG_DISPLAY 3:main.c **** 4:main.c **** #define __DELAY_BACKWARD_COMPATIBLE__ 5:main.c **** #include 6:main.c **** #include 7:main.c **** #include "../00_Lib/nokia_5110.h" 8:main.c **** 9:main.c **** 10:main.c **** int main (void) 11:main.c **** { 19 .loc 1 11 0 20 .cfi_startproc 21 /* prologue: function */ 22 /* frame size = 0 */ 23 /* stack size = 0 */ 24 .L__stack_usage = 0 12:main.c **** unsigned char zwischenspeicher; 13:main.c **** DDRB = 0b00000001; 25 .loc 1 13 0 26 0000 81E0 ldi r24,lo8(1) 27 0002 87BB out 0x17,r24 14:main.c **** DDRA = 0b00011111; 28 .loc 1 14 0 29 0004 8FE1 ldi r24,lo8(31) 30 0006 8ABB out 0x1a,r24 15:main.c **** 16:main.c **** LCD_init(); //LCD initialization 31 .loc 1 16 0 32 0008 00D0 rcall LCD_init 33 .LVL0: 17:main.c **** LCD_clear(); //clear the LCD 34 .loc 1 17 0 35 000a 00D0 rcall LCD_clear 36 .LVL1: 18:main.c **** 19:main.c **** LCD_write_char('*'); 37 .loc 1 19 0 38 000c 8AE2 ldi r24,lo8(42) 39 000e 00D0 rcall LCD_write_char 40 .LVL2: 20:main.c **** LCD_write_byte(0,1); 41 .loc 1 20 0 42 0010 61E0 ldi r22,lo8(1) 43 0012 80E0 ldi r24,0 44 0014 00D0 rcall LCD_write_byte 45 .LVL3: 21:main.c **** LCD_write_byte(0,1); 46 .loc 1 21 0 47 0016 61E0 ldi r22,lo8(1) 48 0018 80E0 ldi r24,0 49 001a 00D0 rcall LCD_write_byte 50 .LVL4: 22:main.c **** LCD_write_char('L'); 51 .loc 1 22 0 52 001c 8CE4 ldi r24,lo8(76) 53 001e 00D0 rcall LCD_write_char 54 .LVL5: 23:main.c **** LCD_write_char('o'); 55 .loc 1 23 0 56 0020 8FE6 ldi r24,lo8(111) 57 0022 00D0 rcall LCD_write_char 58 .LVL6: 24:main.c **** LCD_write_char('v'); 59 .loc 1 24 0 60 0024 86E7 ldi r24,lo8(118) 61 0026 00D0 rcall LCD_write_char 62 .LVL7: 25:main.c **** LCD_write_char('e'); 63 .loc 1 25 0 64 0028 85E6 ldi r24,lo8(101) 65 002a 00D0 rcall LCD_write_char 66 .LVL8: 26:main.c **** LCD_write_byte(0,1); 67 .loc 1 26 0 68 002c 61E0 ldi r22,lo8(1) 69 002e 80E0 ldi r24,0 70 0030 00D0 rcall LCD_write_byte 71 .LVL9: 27:main.c **** LCD_write_byte(0,1); 72 .loc 1 27 0 73 0032 61E0 ldi r22,lo8(1) 74 0034 80E0 ldi r24,0 75 0036 00D0 rcall LCD_write_byte 76 .LVL10: 28:main.c **** LCD_write_byte(0,1); 77 .loc 1 28 0 78 0038 61E0 ldi r22,lo8(1) 79 003a 80E0 ldi r24,0 80 003c 00D0 rcall LCD_write_byte 81 .LVL11: 29:main.c **** LCD_write_byte(0,1); 82 .loc 1 29 0 83 003e 61E0 ldi r22,lo8(1) 84 0040 80E0 ldi r24,0 85 0042 00D0 rcall LCD_write_byte 86 .LVL12: 30:main.c **** LCD_write_byte(0,1); 87 .loc 1 30 0 88 0044 61E0 ldi r22,lo8(1) 89 0046 80E0 ldi r24,0 90 0048 00D0 rcall LCD_write_byte 91 .LVL13: 31:main.c **** LCD_write_char('S'); 92 .loc 1 31 0 93 004a 83E5 ldi r24,lo8(83) 94 004c 00D0 rcall LCD_write_char 95 .LVL14: 32:main.c **** LCD_write_char('i'); 96 .loc 1 32 0 97 004e 89E6 ldi r24,lo8(105) 98 0050 00D0 rcall LCD_write_char 99 .LVL15: 33:main.c **** LCD_write_char('l'); 100 .loc 1 33 0 101 0052 8CE6 ldi r24,lo8(108) 102 0054 00D0 rcall LCD_write_char 103 .LVL16: 34:main.c **** LCD_write_char('v'); 104 .loc 1 34 0 105 0056 86E7 ldi r24,lo8(118) 106 0058 00D0 rcall LCD_write_char 107 .LVL17: 35:main.c **** LCD_write_char('i'); 108 .loc 1 35 0 109 005a 89E6 ldi r24,lo8(105) 110 005c 00D0 rcall LCD_write_char 111 .LVL18: 36:main.c **** LCD_write_char('a'); 112 .loc 1 36 0 113 005e 81E6 ldi r24,lo8(97) 114 0060 00D0 rcall LCD_write_char 115 .LVL19: 37:main.c **** LCD_write_byte(0,1); 116 .loc 1 37 0 117 0062 61E0 ldi r22,lo8(1) 118 0064 80E0 ldi r24,0 119 0066 00D0 rcall LCD_write_byte 120 .LVL20: 38:main.c **** LCD_write_byte(0,1); 121 .loc 1 38 0 122 0068 61E0 ldi r22,lo8(1) 123 006a 80E0 ldi r24,0 124 006c 00D0 rcall LCD_write_byte 125 .LVL21: 39:main.c **** LCD_write_char('*'); 126 .loc 1 39 0 127 006e 8AE2 ldi r24,lo8(42) 128 0070 00D0 rcall LCD_write_char 129 .LVL22: 40:main.c **** 41:main.c **** LCD_write_english_string(0,1,"LOVE"); 130 .loc 1 41 0 131 0072 40E0 ldi r20,lo8(.LC0) 132 0074 50E0 ldi r21,hi8(.LC0) 133 0076 61E0 ldi r22,lo8(1) 134 0078 80E0 ldi r24,0 135 007a 00D0 rcall LCD_write_english_string 136 .LVL23: 42:main.c **** 43:main.c **** while(1) 44:main.c **** { 45:main.c **** zwischenspeicher = PORTB; 46:main.c **** zwischenspeicher = zwischenspeicher ^ 0b00000001; 137 .loc 1 46 0 138 007c 41E0 ldi r20,lo8(1) 139 .LBB12: 140 .LBB13: 141 .LBB14: 142 .LBB15: 143 .file 2 "e:\\progs\\arduino-1.7.4\\hardware\\tools\\avr\\avr\\include\\util\\delay_basic.h" 1:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** /* Copyright (c) 2002, Marek Michalkiewicz 2:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** Copyright (c) 2007 Joerg Wunsch 3:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** All rights reserved. 4:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 5:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** Redistribution and use in source and binary forms, with or without 6:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** modification, are permitted provided that the following conditions are met: 7:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 8:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** * Redistributions of source code must retain the above copyright 9:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** notice, this list of conditions and the following disclaimer. 10:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 11:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** * Redistributions in binary form must reproduce the above copyright 12:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** notice, this list of conditions and the following disclaimer in 13:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** the documentation and/or other materials provided with the 14:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** distribution. 15:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 16:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** * Neither the name of the copyright holders nor the names of 17:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** contributors may be used to endorse or promote products derived 18:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** from this software without specific prior written permission. 19:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 20:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 24:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** POSSIBILITY OF SUCH DAMAGE. */ 31:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 32:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** /* $Id$ */ 33:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 34:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** #ifndef _UTIL_DELAY_BASIC_H_ 35:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** #define _UTIL_DELAY_BASIC_H_ 1 36:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 37:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** #include 38:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 39:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** #if !defined(__DOXYGEN__) 40:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline)); 41:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline)); 42:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** #endif 43:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 44:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** /** \file */ 45:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** /** \defgroup util_delay_basic : Basic busy-wait delay loops 46:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** \code 47:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** #include 48:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** \endcode 49:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 50:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** The functions in this header file implement simple delay loops 51:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** that perform a busy-waiting. They are typically used to 52:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** facilitate short delays in the program execution. They are 53:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** implemented as count-down loops with a well-known CPU cycle 54:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** count per loop iteration. As such, no other processing can 55:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** occur simultaneously. It should be kept in mind that the 56:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** functions described here do not disable interrupts. 57:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 58:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** In general, for long delays, the use of hardware timers is 59:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** much preferrable, as they free the CPU, and allow for 60:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** concurrent processing of other events while the timer is 61:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** running. However, in particular for very short delays, the 62:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** overhead of setting up a hardware timer is too much compared 63:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** to the overall delay time. 64:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 65:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** Two inline functions are provided for the actual delay algorithms. 66:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 67:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** */ 68:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 69:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** /** \ingroup util_delay_basic 70:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 71:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** Delay loop using an 8-bit counter \c __count, so up to 256 72:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** iterations are possible. (The value 256 would have to be passed 73:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** as 0.) The loop executes three CPU cycles per iteration, not 74:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** including the overhead the compiler needs to setup the counter 75:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** register. 76:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 77:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds 78:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** can be achieved. 79:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** */ 80:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** void 81:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** _delay_loop_1(uint8_t __count) 82:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** { 83:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** __asm__ volatile ( 84:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** "1: dec %0" "\n\t" 85:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** "brne 1b" 86:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** : "=r" (__count) 87:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** : "0" (__count) 88:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** ); 89:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** } 90:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 91:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** /** \ingroup util_delay_basic 92:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 93:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** Delay loop using a 16-bit counter \c __count, so up to 65536 94:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** iterations are possible. (The value 65536 would have to be 95:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** passed as 0.) The loop executes four CPU cycles per iteration, 96:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** not including the overhead the compiler requires to setup the 97:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** counter register pair. 98:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** 99:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** Thus, at a CPU speed of 1 MHz, delays of up to about 262.1 100:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** milliseconds can be achieved. 101:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** */ 102:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** void 103:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** _delay_loop_2(uint16_t __count) 104:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** { 105:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h **** __asm__ volatile ( 144 .loc 2 105 0 145 007e 29E1 ldi r18,lo8(25) 146 0080 30E0 ldi r19,0 147 .L3: 148 .LBE15: 149 .LBE14: 150 .LBE13: 151 .LBE12: 45:main.c **** zwischenspeicher = zwischenspeicher ^ 0b00000001; 152 .loc 1 45 0 discriminator 1 153 0082 88B3 in r24,0x18 154 .LVL24: 155 .loc 1 46 0 discriminator 1 156 0084 8427 eor r24,r20 157 .LVL25: 47:main.c **** PORTB = zwischenspeicher; 158 .loc 1 47 0 discriminator 1 159 0086 88BB out 0x18,r24 160 .LVL26: 161 0088 88E8 ldi r24,lo8(-120) 162 008a 93E1 ldi r25,lo8(19) 163 .LVL27: 164 .L4: 165 .LBB19: 166 .LBB18: 167 .LBB17: 168 .LBB16: 169 .loc 2 105 0 170 008c F901 movw r30,r18 171 /* #APP */ 172 ; 105 "e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay_basic.h" 1 173 008e 3197 1: sbiw r30,1 174 0090 01F4 brne 1b 175 ; 0 "" 2 176 .LVL28: 177 /* #NOAPP */ 178 0092 0197 sbiw r24,1 179 .LVL29: 180 .LBE16: 181 .LBE17: 182 .file 3 "e:\\progs\\arduino-1.7.4\\hardware\\tools\\avr\\avr\\include\\util\\delay.h" 1:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz 2:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** Copyright (c) 2004,2005,2007 Joerg Wunsch 3:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** Copyright (c) 2007 Florin-Viorel Petrov 4:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** All rights reserved. 5:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 6:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** Redistribution and use in source and binary forms, with or without 7:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** modification, are permitted provided that the following conditions are met: 8:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 9:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** * Redistributions of source code must retain the above copyright 10:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** notice, this list of conditions and the following disclaimer. 11:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 12:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** * Redistributions in binary form must reproduce the above copyright 13:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** notice, this list of conditions and the following disclaimer in 14:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** the documentation and/or other materials provided with the 15:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** distribution. 16:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 17:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** * Neither the name of the copyright holders nor the names of 18:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** contributors may be used to endorse or promote products derived 19:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** from this software without specific prior written permission. 20:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 21:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 25:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** POSSIBILITY OF SUCH DAMAGE. */ 32:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 33:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** /* $Id$ */ 34:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 35:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #ifndef _UTIL_DELAY_H_ 36:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #define _UTIL_DELAY_H_ 1 37:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 38:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #ifndef __HAS_DELAY_CYCLES 39:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #define __HAS_DELAY_CYCLES 1 40:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #endif 41:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 42:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #include 43:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #include 44:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #include 45:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 46:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** /** \file */ 47:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** /** \defgroup util_delay : Convenience functions for busy-wait delay loops 48:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** \code 49:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #define F_CPU 1000000UL // 1 MHz 50:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** //#define F_CPU 14.7456E6 51:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #include 52:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** \endcode 53:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 54:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** \note As an alternative method, it is possible to pass the 55:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** F_CPU macro down to the compiler from the Makefile. 56:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** Obviously, in that case, no \c \#define statement should be 57:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** used. 58:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 59:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** The functions in this header file are wrappers around the basic 60:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** busy-wait functions from . They are meant as 61:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** convenience functions where actual time values can be specified 62:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** rather than a number of cycles to wait for. The idea behind is 63:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** that compile-time constant expressions will be eliminated by 64:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** compiler optimization so floating-point expressions can be used 65:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** to calculate the number of delay cycles needed based on the CPU 66:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** frequency passed by the macro F_CPU. 67:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 68:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** \note In order for these functions to work as intended, compiler 69:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** optimizations must be enabled, and the delay time 70:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** must be an expression that is a known constant at 71:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** compile-time. If these requirements are not met, the resulting 72:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** delay will be much longer (and basically unpredictable), and 73:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** applications that otherwise do not use floating-point calculations 74:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** will experience severe code bloat by the floating-point library 75:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** routines linked into the application. 76:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 77:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** The functions available allow the specification of microsecond, and 78:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** millisecond delays directly, using the application-supplied macro 79:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** F_CPU as the CPU clock frequency (in Hertz). 80:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 81:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** */ 82:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 83:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #if !defined(__DOXYGEN__) 84:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** static inline void _delay_us(double __us) __attribute__((always_inline)); 85:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** static inline void _delay_ms(double __ms) __attribute__((always_inline)); 86:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #endif 87:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 88:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #ifndef F_CPU 89:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** /* prevent compiler error by supplying a default */ 90:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** # warning "F_CPU not defined for " 91:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** # define F_CPU 1000000UL 92:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #endif 93:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 94:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #ifndef __OPTIMIZE__ 95:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** # warning "Compiler optimizations disabled; functions from won't work as designed" 96:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #endif 97:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 98:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) && \ 99:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** !defined(__DELAY_BACKWARD_COMPATIBLE__) && \ 100:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** __STDC_HOSTED__ 101:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** # include 102:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #endif 103:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 104:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** /** 105:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** \ingroup util_delay 106:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 107:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** Perform a delay of \c __ms milliseconds, using _delay_loop_2(). 108:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 109:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** The macro F_CPU is supposed to be defined to a 110:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** constant defining the CPU clock frequency (in Hertz). 111:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 112:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** The maximal possible delay is 262.14 ms / F_CPU in MHz. 113:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 114:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** When the user request delay which exceed the maximum possible one, 115:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** _delay_ms() provides a decreased resolution functionality. In this 116:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** mode _delay_ms() will work with a resolution of 1/10 ms, providing 117:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** delays up to 6.5535 seconds (independent from CPU frequency). The 118:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** user will not be informed about decreased resolution. 119:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 120:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** If the avr-gcc toolchain has __builtin_avr_delay_cycles(unsigned long) 121:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** support, maximal possible delay is 4294967.295 ms/ F_CPU in MHz. For 122:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** values greater than the maximal possible delay, overflows results in 123:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** no delay i.e., 0ms. 124:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 125:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** Conversion of __us into clock cycles may not always result in integer. 126:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** By default, the clock cycles rounded up to next integer. This ensures that 127:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** the user gets atleast __us microseconds of delay. 128:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 129:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** Alternatively, user can define __DELAY_ROUND_DOWN__ and __DELAY_ROUND_CLOSEST__ 130:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** to round down and round to closest integer. 131:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 132:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** Note: The new implementation of _delay_ms(double __ms) with 133:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** __builtin_avr_delay_cycles(unsigned long) support is not backward compatible. 134:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** User can define __DELAY_BACKWARD_COMPATIBLE__ to get a backward compatible delay. 135:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** Also, the backward compatible 136:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** algorithm will be chosen if the code is compiled in a freestanding 137:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** environment (GCC option \c -ffreestanding), as the math functions 138:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** required for rounding are not available to the compiler then. 139:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 140:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** */ 141:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** void 142:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** _delay_ms(double __ms) 143:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** { 144:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** double __tmp ; 145:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) && \ 146:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** !defined(__DELAY_BACKWARD_COMPATIBLE__) && \ 147:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** __STDC_HOSTED__ 148:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** uint32_t __ticks_dc; 149:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** extern void __builtin_avr_delay_cycles(unsigned long); 150:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** __tmp = ((F_CPU) / 1e3) * __ms; 151:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 152:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #if defined(__DELAY_ROUND_DOWN__) 153:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** __ticks_dc = (uint32_t)fabs(__tmp); 154:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 155:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #elif defined(__DELAY_ROUND_CLOSEST__) 156:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** __ticks_dc = (uint32_t)(fabs(__tmp)+0.5); 157:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 158:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #else 159:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** //round up by default 160:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); 161:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #endif 162:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 163:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** __builtin_avr_delay_cycles(__ticks_dc); 164:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** 165:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** #else 166:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** uint16_t __ticks; 167:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** __tmp = ((F_CPU) / 4e3) * __ms; 168:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** if (__tmp < 1.0) 169:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** __ticks = 1; 170:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** else if (__tmp > 65535) 171:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** { 172:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** // __ticks = requested delay in 1/10 ms 173:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** __ticks = (uint16_t) (__ms * 10.0); 174:e:\progs\arduino-1.7.4\hardware\tools\avr\avr\include\util\delay.h **** while(__ticks) 183 .loc 3 174 0 184 0094 01F4 brne .L4 185 0096 00C0 rjmp .L3 186 .LBE18: 187 .LBE19: 188 .cfi_endproc 189 .LFE6: 191 .text 192 .Letext0: 193 .file 4 "e:\\progs\\arduino-1.7.4\\hardware\\tools\\avr\\avr\\include\\stdint.h" 194 .file 5 "../00_Lib/nokia_5110.h" DEFINED SYMBOLS *ABS*:00000000 main.c C:\Users\q242695\AppData\Local\Temp\ccq6mhBU.s:2 *ABS*:0000003e __SP_H__ C:\Users\q242695\AppData\Local\Temp\ccq6mhBU.s:3 *ABS*:0000003d __SP_L__ C:\Users\q242695\AppData\Local\Temp\ccq6mhBU.s:4 *ABS*:0000003f __SREG__ C:\Users\q242695\AppData\Local\Temp\ccq6mhBU.s:5 *ABS*:00000000 __tmp_reg__ C:\Users\q242695\AppData\Local\Temp\ccq6mhBU.s:6 *ABS*:00000001 __zero_reg__ C:\Users\q242695\AppData\Local\Temp\ccq6mhBU.s:16 .text.startup:00000000 main UNDEFINED SYMBOLS LCD_init LCD_clear LCD_write_char LCD_write_byte LCD_write_english_string __do_copy_data