?? main.lst
字號(hào):
22:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** POSSIBILITY OF SUCH DAMAGE. */
31:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
32:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /* $Id: eeprom.h,v 1.17.2.1 2006/02/26 21:51:04 aesok Exp $ */
33:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
34:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /*
35:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom.h
36:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
37:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** Contributors:
38:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** Created by Marek Michalkiewicz <marekm@linux.org.pl>
39:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom_write_word and eeprom_write_block added by Artur Lipowski
40:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** <LAL@pro.onet.pl>
41:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** Complete rewrite using the original interface by Bjoern Haase
42:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** <bjoern.haase@de.bosch.com>.
43:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** */
44:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
45:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #ifndef _EEPROM_H_
46:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #define _EEPROM_H_ 1
47:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
48:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #define __need_size_t
49:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #include <stddef.h>
50:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #include <inttypes.h>
51:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
52:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
53:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #ifdef __AVR_MEGA__
54:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #define XCALL "call"
55:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #else
56:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #define XCALL "rcall"
57:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #endif
58:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
59:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #include <avr/io.h>
60:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #ifndef __EEPROM_REG_LOCATIONS__
61:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /** \def __EEPROM_REG_LOCATIONS__
62:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \ingroup avr_eeprom
63:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** In order to be able to work without a requiring a multilib
64:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** approach for dealing with controllers having the EEPROM registers
65:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** at different positions in memory space, the eeprom functions evaluate
66:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** __EEPROM_REG_LOCATIONS__: It is assumed to be defined by
67:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** the device io header and contains 6 uppercase hex digits encoding the
68:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** addresses of EECR,EEDR and EEAR.
69:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** First two letters: EECR address.
70:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** Second two letters: EEDR address.
71:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** Last two letters: EEAR address.
72:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** The default 1C1D1E corresponds to the
73:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** register location that is valid for most controllers. The value
74:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** of this define symbol is used for appending it to the base name of the
75:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** assembler functions. */
76:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #define __EEPROM_REG_LOCATIONS__ 1C1D1E
77:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #endif
78:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #define _STR2(EXP) _STR1(EXP)
79:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #define _STR1(EXP) #EXP
80:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #define _REG_LOCATION_SUFFIX _STR2(__EEPROM_REG_LOCATIONS__)
81:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
82:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #ifndef CR_TAB
83:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #define CR_TAB "\n\t"
84:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #endif
85:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
86:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
87:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /** \defgroup avr_eeprom <avr/eeprom.h>: EEPROM handling
88:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \code #include <avr/eeprom.h> \endcode
89:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
90:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** This header file declares the interface to some simple library
91:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** routines suitable for handling the data EEPROM contained in the
92:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** AVR microcontrollers. The implementation uses a simple polled
93:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** mode interface. Applications that require interrupt-controlled
94:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** EEPROM access to ensure that no time will be wasted in spinloops
95:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** will have to deploy their own implementation.
96:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
97:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \note All of the read/write functions first make sure the EEPROM
98:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** is ready to be accessed. Since this may cause long delays if a
99:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** write operation is still pending, time-critical applications
100:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** should first poll the EEPROM e. g. using eeprom_is_ready() before
101:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** attempting any actual I/O.
102:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
103:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \note This header file declares inline functions that call the
104:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** assembler subroutines directly. This prevents that the compiler
105:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** generates push/pops for the call-clobbered registers. This way
106:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** also a specific calling convention could be used for the eeprom
107:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** routines e.g. by passing values in __tmp_reg__, eeprom addresses in
108:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** X and memory addresses in Z registers. Method is optimized for code
109:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** size.
110:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
111:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \note Presently supported are two locations of the EEPROM register
112:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** set: 0x1F,0x20,0x21 and 0x1C,0x1D,0x1E
113:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** (see ::__EEPROM_REG_LOCATIONS__).
114:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
115:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \note As these functions modify IO registers, they are known to be
116:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** non-reentrant. If any of these functions are used from both,
117:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** standard and interrupt context, the applications must ensure
118:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** proper protection (e.g. by disabling interrupts before accessing
119:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** them).
120:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
121:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** */
122:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
123:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
124:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /* forward declarations of the inline functions so that doxygen does
125:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** not get confused by the attribute expression. */
126:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
127:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** static inline uint8_t __attribute__ ((always_inline))
128:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom_read_byte (const uint8_t *addr);
129:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
130:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** static inline uint16_t __attribute__ ((always_inline))
131:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom_read_word (const uint16_t *addr);
132:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
133:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
134:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom_read_block (void *pointer_ram,
135:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** const void *pointer_eeprom,
136:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** size_t size);
137:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
138:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
139:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom_write_byte (uint8_t *addr,uint8_t value);
140:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
141:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
142:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom_write_word (uint16_t *addr,uint16_t value);
143:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
144:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
145:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom_write_block (const void *pointer_ram,
146:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** void *pointer_eeprom,
147:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** size_t size);
148:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
149:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /** \name avr-libc declarations */
150:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
151:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /*@{*/
152:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
153:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /** \def EEMEM
154:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \ingroup avr_eeprom
155:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** Attribute expression causing a variable to be allocated within the .eeprom
156:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** section. */
157:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #define EEMEM __attribute__((section(".eeprom")))
158:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
159:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /** \def eeprom_is_ready
160:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \ingroup avr_eeprom
161:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \returns 1 if EEPROM is ready for a new read/write operation, 0 if not. */
162:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
163:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #if defined(__DOXYGEN__)
164:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** # define eeprom_is_ready()
165:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #elif defined(EEWE)
166:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(EECR, EEWE)
167:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #elif defined(EEPE)
168:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(EECR, EEPE)
169:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #elif defined(DEECR) && defined(EEL)
170:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(DEECR, EEL)
171:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #else
172:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** # error "No write enable bit known for this device's EEPROM."
173:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #endif
174:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
175:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /** \def eeprom_busy_wait
176:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \ingroup avr_eeprom
177:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
178:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** Loops until the eeprom is no longer busy.
179:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
180:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \returns Nothing. */
181:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
182:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** #define eeprom_busy_wait() do {} while (!eeprom_is_ready())
183:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
184:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
185:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
186:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** Read one byte from EEPROM address \c addr. */
187:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
188:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** uint8_t
189:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom_read_byte (const uint8_t *addr)
190:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** {
191:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** uint8_t result;
192:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** asm volatile
193:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** ( XCALL " __eeprom_read_byte_" _REG_LOCATION_SUFFIX CR_TAB
194:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "mov %1,__tmp_reg__"
195:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : "+x" (addr),
196:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "=r" (result)
197:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : );
198:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** return result;
199:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** }
200:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
201:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
202:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** Read one 16-bit word (little endian) from EEPROM address \c addr. */
203:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** uint16_t
204:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom_read_word (const uint16_t *addr)
205:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** {
206:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** uint16_t result;
207:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
208:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** asm (
209:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** XCALL " __eeprom_read_word_" _REG_LOCATION_SUFFIX CR_TAB
210:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : "+x" (addr),
211:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "=z" (result)
212:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : );
213:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** return result;
214:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** }
215:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
216:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
217:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** Read a block of \c n bytes from EEPROM address \c pointer_eeprom to
218:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** \c pointer_ram. For constant n <= 256 bytes a library function is used.
219:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** For block sizes unknown at compile time or block sizes > 256 an inline
220:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** loop is expanded. */
221:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
222:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** void
223:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom_read_block (void *pointer_ram,
224:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** const void *pointer_eeprom,
225:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** size_t n)
226:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** {
227:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** if (!__builtin_constant_p (n)
228:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** || n > 256)
229:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** {
230:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /* make sure size is a 16 bit variable. */
231:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** uint16_t size = n;
232:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
233:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** asm volatile (
234:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** ".%=_start:" CR_TAB
235:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "sbiw %2,1" CR_TAB
236:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "brlt .%=_finished" CR_TAB
237:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** XCALL " __eeprom_read_byte_" _REG_LOCATION_SUFFIX CR_TAB
238:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "st z+,__tmp_reg__" CR_TAB
239:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "rjmp .%=_start" CR_TAB
240:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** ".%=_finished:"
241:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : "=x" (pointer_eeprom),
242:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "=z" (pointer_ram),
243:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "+w" (size)
244:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : "x" (pointer_eeprom),
245:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "z" (pointer_ram)
246:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : "memory");
247:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** }
248:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** else
249:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** {
250:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** if (n != 0)
251:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** {
252:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** if (n == 256)
253:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** {
254:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** asm volatile (
255:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** XCALL " __eeprom_read_block_" _REG_LOCATION_SUFFIX
256:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : "+x" (pointer_eeprom),
257:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "=z" (pointer_ram)
258:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : "z" (pointer_ram)
259:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : "memory");
260:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** }
261:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** else
262:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** {
263:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /* Needed in order to truncate to 8 bit. */
264:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** uint8_t len;
265:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** len = (uint8_t) n;
266:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
267:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** asm volatile (
268:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "mov __zero_reg__,%2" CR_TAB
269:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** XCALL " __eeprom_read_block_" _REG_LOCATION_SUFFIX
270:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : "+x" (pointer_eeprom),
271:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "=z" (pointer_ram)
272:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : "r" (len),
273:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** "z" (pointer_ram)
274:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** : "memory");
275:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** }
276:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** }
277:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** }
278:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** }
279:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
280:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
281:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** Write a byte \c value to EEPROM address \c addr. */
282:F:/Program Files/WINAVR/avr/include/avr/eeprom.h ****
283:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** void
284:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** eeprom_write_byte (uint8_t *addr,uint8_t value)
285:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** {
670 .LM34:
671 01be A091 0000 lds r26,Eep_Addr
672 01c2 B091 0000 lds r27,(Eep_Addr)+1
673 .LBB3:
286:F:/Program Files/WINAVR/avr/include/avr/eeprom.h **** asm volatile (
675 .LM35:
676 /* #APP */
677 01c6 082E mov __tmp_reg__,r24
678 01c8 0E94 0000 call __eeprom_write_byte_1C1D1E
679 /* #NOAPP */
680 .LBE3:
681 .LBE2:
683 .Ltext2:
107:main.c **** eeprom_write_byte (Eep_Addr, TEM_H);
108:main.c **** Eep_Addr++;
685 .LM36:
686 01cc 8091 0000 lds r24,Eep_Addr
687 01d0 9091 0000 lds r25,(Eep_Addr)+1
688 01d4 0196 adiw r24,1
689 01d6 9093 0000 sts (Eep_Addr)+1,r25
690 01da 8093 0000 sts Eep_Addr,r24
109:main.c **** if(Eep_Addr>512)
692 .LM37:
693 01de 8150 subi r24,lo8(513)
694 01e0 9240 sbci r25,hi8(513)
695 01e2 30F0 brlo .L19
110:main.c **** {Eep_Addr=4;}
697 .LM38:
698 01e4 84E0 ldi r24,lo8(4)
699 01e6 90E0 ldi r25,hi8(4)
700 01e8 9093 0000 sts (Eep_Addr)+1,r25
701 01ec 8093 0000 sts Eep_Addr,r24
702 .L19:
111:main.c **** for(i=59;i>0;i--)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -