亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dataflash.c

?? 基于AVRETH1的最新網(wǎng)絡(luò)軟件
?? C
字號:
/*,-----------------------------------------------------------------------------------------.| io/dataflash|-----------------------------------------------------------------------------------------| this file implements the driver for a Atmel Dataflash (AT45DB041B)| - || Author   : {{removed according to contest rules}}|            -> circuitcellar.com avr design contest 2006|            -> Entry #AT2616||-----------------------------------------------------------------------------------------| License:| This program is free software; you can redistribute it and/or modify it under| the terms of the GNU General Public License as published by the Free Software| Foundation; either version 2 of the License, or (at your option) any later| version.| This program is distributed in the hope that it will be useful, but|| WITHOUT ANY WARRANTY;|| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR| PURPOSE. See the GNU General Public License for more details.|| You should have received a copy of the GNU General Public License along with| this program; if not, write to the Free Software Foundation, Inc., 51| Franklin St, Fifth Floor, Boston, MA 02110, USA|| http://www.gnu.de/gpl-ger.html`-----------------------------------------------------------------------------------------*/#include "dataflash.h"#include "main.h"#include <avr/delay.h>//ACTIVATE DEBUG by editing this file:#include "debug.h"//initialise dataflash// -> SPI must be initialised externally!void dataflash_init(void){	//set up port directions:	DATAFLASH_DDR |= (1<<DATAFLASH_PIN_CS) | (1<<DATAFLASH_PIN_RST);		#if DATAFLASH_DEBUG	softuart_puts_progmem("DF  : dataflash init: ");	#endif	//SPI init (is done in enc28j60...	#if 0 		// initialize I/O		//SPI init		// initialize I/O		PORTB |= (1<<7); //sck = hi			//spi = output		//mega8//DDRB |= (1<<2)|(1<<3)|(1<<5); //SS,MOSI,SCK = OUT		DDRB |= (1<<4)|(1<<5)|(1<<7); //SS,MOSI,SCK = OUT		DDRB &= ~(1<<6); //MISO = IN			//SPI init:		// - master mode		// - positive clock phase		// - msb first		// - maximum SPI speed (fosc/2)		// - enable spi		SPCR = (0<<CPOL)|(1<<MSTR)|(0<<DORD)|(0<<SPR1)|(0<<SPR0)|(1<<SPE);		SPSR = (1<<SPI2X);	#endif	//reset dataflash:	DATAFLASH_RESET_LO();	DATAFLASH_CS_LO();	//skip any pending bits:	for(unsigned char i=0; i<20; i++)		dataflash_spi_writeread_byte(0x00);	_delay_us(20); //min 10us	DATAFLASH_CS_HI();	_delay_us(1); //min 200ns			DATAFLASH_RESET_HI();	//dataflash is now in SPI Mode 3	#if DATAFLASH_DEBUG	softuart_puts_progmem("done.");	softuart_putnewline();	#endif}void dataflash_dump(){	for (int a=0; a<DATAFLASH_MAX_PAGE; a++){		dataflash_copy_page_to_buffer(a, 0);		for(int b=0; b<(256+8); b++){			softuart_putc(dataflash_read_buffer(b,0));		}	}}//copy given buffer to flash pagevoid dataflash_copy_buffer_to_page(unsigned int page, unsigned char buffer){	//wait for device ready	dataflash_busy_wait();	//select device again:	DATAFLASH_CS_LO();	//send buffer select cmd:	if (buffer == 0)		dataflash_spi_writeread_byte(DATAFLASH_BUFFER0_TO_MEM_WE);	else		dataflash_spi_writeread_byte(DATAFLASH_BUFFER1_TO_MEM_WE);	//send 0000 0ppp pppp pppp 	dataflash_spi_writeread_byte((page>>7)&0x0F);	dataflash_spi_writeread_byte((page<<1)&0xFE);	//send 8 dont care bits:	dataflash_spi_writeread_byte(0x00);	DATAFLASH_CS_HI();}//write len bytes to given page buffer starting at <byte> void dataflash_write_n_to_page_buffer(unsigned int byte, unsigned char buffer, unsigned char *data, unsigned int len){	//wait for device ready	dataflash_busy_wait();	//select device again:	DATAFLASH_CS_LO();	//send buffer select cmd:	if (buffer == 0)		dataflash_spi_writeread_byte(DATAFLASH_WRITE_BUFFER0);	else		dataflash_spi_writeread_byte(DATAFLASH_WRITE_BUFFER1);	//15 dont care + 9 adress bits:		//send 8 dont care bits:	dataflash_spi_writeread_byte(0x00);		//send 0000 000b bbbb bbbb	dataflash_spi_writeread_byte((byte>>8)&0x01);	dataflash_spi_writeread_byte((byte)&0xFF);	//send data	while(len>0){		dataflash_spi_writeread_byte((*data));		*data++;		len--;	}	//deselect device:	DATAFLASH_CS_HI();}//write one byte to given page buffervoid dataflash_write_to_page_buffer(unsigned int byte, unsigned char buffer, unsigned char data){	//wait for device ready	dataflash_busy_wait();	//select device again:	DATAFLASH_CS_LO();	//send buffer select cmd:	if (buffer == 0)		dataflash_spi_writeread_byte(DATAFLASH_WRITE_BUFFER0);	else		dataflash_spi_writeread_byte(DATAFLASH_WRITE_BUFFER1);	//15 dont care + 9 adress bits:		//send 8 dont care bits:	dataflash_spi_writeread_byte(0x00);		//send 0000 000b bbbb bbbb	dataflash_spi_writeread_byte((byte>>8)&0x01);	dataflash_spi_writeread_byte((byte)&0xFF);	//send data	dataflash_spi_writeread_byte(data);	//deselect device:	DATAFLASH_CS_HI();}//copy flash page to given buffervoid dataflash_copy_page_to_buffer(unsigned int page, unsigned char buffer){	//wait for device ready	dataflash_busy_wait();	//select device again:	DATAFLASH_CS_LO();	//send buffer select cmd:	if (buffer == 0)		dataflash_spi_writeread_byte(DATAFLASH_MEM_TO_BUFFER0);	else		dataflash_spi_writeread_byte(DATAFLASH_MEM_TO_BUFFER1);	//send 0000 pppp pppp ppp0 	dataflash_spi_writeread_byte((page>>7)&0x0F);	dataflash_spi_writeread_byte((page<<1)&0xFE);	//send 8 dont care bits:	dataflash_spi_writeread_byte(0x00);	DATAFLASH_CS_HI();}//read one byte from bufferunsigned char dataflash_read_buffer(unsigned int byte, unsigned char buffer){	unsigned char data;	//wait for device ready	dataflash_busy_wait();	//select device again:	DATAFLASH_CS_LO();	//send buffer select cmd:	if (buffer == 0)		dataflash_spi_writeread_byte(DATAFLASH_READ_BUFFER0);	else		dataflash_spi_writeread_byte(DATAFLASH_READ_BUFFER1);	//15 dont care + 9 address + 8 dont care:	//send address: 0000 0000 0000 000b bbbb bbbb 	dataflash_spi_writeread_byte(0x00);	dataflash_spi_writeread_byte((byte>>8)&0x01);	dataflash_spi_writeread_byte((byte)&0xFF);	//send one dummy byte	dataflash_spi_writeread_byte(0x00);	//now read the data	data = dataflash_spi_writeread_byte(0x00);	//deselect device	DATAFLASH_CS_HI();	//return data	return (data);}//read n byte from buffervoid dataflash_read_n_to_buffer(unsigned char *buffer, unsigned char selbuf){	//wait for device ready	dataflash_busy_wait();	//select device again:	DATAFLASH_CS_LO();	//send buffer select cmd:	if (selbuf == 0)		dataflash_spi_writeread_byte(DATAFLASH_READ_BUFFER0);	else		dataflash_spi_writeread_byte(DATAFLASH_READ_BUFFER1);	//15 dont care + 9 address + 8 dont care:	//send address: 0000 0000 0000 000b bbbb bbbb 	dataflash_spi_writeread_byte(0x00);	dataflash_spi_writeread_byte(0);//start with first byte	dataflash_spi_writeread_byte(0);	//send one dummy byte	dataflash_spi_writeread_byte(0x00);	//now read the data	*buffer++ = dataflash_spi_writeread_byte(0x00);	for(unsigned char c=0; c<255; c++){		*buffer++ = dataflash_spi_writeread_byte(0x00);	}	//deselect device	DATAFLASH_CS_HI();}//read 1 byte directly from flash:unsigned char dataflash_read_flash(unsigned int page, unsigned int byte){	unsigned char data;	//wait for device ready	dataflash_busy_wait();	//select device again:	DATAFLASH_CS_LO();	//send page read cmd:	dataflash_spi_writeread_byte(DATAFLASH_MEM_PAGE_READ);	//send 24 address bits	dataflash_spi_writeread_byte((page>>7) & 0x0F); //send 0000 pppp (4 MSB of page adress)	dataflash_spi_writeread_byte(((page<<1)&0xFE) | ((byte>>8)&0x01) ); //send pppp pppb (7 LSB of page, 1 MSB of byte adress)	dataflash_spi_writeread_byte(byte & 0xFF); //send bbbb bbbb (8 LSB of byte address)		//now send 32 dummy dont care bits:	dataflash_spi_writeread_byte(0x00);	//8	dataflash_spi_writeread_byte(0x00); //16	dataflash_spi_writeread_byte(0x00); //24	dataflash_spi_writeread_byte(0x00); //32	//now read the data	data = dataflash_spi_writeread_byte(0x00);	//deselect device	DATAFLASH_CS_HI();	//return data	return (data);}//wait for dataflash ready flagvoid dataflash_busy_wait(){	DATAFLASH_CS_LO();	//send status req cmd:	dataflash_spi_writeread_byte(DATAFLASH_READ_STATUS);	//wait for bit7 in status reg to be 1:	while ( (dataflash_spi_writeread_byte(DATAFLASH_READ_STATUS)&0x80) != 0x80){		//wait...		//uart_putc('.');	}	DATAFLASH_CS_HI();}//send one byte over SPI and read one byte back//device must be selected before !!!unsigned char dataflash_spi_writeread_byte(unsigned char data){	unsigned char res = 0;		//shift data out	SPDR = data;	//wait for completion	while(!(SPSR & (1<<SPIF)));	//shiftout 8 clocks, now we receive data:	///SPDR = 0x00;	//wait for completion	///while(!(SPSR & (1<<SPIF)));	// read data	res = SPDR;	return res;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
性久久久久久久| 亚洲一区二区欧美日韩| 99精品久久99久久久久| 亚洲午夜激情av| 久久夜色精品一区| 国产精品99久| 亚洲欧洲另类国产综合| 在线不卡的av| 成人网页在线观看| 一区二区三区中文在线观看| 国产凹凸在线观看一区二区 | 1000部国产精品成人观看| 色综合久久99| 国产成人精品免费在线| 日韩不卡一二三区| 亚洲国产毛片aaaaa无费看| 国产精品网友自拍| www激情久久| 日韩免费观看高清完整版| 欧美三区在线视频| 成人免费毛片a| 国产原创一区二区| 久久99精品久久久久久久久久久久| 亚洲成人激情av| 艳妇臀荡乳欲伦亚洲一区| 亚洲欧洲日韩女同| 国产精品福利电影一区二区三区四区| 精品99一区二区| 欧美大片一区二区| 91精品久久久久久久91蜜桃| 欧美人牲a欧美精品| 欧美色老头old∨ideo| 91香蕉视频黄| 色婷婷av一区二区三区大白胸| 99视频精品免费视频| 成人h动漫精品| 成a人片亚洲日本久久| 成人精品gif动图一区| 成人美女视频在线看| 成人污污视频在线观看| 成人免费视频播放| caoporm超碰国产精品| 99热99精品| 91啦中文在线观看| 欧美综合一区二区| 欧美日韩dvd在线观看| 欧美蜜桃一区二区三区| 欧美日韩精品二区第二页| 制服丝袜亚洲精品中文字幕| 欧美一级精品在线| 精品成人免费观看| 中文字幕免费一区| 亚洲精品视频在线| 水蜜桃久久夜色精品一区的特点| 免费在线看成人av| 国内成+人亚洲+欧美+综合在线| 国产中文一区二区三区| 丁香激情综合五月| 色老综合老女人久久久| 欧美日韩电影在线播放| 欧美成人a∨高清免费观看| 国产色产综合色产在线视频| 亚洲欧美日韩中文播放| 香蕉av福利精品导航| 精品一区二区在线视频| 成人av午夜电影| 欧美亚洲国产怡红院影院| 91精品国产综合久久久蜜臀图片| 久久久影院官网| 亚洲精品免费看| 免费日本视频一区| 国产99久久久国产精品潘金 | av中文一区二区三区| 在线观看一区不卡| 精品国产a毛片| 有坂深雪av一区二区精品| 另类人妖一区二区av| 成人性生交大片免费看中文| 久久亚洲综合色一区二区三区| 国产精品私人自拍| 五月婷婷综合激情| 国产精品一区二区免费不卡| 在线中文字幕一区二区| 精品国产制服丝袜高跟| 一区二区三区在线免费播放| 国产曰批免费观看久久久| 欧美中文字幕一区二区三区| 久久久国产精品午夜一区ai换脸| 一区二区理论电影在线观看| 国产最新精品免费| 欧美在线|欧美| 中文字幕不卡三区| 日韩va亚洲va欧美va久久| 91在线国产福利| 欧美精品一区二区久久婷婷| 亚洲综合免费观看高清在线观看| 国产精品一级片在线观看| 在线播放中文一区| 亚洲视频在线观看三级| 极品少妇xxxx精品少妇| 欧美日韩国产在线播放网站| 中文字幕日本不卡| 国产九九视频一区二区三区| 欧美精品第1页| 亚洲蜜桃精久久久久久久| 国产馆精品极品| 欧美成人aa大片| 日韩中文字幕91| 色婷婷亚洲婷婷| 国产亚洲精品aa| 国内精品在线播放| 678五月天丁香亚洲综合网| 亚洲欧洲三级电影| 国产成人一级电影| 久久在线观看免费| 美洲天堂一区二卡三卡四卡视频 | 久久久亚洲精华液精华液精华液| 三级欧美韩日大片在线看| 欧洲国内综合视频| 亚洲蜜桃精久久久久久久| 91亚洲精品一区二区乱码| 国产精品理论在线观看| 国产成人亚洲综合色影视| 久久久久久**毛片大全| 精品在线一区二区三区| 日韩视频在线你懂得| 奇米四色…亚洲| 日韩一区二区视频| 图片区小说区区亚洲影院| 欧美日韩国产色站一区二区三区| 亚洲午夜国产一区99re久久| 91黄色免费网站| 亚洲永久精品国产| 色八戒一区二区三区| 亚洲三级在线看| 色综合久久66| 亚洲第一精品在线| 91精品在线一区二区| 日日噜噜夜夜狠狠视频欧美人| 欧美电影一区二区三区| 日韩不卡免费视频| 精品免费99久久| 国产精品一区二区视频| 久久午夜国产精品| eeuss影院一区二区三区 | 亚洲电影你懂得| 6080日韩午夜伦伦午夜伦| 精品在线播放免费| 国产亚洲一区二区在线观看| 成人白浆超碰人人人人| 亚洲激情在线播放| 欧美视频在线观看一区二区| 首页综合国产亚洲丝袜| 亚洲激情网站免费观看| 欧美日韩一区久久| 裸体健美xxxx欧美裸体表演| 国产亚洲综合av| 91小视频免费观看| 丝袜亚洲精品中文字幕一区| 日韩女优视频免费观看| 国产91色综合久久免费分享| 日韩理论片一区二区| 欧美日韩美少妇| 精品一区二区免费在线观看| 国产精品入口麻豆原神| 欧美亚洲国产一区二区三区va| 另类的小说在线视频另类成人小视频在线 | 国产成人免费xxxxxxxx| 亚洲天堂精品在线观看| 在线播放视频一区| 国产乱色国产精品免费视频| 亚洲欧美激情小说另类| 91麻豆精品91久久久久同性| 国产夫妻精品视频| 亚洲一区二区欧美日韩 | 亚洲一区二区3| 精品久久久久久久人人人人传媒| 成人免费视频app| 天天免费综合色| 中文字幕的久久| 在线不卡的av| 99久久99久久精品免费观看| 免费av网站大全久久| 国产精品成人免费| 日韩午夜精品视频| 色香蕉久久蜜桃| 国产精品一区久久久久| 亚洲国产综合在线| 国产精品每日更新| 欧美成人a视频| 欧美在线free| 99久免费精品视频在线观看| 久久国产人妖系列| 亚洲高清视频的网址| 久久精品欧美一区二区三区麻豆 | 国产亚洲精久久久久久| 欧美日韩在线观看一区二区| 成人午夜免费电影| 国产在线不卡视频| 日韩精品一卡二卡三卡四卡无卡|