⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataflash.lst

📁 ENC28J60 System HTTP
💻 LST
📖 第 1 页 / 共 5 页
字号:
 289:io/dataflash.c **** 	//select device again:
 290:io/dataflash.c **** 	DATAFLASH_CS_LO();
 291:io/dataflash.c **** 
 292:io/dataflash.c **** 	//send page read cmd:
 293:io/dataflash.c **** 	dataflash_spi_writeread_byte(DATAFLASH_MEM_PAGE_READ);
 294:io/dataflash.c **** 
 295:io/dataflash.c **** 	//send 24 address bits
 296:io/dataflash.c **** 	dataflash_spi_writeread_byte((page>>7) & 0x0F); //send 0000 pppp (4 MSB of page adress)
 297:io/dataflash.c **** 	dataflash_spi_writeread_byte(((page<<1)&0xFE) | ((byte>>8)&0x01) ); //send pppp pppb (7 LSB of pag
 298:io/dataflash.c **** 	dataflash_spi_writeread_byte(byte & 0xFF); //send bbbb bbbb (8 LSB of byte address)
 299:io/dataflash.c **** 	
 300:io/dataflash.c **** 	//now send 32 dummy dont care bits:
 301:io/dataflash.c **** 	dataflash_spi_writeread_byte(0x00);	//8
 302:io/dataflash.c **** 	dataflash_spi_writeread_byte(0x00); //16
 303:io/dataflash.c **** 	dataflash_spi_writeread_byte(0x00); //24
 304:io/dataflash.c **** 	dataflash_spi_writeread_byte(0x00); //32
 305:io/dataflash.c **** 
 306:io/dataflash.c **** 	//now read the data
 307:io/dataflash.c **** 	data = dataflash_spi_writeread_byte(0x00);
 308:io/dataflash.c **** 
 309:io/dataflash.c **** 	//deselect device
 310:io/dataflash.c **** 	DATAFLASH_CS_HI();
 311:io/dataflash.c **** 
 312:io/dataflash.c **** 	//return data
 313:io/dataflash.c **** 	return (data);
 314:io/dataflash.c **** }
 315:io/dataflash.c **** 
 316:io/dataflash.c **** //wait for dataflash ready flag
 317:io/dataflash.c **** void dataflash_busy_wait(){
 318:io/dataflash.c **** 	DATAFLASH_CS_LO();
 319:io/dataflash.c **** 
 320:io/dataflash.c **** 	//send status req cmd:
 321:io/dataflash.c **** 	dataflash_spi_writeread_byte(DATAFLASH_READ_STATUS);
 322:io/dataflash.c **** 
 323:io/dataflash.c **** 	//wait for bit7 in status reg to be 1:
 324:io/dataflash.c **** 	while ( (dataflash_spi_writeread_byte(DATAFLASH_READ_STATUS)&0x80) != 0x80){
 325:io/dataflash.c **** 		//wait...
 326:io/dataflash.c **** 		//uart_putc('.');
 327:io/dataflash.c **** 	}
 328:io/dataflash.c **** 	DATAFLASH_CS_HI();
 329:io/dataflash.c **** }
 330:io/dataflash.c **** 
 331:io/dataflash.c **** //send one byte over SPI and read one byte back
 332:io/dataflash.c **** //device must be selected before !!!
 333:io/dataflash.c **** unsigned char dataflash_spi_writeread_byte(unsigned char data){
 334:io/dataflash.c **** 	unsigned char res = 0;	
 335:io/dataflash.c **** 	//shift data out
 336:io/dataflash.c **** 	SPDR = data;
 337:io/dataflash.c **** 
 338:io/dataflash.c **** 	//wait for completion
 339:io/dataflash.c **** 	while(!(SPSR & (1<<SPIF)));
 115               	bis 46-32,7
 116               		rjmp .L2
 118               	.LM6:
 340:io/dataflash.c **** 1<<SPIF)));
 341:io/dataflash.c **** 
 342:io/dataflash.c **** 	//shiftout 8 clocks, now we receive data:
 119               	r25,47-32
 120               	.LBE178:
 121 000e 779B      	.LBE177:
 343:io/dataflash.c **** ive data:
 344:io/dataflash.c **** 	///SPDR = 0x00;
 345:io/dataflash.c **** 	//wait for completion
 346:io/dataflash.c **** 	///while(!(SPSR & (1<<SPIF)));
 347:io/dataflash.c **** 
 348:io/dataflash.c **** 	// read data
 349:io/dataflash.c **** 	res = SPDR;
 350:io/dataflash.c **** 
 123               	:
 124               		subi r24,lo8(-(1))
 125 0012 9FB1      		cpi r24,lo8(20)
 126               		brne .L3
 127               	.LBE176:
 128               	.LBB179:
 129               	.LBB180:
 130 0014 8F5F      	.LBB181:
 131 0016 8431      	.LBB182:
 133               	.Ltext1:
 135               	.LM8:
 136               		ldi r24,lo8(49)
 137               	/* #APP */
 138               	 ;  83 "c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h" 1
 139               		1: dec r24
   1:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** /* Copyright (c) 2002, Marek Michalkiewicz
   2:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****    Copyright (c) 2007 Joerg Wunsch
   3:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****    All rights reserved.
   4:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
   5:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****    Redistribution and use in source and binary forms, with or without
   6:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****    modification, are permitted provided that the following conditions are met:
   7:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
   8:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****    * Redistributions of source code must retain the above copyright
   9:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****      notice, this list of conditions and the following disclaimer.
  10:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  11:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****    * Redistributions in binary form must reproduce the above copyright
  12:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****      notice, this list of conditions and the following disclaimer in
  13:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****      the documentation and/or other materials provided with the
  14:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****      distribution.
  15:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  16:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****    * Neither the name of the copyright holders nor the names of
  17:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****      contributors may be used to endorse or promote products derived
  18:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****      from this software without specific prior written permission.
  19:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  20:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  24:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  30:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****   POSSIBILITY OF SUCH DAMAGE. */
  31:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  32:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** /* $Id: delay_basic.h,v 1.1 2007/05/13 21:23:20 joerg_wunsch Exp $ */
  33:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  34:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** #ifndef _UTIL_DELAY_BASIC_H_
  35:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** #define _UTIL_DELAY_BASIC_H_ 1
  36:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  37:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** #include <inttypes.h>
  38:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  39:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** /** \file */
  40:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** /** \defgroup util_delay_basic <util/delay_basic.h>: Basic busy-wait delay loops
  41:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     \code
  42:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     #include <util/delay_basic.h>
  43:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     \endcode
  44:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  45:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     The functions in this header file implement simple delay loops
  46:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     that perform a busy-waiting.  They are typically used to
  47:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     facilitate short delays in the program execution.  They are
  48:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     implemented as count-down loops with a well-known CPU cycle
  49:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     count per loop iteration.  As such, no other processing can
  50:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     occur simultaneously.  It should be kept in mind that the
  51:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     functions described here do not disable interrupts.
  52:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  53:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     In general, for long delays, the use of hardware timers is
  54:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     much preferrable, as they free the CPU, and allow for
  55:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     concurrent processing of other events while the timer is
  56:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     running.  However, in particular for very short delays, the
  57:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     overhead of setting up a hardware timer is too much compared
  58:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     to the overall delay time.
  59:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  60:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     Two inline functions are provided for the actual delay algorithms.
  61:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  62:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** */
  63:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  64:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** #if !defined(__DOXYGEN__)
  65:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
  66:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
  67:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** #endif
  68:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  69:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
  70:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  71:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     Delay loop using an 8-bit counter \c __count, so up to 256
  72:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     iterations are possible.  (The value 256 would have to be passed
  73:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     as 0.)  The loop executes three CPU cycles per iteration, not
  74:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     including the overhead the compiler needs to setup the counter
  75:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     register.
  76:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 
  77:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
  78:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****     can be achieved.
  79:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** */
  80:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** void
  81:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** _delay_loop_1(uint8_t __count)
  82:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** {
  83:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** 	__asm__ volatile (
 140               	 2
 141               	/* #NOAPP */
 142 001a 81E3      	.LBE182:
 143               	.LBE181:
 144               	.LBE180:
 145 001c 8A95      	.LBE179:
 147               	.Ltext2:
 149               	.LM9:
 150               		sbi 53-32,6
 151               	.LBB183:
 152               	.LBB184:
 153               	.LBB185:
 154               	.LBB186:
 156               	.Ltext3:
 158               	.LM10:
 159               		ldi r24,lo8(2)
 160               	/* #APP */
 161               	 ;  83 "c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h" 1
 162               		1: dec r24
 163               		brne 1b
 164               	 ;  0 "" 2
 165               	/* #NOAPP */
 166 0022 82E0      	.LBE186:
 167               	.LBE185:
 168               	.LBE184:
 169 0024 8A95      	.LBE183:
 171               	.Ltext4:
 173               	.LM11:
 174               		sbi 53-32,5
 175               	/* epilogue start */
 177               	.LM12:
 178               		ret
 186               	.Lscope1:
 190               	.global	dataflash_copy_buffer_to_page
 192               	dataflash_copy_buffer_to_page:
 194               	.LM13:
 195               	.LFBB2:
 196               	/* prologue: function */
 197               	/* frame size = 0 */
 198               		movw r18,r24
 199               	.LBB187:
 200               	.LBB188:
 202               	.LM14:
 203               		cbi 53-32,6
 204               	.LBB189:
 205 002c 9C01      	.LBB190:
 207               	.LM15:
 208               		ldi r24,lo8(-41)
 209               		out 47-32,r24
 210 002e AE98      	.L8:
 212               	.LM16:
 213               		sbis 46-32,7
 214               		rjmp .L8
 216 0032 8FB9      	.LM17:
 217               		in r24,47-32
 218               	.LBE190:
 219               	.LBE189:
 220 0034 779B      	.LBB191:
 221 0036 00C0      	.LBB192:
 223               	.LM18:
 224 0038 8FB1      		ldi r24,lo8(-41)
 225               	.L10:
 226               		out 47-32,r24
 227               	.L9:
 229               	.LM19:
 230               		sbis 46-32,7
 231 003a 87ED      		rjmp .L9
 232               	.LBE192:
 233 003c 8FB9      	.LBE191:
 235               	.LM20:
 236               		sbis 47-32,7
 237 003e 779B      		rjmp .L10
 239               	.LM21:
 240               		sbi 53-32,6
 241               	.LBE188:
 242               	.LBE187:
 244 0044 00C0      	.LM22:
 245               		cbi 53-32,6
 247 0046 AE9A      	.LM23:
 248               		tst r22
 249               		brne .L11
 250               	.LBB193:
 251               	.LBB194:
 253               	.LM24:
 254               		ldi r24,lo8(-125)
 255 004a 6623      		out 47-32,r24
 256 004c 01F4      	.L12:
 258               	.LM25:
 259               		sbis 46-32,7
 260               		rjmp .L12
 261 004e 83E8      		rjmp .L27
 262 0050 8FB9      	.L11:
 263               	.LBE194:
 264               	.LBE193:
 265               	.LBB195:
 266 0052 779B      	.LBB196:
 268 0056 00C0      	.LM26:
 269               		ldi r24,lo8(-122)
 270               		out 47-32,r24
 271               	.L14:
 273               	.LM27:
 274               		sbis 46-32,7
 275               		rjmp .L14
 276 0058 86E8      	.L27:
 278               	.LM28:
 279               		in r24,47-32
 280               	.LBE196:
 281 005c 779B      	.LBE195:
 283               	.LM29:
 284               		movw r24,r18
 285               		lsl r24
 286 0060 8FB1      		mov r24,r25
 287               		rol r24
 288               		sbc r25,r25
 289               		neg r25
 290               		andi r24,lo8(15)
 291 0062 C901      	.LBB197:
 292 0064 880F      	.LBB198:
 294 0068 881F      	.LM30:
 295 006a 990B      		out 47-32,r24
 296 006c 9195      	.L15:
 298               	.LM31:
 299               		sbis 46-32,7
 300               		rjmp .L15
 302 0070 8FB9      	.LM32:
 303               		in r24,47-32
 304               	.LBE198:
 305               	.LBE197:
 307 0074 00C0      	.LM33:
 308               		mov r24,r18
 309               		lsl r24
 310 0076 8FB1      	.LBB199:
 311               	.LBB200:
 313               	.LM34:
 314               		out 47-32,r24
 315 0078 822F      	.L16:
 317               	.LM35:
 318               		sbis 46-32,7
 319               		rjmp .L16
 321 007c 8FB9      	.LM36:
 322               		in r24,47-32
 323               	.LBE200:
 324               	.LBE199:
 325 007e 779B      	.LBB201:
 326 0080 00C0      	.LBB202:
 328               	.LM37:
 329 0082 8FB1      		out 47-32,__zero_reg__
 330               	.L17:
 332               	.LM38:
 333               		sbis 46-32,7
 334               		rjmp .L17
 336 0084 1FB8      	.LM39:
 337               		in r24,47-32

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -