📄 eeprom.lst
字号:
134:d:/WinAVR/avr/include/avr/eeprom.h **** eeprom_read_block (void *pointer_ram,
135:d:/WinAVR/avr/include/avr/eeprom.h **** const void *pointer_eeprom,
136:d:/WinAVR/avr/include/avr/eeprom.h **** size_t size);
137:d:/WinAVR/avr/include/avr/eeprom.h ****
138:d:/WinAVR/avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
139:d:/WinAVR/avr/include/avr/eeprom.h **** eeprom_write_byte (uint8_t *addr,uint8_t value);
140:d:/WinAVR/avr/include/avr/eeprom.h ****
141:d:/WinAVR/avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
142:d:/WinAVR/avr/include/avr/eeprom.h **** eeprom_write_word (uint16_t *addr,uint16_t value);
143:d:/WinAVR/avr/include/avr/eeprom.h ****
144:d:/WinAVR/avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
145:d:/WinAVR/avr/include/avr/eeprom.h **** eeprom_write_block (const void *pointer_ram,
146:d:/WinAVR/avr/include/avr/eeprom.h **** void *pointer_eeprom,
147:d:/WinAVR/avr/include/avr/eeprom.h **** size_t size);
148:d:/WinAVR/avr/include/avr/eeprom.h ****
149:d:/WinAVR/avr/include/avr/eeprom.h **** /** \name avr-libc declarations */
150:d:/WinAVR/avr/include/avr/eeprom.h ****
151:d:/WinAVR/avr/include/avr/eeprom.h **** /*@{*/
152:d:/WinAVR/avr/include/avr/eeprom.h ****
153:d:/WinAVR/avr/include/avr/eeprom.h **** /** \def EEMEM
154:d:/WinAVR/avr/include/avr/eeprom.h **** \ingroup avr_eeprom
155:d:/WinAVR/avr/include/avr/eeprom.h **** Attribute expression causing a variable to be allocated within the .eeprom
156:d:/WinAVR/avr/include/avr/eeprom.h **** section. */
157:d:/WinAVR/avr/include/avr/eeprom.h **** #define EEMEM __attribute__((section(".eeprom")))
158:d:/WinAVR/avr/include/avr/eeprom.h ****
159:d:/WinAVR/avr/include/avr/eeprom.h **** /** \def eeprom_is_ready
160:d:/WinAVR/avr/include/avr/eeprom.h **** \ingroup avr_eeprom
161:d:/WinAVR/avr/include/avr/eeprom.h **** \returns 1 if EEPROM is ready for a new read/write operation, 0 if not. */
162:d:/WinAVR/avr/include/avr/eeprom.h ****
163:d:/WinAVR/avr/include/avr/eeprom.h **** #if defined(__DOXYGEN__)
164:d:/WinAVR/avr/include/avr/eeprom.h **** # define eeprom_is_ready()
165:d:/WinAVR/avr/include/avr/eeprom.h **** #elif defined(EEWE)
166:d:/WinAVR/avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(EECR, EEWE)
167:d:/WinAVR/avr/include/avr/eeprom.h **** #elif defined(EEPE)
168:d:/WinAVR/avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(EECR, EEPE)
169:d:/WinAVR/avr/include/avr/eeprom.h **** #elif defined(DEECR) && defined(EEL)
170:d:/WinAVR/avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(DEECR, EEL)
171:d:/WinAVR/avr/include/avr/eeprom.h **** #else
172:d:/WinAVR/avr/include/avr/eeprom.h **** # error "No write enable bit known for this device's EEPROM."
173:d:/WinAVR/avr/include/avr/eeprom.h **** #endif
174:d:/WinAVR/avr/include/avr/eeprom.h ****
175:d:/WinAVR/avr/include/avr/eeprom.h **** /** \def eeprom_busy_wait
176:d:/WinAVR/avr/include/avr/eeprom.h **** \ingroup avr_eeprom
177:d:/WinAVR/avr/include/avr/eeprom.h ****
178:d:/WinAVR/avr/include/avr/eeprom.h **** Loops until the eeprom is no longer busy.
179:d:/WinAVR/avr/include/avr/eeprom.h ****
180:d:/WinAVR/avr/include/avr/eeprom.h **** \returns Nothing. */
181:d:/WinAVR/avr/include/avr/eeprom.h ****
182:d:/WinAVR/avr/include/avr/eeprom.h **** #define eeprom_busy_wait() do {} while (!eeprom_is_ready())
183:d:/WinAVR/avr/include/avr/eeprom.h ****
184:d:/WinAVR/avr/include/avr/eeprom.h ****
185:d:/WinAVR/avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
186:d:/WinAVR/avr/include/avr/eeprom.h **** Read one byte from EEPROM address \c addr. */
187:d:/WinAVR/avr/include/avr/eeprom.h ****
188:d:/WinAVR/avr/include/avr/eeprom.h **** uint8_t
189:d:/WinAVR/avr/include/avr/eeprom.h **** eeprom_read_byte (const uint8_t *addr)
190:d:/WinAVR/avr/include/avr/eeprom.h **** {
191:d:/WinAVR/avr/include/avr/eeprom.h **** uint8_t result;
192:d:/WinAVR/avr/include/avr/eeprom.h **** asm volatile
165 .LM2:
166 0000 DC01 movw r26,r24
167 /* #APP */
168 0002 00D0 rcall __eeprom_read_byte_1C1D1E
169 0004 802D mov r24,__tmp_reg__
170 /* #NOAPP */
171 .LBE3:
172 .LBE2:
174 .Ltext2:
47:drive/eeprom.c **** return ( eeprom_read_byte (( u08 *)eeprom_adress) );
48:drive/eeprom.c **** }
176 .LM3:
177 0006 9927 clr r25
178 /* epilogue: frame size=0 */
179 0008 0895 ret
180 /* epilogue end (size=1) */
181 /* function read_byte_from_eeprom size 7 (6) */
189 .Lscope0:
193 .global write_byte_to_eeprom
195 write_byte_to_eeprom:
49:drive/eeprom.c **** /*****************************************************************************
50:drive/eeprom.c **** *-----------------------------------------------------------------------------
51:drive/eeprom.c **** * subroutine: write_byte_to_eeprom(u08 eeprom_adress)
52:drive/eeprom.c **** * function: used by keyprocess ,compare relay
53:drive/eeprom.c **** * globle variable:
54:drive/eeprom.c **** * date: 2006.09.17
55:drive/eeprom.c **** * author:
56:drive/eeprom.c **** * abstract:
57:drive/eeprom.c **** *-----------------------------------------------------------------------------
58:drive/eeprom.c **** ******************************************************************************/
59:drive/eeprom.c **** BOOL write_byte_to_eeprom(uint16 eeprom_adress,u08 value)
60:drive/eeprom.c **** {
197 .LM4:
198 /* prologue: frame size=0 */
199 /* prologue end (size=0) */
200 .LBB4:
201 .LBB5:
203 .Ltext3:
193:d:/WinAVR/avr/include/avr/eeprom.h **** ( XCALL " __eeprom_read_byte_" _REG_LOCATION_SUFFIX CR_TAB
194:d:/WinAVR/avr/include/avr/eeprom.h **** "mov %1,__tmp_reg__"
195:d:/WinAVR/avr/include/avr/eeprom.h **** : "+x" (addr),
196:d:/WinAVR/avr/include/avr/eeprom.h **** "=r" (result)
197:d:/WinAVR/avr/include/avr/eeprom.h **** : );
198:d:/WinAVR/avr/include/avr/eeprom.h **** return result;
199:d:/WinAVR/avr/include/avr/eeprom.h **** }
200:d:/WinAVR/avr/include/avr/eeprom.h ****
201:d:/WinAVR/avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
202:d:/WinAVR/avr/include/avr/eeprom.h **** Read one 16-bit word (little endian) from EEPROM address \c addr. */
203:d:/WinAVR/avr/include/avr/eeprom.h **** uint16_t
204:d:/WinAVR/avr/include/avr/eeprom.h **** eeprom_read_word (const uint16_t *addr)
205:d:/WinAVR/avr/include/avr/eeprom.h **** {
206:d:/WinAVR/avr/include/avr/eeprom.h **** uint16_t result;
207:d:/WinAVR/avr/include/avr/eeprom.h ****
208:d:/WinAVR/avr/include/avr/eeprom.h **** asm (
209:d:/WinAVR/avr/include/avr/eeprom.h **** XCALL " __eeprom_read_word_" _REG_LOCATION_SUFFIX CR_TAB
210:d:/WinAVR/avr/include/avr/eeprom.h **** : "+x" (addr),
211:d:/WinAVR/avr/include/avr/eeprom.h **** "=z" (result)
212:d:/WinAVR/avr/include/avr/eeprom.h **** : );
213:d:/WinAVR/avr/include/avr/eeprom.h **** return result;
214:d:/WinAVR/avr/include/avr/eeprom.h **** }
215:d:/WinAVR/avr/include/avr/eeprom.h ****
216:d:/WinAVR/avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
217:d:/WinAVR/avr/include/avr/eeprom.h **** Read a block of \c n bytes from EEPROM address \c pointer_eeprom to
218:d:/WinAVR/avr/include/avr/eeprom.h **** \c pointer_ram. For constant n <= 256 bytes a library function is used.
219:d:/WinAVR/avr/include/avr/eeprom.h **** For block sizes unknown at compile time or block sizes > 256 an inline
220:d:/WinAVR/avr/include/avr/eeprom.h **** loop is expanded. */
221:d:/WinAVR/avr/include/avr/eeprom.h ****
222:d:/WinAVR/avr/include/avr/eeprom.h **** void
223:d:/WinAVR/avr/include/avr/eeprom.h **** eeprom_read_block (void *pointer_ram,
224:d:/WinAVR/avr/include/avr/eeprom.h **** const void *pointer_eeprom,
225:d:/WinAVR/avr/include/avr/eeprom.h **** size_t n)
226:d:/WinAVR/avr/include/avr/eeprom.h **** {
227:d:/WinAVR/avr/include/avr/eeprom.h **** if (!__builtin_constant_p (n)
228:d:/WinAVR/avr/include/avr/eeprom.h **** || n > 256)
229:d:/WinAVR/avr/include/avr/eeprom.h **** {
230:d:/WinAVR/avr/include/avr/eeprom.h **** /* make sure size is a 16 bit variable. */
231:d:/WinAVR/avr/include/avr/eeprom.h **** uint16_t size = n;
232:d:/WinAVR/avr/include/avr/eeprom.h ****
233:d:/WinAVR/avr/include/avr/eeprom.h **** asm volatile (
234:d:/WinAVR/avr/include/avr/eeprom.h **** ".%=_start:" CR_TAB
235:d:/WinAVR/avr/include/avr/eeprom.h **** "sbiw %2,1" CR_TAB
236:d:/WinAVR/avr/include/avr/eeprom.h **** "brlt .%=_finished" CR_TAB
237:d:/WinAVR/avr/include/avr/eeprom.h **** XCALL " __eeprom_read_byte_" _REG_LOCATION_SUFFIX CR_TAB
238:d:/WinAVR/avr/include/avr/eeprom.h **** "st z+,__tmp_reg__" CR_TAB
239:d:/WinAVR/avr/include/avr/eeprom.h **** "rjmp .%=_start" CR_TAB
240:d:/WinAVR/avr/include/avr/eeprom.h **** ".%=_finished:"
241:d:/WinAVR/avr/include/avr/eeprom.h **** : "=x" (pointer_eeprom),
242:d:/WinAVR/avr/include/avr/eeprom.h **** "=z" (pointer_ram),
243:d:/WinAVR/avr/include/avr/eeprom.h **** "+w" (size)
244:d:/WinAVR/avr/include/avr/eeprom.h **** : "x" (pointer_eeprom),
245:d:/WinAVR/avr/include/avr/eeprom.h **** "z" (pointer_ram)
246:d:/WinAVR/avr/include/avr/eeprom.h **** : "memory");
247:d:/WinAVR/avr/include/avr/eeprom.h **** }
248:d:/WinAVR/avr/include/avr/eeprom.h **** else
249:d:/WinAVR/avr/include/avr/eeprom.h **** {
250:d:/WinAVR/avr/include/avr/eeprom.h **** if (n != 0)
251:d:/WinAVR/avr/include/avr/eeprom.h **** {
252:d:/WinAVR/avr/include/avr/eeprom.h **** if (n == 256)
253:d:/WinAVR/avr/include/avr/eeprom.h **** {
254:d:/WinAVR/avr/include/avr/eeprom.h **** asm volatile (
255:d:/WinAVR/avr/include/avr/eeprom.h **** XCALL " __eeprom_read_block_" _REG_LOCATION_SUFFIX
256:d:/WinAVR/avr/include/avr/eeprom.h **** : "+x" (pointer_eeprom),
257:d:/WinAVR/avr/include/avr/eeprom.h **** "=z" (pointer_ram)
258:d:/WinAVR/avr/include/avr/eeprom.h **** : "z" (pointer_ram)
259:d:/WinAVR/avr/include/avr/eeprom.h **** : "memory");
260:d:/WinAVR/avr/include/avr/eeprom.h **** }
261:d:/WinAVR/avr/include/avr/eeprom.h **** else
262:d:/WinAVR/avr/include/avr/eeprom.h **** {
263:d:/WinAVR/avr/include/avr/eeprom.h **** /* Needed in order to truncate to 8 bit. */
264:d:/WinAVR/avr/include/avr/eeprom.h **** uint8_t len;
265:d:/WinAVR/avr/include/avr/eeprom.h **** len = (uint8_t) n;
266:d:/WinAVR/avr/include/avr/eeprom.h ****
267:d:/WinAVR/avr/include/avr/eeprom.h **** asm volatile (
268:d:/WinAVR/avr/include/avr/eeprom.h **** "mov __zero_reg__,%2" CR_TAB
269:d:/WinAVR/avr/include/avr/eeprom.h **** XCALL " __eeprom_read_block_" _REG_LOCATION_SUFFIX
270:d:/WinAVR/avr/include/avr/eeprom.h **** : "+x" (pointer_eeprom),
271:d:/WinAVR/avr/include/avr/eeprom.h **** "=z" (pointer_ram)
272:d:/WinAVR/avr/include/avr/eeprom.h **** : "r" (len),
273:d:/WinAVR/avr/include/avr/eeprom.h **** "z" (pointer_ram)
274:d:/WinAVR/avr/include/avr/eeprom.h **** : "memory");
275:d:/WinAVR/avr/include/avr/eeprom.h **** }
276:d:/WinAVR/avr/include/avr/eeprom.h **** }
277:d:/WinAVR/avr/include/avr/eeprom.h **** }
278:d:/WinAVR/avr/include/avr/eeprom.h **** }
279:d:/WinAVR/avr/include/avr/eeprom.h ****
280:d:/WinAVR/avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
281:d:/WinAVR/avr/include/avr/eeprom.h **** Write a byte \c value to EEPROM address \c addr. */
282:d:/WinAVR/avr/include/avr/eeprom.h ****
283:d:/WinAVR/avr/include/avr/eeprom.h **** void
284:d:/WinAVR/avr/include/avr/eeprom.h **** eeprom_write_byte (uint8_t *addr,uint8_t value)
285:d:/WinAVR/avr/include/avr/eeprom.h **** {
286:d:/WinAVR/avr/include/avr/eeprom.h **** asm volatile (
205 .LM5:
206 000a DC01 movw r26,r24
207 /* #APP */
208 000c 062E mov __tmp_reg__,r22
209 000e 00D0 rcall __eeprom_write_byte_1C1D1E
210 /* #NOAPP */
211 .LBE5:
212 .LBE4:
214 .Ltext4:
61:drive/eeprom.c **** eeprom_write_byte ((u08 *)(eeprom_adress), (u08)(value));
62:drive/eeprom.c ****
63:drive/eeprom.c **** return OK;
64:drive/eeprom.c **** }
216 .LM6:
217 0010 81E0 ldi r24,lo8(1)
218 0012 90E0 ldi r25,hi8(1)
219 /* epilogue: frame size=0 */
220 0014 0895 ret
221 /* epilogue end (size=1) */
222 /* function write_byte_to_eeprom size 8 (7) */
227 .Lscope1:
229 .global SynRamFromE2prom
231 SynRamFromE2prom:
65:drive/eeprom.c **** /*****************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -