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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dataflash_.h

?? ICCAVR 編寫的函數庫
?? H
?? 第 1 頁 / 共 2 頁
字號:
/******** Example Code : Accessing Atmel AT45Dxxx dataflash on STK500 *******

Device      : 	AT90S8515

File name   : 	dataflash.c

Description : 	Functions to access the Atmel AT45Dxxx dataflash series
      				  Supports 512Kbit - 64Mbit
                 
Last change:    16 Aug 2001   AS
 
****************************************************************************/

#define  __IAR_SYSTEMS_ASM__ 

// Includes
//#include <INA90.H>
//#include <io8515.h>

#include "D:\ICC_H\dataflash.h"

// Constants
//Look-up table for these sizes ->  512k, 1M, 2M, 4M, 8M, 16M, 32M, 64M
flash unsigned char DF_pagebits[]  ={  9,  9,  9,  9,  9,  10,  10,  11};	//index of internal page address bits

// Globals
unsigned char PageBits;

// Functions

/*****************************************************************************
*
*	Function name : DF_SPI_init
*
*	Returns :		None
*
*	Parameters :	None
*
*	Purpose :		Sets up the HW SPI in Master mode, Mode 3
*					Note -> Uses the SS line to control the DF CS-line.
*
******************************************************************************/
void DF_SPI_init (void)
{
	//PORTB= (1<<PORTB);									//Set SS high		
	//DDRB = (1<<PB4) | (1<<PB5)| (1<<PB7);					//Set SS, MOSI and SCK as outputs
	
	SPCR = (1<<SPE) | (1<<MSTR) | (1<<CPHA) | (1<<CPOL);	//Enable SPI in Master mode, mode 3
//SPCR=0x51;
}


/*****************************************************************************
*
*	Function name : DF_SPI_RW
*
*	Returns :		Byte read from SPI data register (any value)
*
*	Parameters :	Byte to be written to SPI data register (any value)
*
*	Purpose :		Read and writes one byte from/to SPI master
*
******************************************************************************/
unsigned char DF_SPI_RW (unsigned char output)
{
	unsigned char input;
	
	SPDR = output;							//put byte 'output' in SPI data register
	while(!(SPSR & 0x80));					//wait for transfer complete, poll SPIF-flag
	input = SPDR;							//read value in SPI data reg.
	
	return input;							//return the byte clocked in from SPI slave
}		


/*****************************************************************************
*
*	Function name : Read_DF_status
*
*	Returns :		One status byte. Consult Dataflash datasheet for further
*					decoding info
*
*	Parameters :	None
*
*	Purpose :		Status info concerning the Dataflash is busy or not.
*					Status info concerning compare between buffer and flash page
*					Status info concerning size of actual device
*
******************************************************************************/
unsigned char Read_DF_status (void)
{
	unsigned char result,index_copy;
	
	DF_CS_inactive;							//make sure to toggle CS signal in order
	DF_CS_active;							//to reset dataflash command decoder
	result = DF_SPI_RW(StatusReg);			//send status register read op-code
	result = DF_SPI_RW(0x00);				//dummy write to get result
	
	index_copy = ((result & 0x38) >> 3);	//get the size info from status register
	PageBits   = DF_pagebits[index_copy];	//get number of internal page address bits from look-up table
	
	return result;							//return the read status register value
}


/*****************************************************************************
*
*	Function name : Page_To_Buffer
*
*	Returns :		None
*
*	Parameters :	BufferNo	->	Decides usage of either buffer 1 or 2
*					PageAdr		->	Address of page to be transferred to buffer
*
*	Purpose :		Transfers a page from flash to dataflash SRAM buffer
*					
******************************************************************************/
void Page_To_Buffer (unsigned int PageAdr, unsigned char BufferNo)
{
	DF_CS_inactive;												//make sure to toggle CS signal in order
	DF_CS_active;												//to reset dataflash command decoder
	
	if (1 == BufferNo)											//transfer flash page to buffer 1
	{
		DF_SPI_RW(FlashToBuf1Transfer);							//transfer to buffer 1 op-code
		DF_SPI_RW((unsigned char)(PageAdr >> (16 - PageBits)));	//upper part of page address
		DF_SPI_RW((unsigned char)(PageAdr << (PageBits - 8)));	//lower part of page address
		DF_SPI_RW(0x00);										//don't cares
	}
	else	
	if (2 == BufferNo)											//transfer flash page to buffer 2
	{
		DF_SPI_RW(FlashToBuf2Transfer);							//transfer to buffer 2 op-code
		DF_SPI_RW((unsigned char)(PageAdr >> (16 - PageBits)));	//upper part of page address
		DF_SPI_RW((unsigned char)(PageAdr << (PageBits - 8)));	//lower part of page address
		DF_SPI_RW(0x00);										//don't cares
	}
	
	DF_CS_inactive;												//initiate the transfer
	DF_CS_active;
	
	while(!(Read_DF_status() & 0x80));							//monitor the status register, wait until busy-flag is high
}



/*****************************************************************************
*
*	Function name : Buffer_Read_Byte
*
*	Returns :		One read byte (any value)
*
*	Parameters :	BufferNo	->	Decides usage of either buffer 1 or 2
*					IntPageAdr	->	Internal page address
*
*	Purpose :		Reads one byte from one of the dataflash
*					internal SRAM buffers
*
******************************************************************************/
unsigned char Buffer_Read_Byte (unsigned char BufferNo, unsigned int IntPageAdr)
{
	unsigned char data;
	
	DF_CS_inactive;								//make sure to toggle CS signal in order
	DF_CS_active;								//to reset dataflash command decoder
	
	if (1 == BufferNo)							//read byte from buffer 1
	{
		DF_SPI_RW(Buf1Read);					//buffer 1 read op-code
		DF_SPI_RW(0x00);						//don't cares
		DF_SPI_RW((unsigned char)(IntPageAdr>>8));//upper part of internal buffer address
		DF_SPI_RW((unsigned char)(IntPageAdr));	//lower part of internal buffer address
		DF_SPI_RW(0x00);						//don't cares
		data = DF_SPI_RW(0x00);					//read byte
	}
	else
	if (2 == BufferNo)							//read byte from buffer 2
	{
		DF_SPI_RW(Buf2Read);					//buffer 2 read op-code
		DF_SPI_RW(0x00);						//don't cares
		DF_SPI_RW((unsigned char)(IntPageAdr>>8));//upper part of internal buffer address
		DF_SPI_RW((unsigned char)(IntPageAdr));	//lower part of internal buffer address
		DF_SPI_RW(0x00);						//don't cares
		data = DF_SPI_RW(0x00);					//read byte
	}
	
	return data;								//return the read data byte
}



/*****************************************************************************
*
*	Function name : Buffer_Read_Str
*
*	Returns :		None
*
*	Parameters :	BufferNo	->	Decides usage of either buffer 1 or 2
*					IntPageAdr	->	Internal page address
*					No_of_bytes	->	Number of bytes to be read
*					*BufferPtr	->	address of buffer to be used for read bytes
*
*	Purpose :		Reads one or more bytes from one of the dataflash
*					internal SRAM buffers, and puts read bytes into
*					buffer pointed to by *BufferPtr
*
******************************************************************************/
void Buffer_Read_Str (unsigned char BufferNo, unsigned int IntPageAdr, unsigned int No_of_bytes, unsigned char *BufferPtr)
{
	unsigned int i;

	DF_CS_inactive;								//make sure to toggle CS signal in order
	DF_CS_active;								//to reset dataflash command decoder
	
	if (1 == BufferNo)							//read byte(s) from buffer 1
	{
		DF_SPI_RW(Buf1Read);					//buffer 1 read op-code
		DF_SPI_RW(0x00);						//don't cares
		DF_SPI_RW((unsigned char)(IntPageAdr>>8));//upper part of internal buffer address
		DF_SPI_RW((unsigned char)(IntPageAdr));	//lower part of internal buffer address
		DF_SPI_RW(0x00);						//don't cares
		for( i=0; i<No_of_bytes; i++)
		{
			*(BufferPtr) = DF_SPI_RW(0x00);		//read byte and put it in AVR buffer pointed to by *BufferPtr
			BufferPtr++;						//point to next element in AVR buffer

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产综合色| 美腿丝袜亚洲色图| 免费人成黄页网站在线一区二区 | 欧美成人a在线| 亚洲图片另类小说| 国产在线精品免费av| 欧美视频在线观看一区二区| 国产欧美日本一区二区三区| 免费人成精品欧美精品 | 国产成人在线影院| 欧美一区二区三区啪啪| 自拍偷拍欧美激情| 国产成人精品在线看| 91精品国产色综合久久| 樱桃国产成人精品视频| 国产精品18久久久久久久网站| 欧美专区亚洲专区| 亚洲欧美日韩国产成人精品影院| 国产综合色视频| 日韩精品一区二| 蜜臀av国产精品久久久久| 欧美性xxxxxx少妇| 一区二区三区在线不卡| 99精品桃花视频在线观看| 国产日韩欧美精品在线| 久久99精品国产麻豆婷婷洗澡| 欧美午夜影院一区| 亚洲午夜三级在线| 欧美天堂一区二区三区| 亚洲男人天堂一区| 91香蕉视频污| 亚洲精选免费视频| 91久久国产最好的精华液| 亚洲欧美一区二区三区孕妇| www.性欧美| 中文字幕一区二区三| 99精品视频在线观看| 国产精品久久久久国产精品日日| 成人中文字幕在线| 国产精品水嫩水嫩| 欧洲在线/亚洲| 亚洲成a人片在线观看中文| 欧美日韩在线三区| 天堂影院一区二区| 精品久久久久香蕉网| 国产一区二区视频在线| 欧美国产精品专区| 色婷婷综合久久| 亚洲与欧洲av电影| 在线播放日韩导航| 国产成人在线视频播放| 中文字幕在线不卡视频| 欧美日韩亚洲不卡| 美女视频黄频大全不卡视频在线播放| 精品久久久久久久久久久久久久久久久| 久久久久久一二三区| av福利精品导航| 亚洲国产成人av| 欧美成人性战久久| 成人免费看的视频| 中文字幕中文字幕一区二区| 波多野结衣中文字幕一区 | 亚洲精选在线视频| 在线观看日韩av先锋影音电影院| 一区二区三区电影在线播| 欧美无人高清视频在线观看| 亚洲国产综合91精品麻豆| 91麻豆精品国产自产在线 | 久久 天天综合| 国产午夜一区二区三区| av一本久道久久综合久久鬼色| 亚洲日本va午夜在线电影| 色久综合一二码| 日本91福利区| 久久久精品免费观看| 国产成人福利片| 午夜精品福利一区二区三区av| 欧美一区二区三区精品| 成人免费视频视频在线观看免费 | 亚洲成人福利片| 91精品欧美综合在线观看最新| 久久国产三级精品| 国产精品麻豆欧美日韩ww| 欧美三级日韩在线| 国产中文字幕一区| 亚洲六月丁香色婷婷综合久久 | 午夜精品福利视频网站| 久久综合狠狠综合| 一本色道久久综合亚洲aⅴ蜜桃 | 国产成人激情av| 亚洲国产精品天堂| 日韩视频在线观看一区二区| 成人在线视频首页| 日韩经典中文字幕一区| 最新日韩在线视频| 日韩精品一区二区三区在线播放 | 国产成人av福利| 午夜视频一区二区| 国产精品久久网站| 日韩精品中文字幕一区二区三区| 91美女在线视频| 国产91高潮流白浆在线麻豆| 日韩av中文在线观看| 一区二区三区四区在线| 久久精品夜色噜噜亚洲a∨| 欧美日韩一卡二卡三卡| 国产精品77777| 日产国产欧美视频一区精品| 亚洲天堂av老司机| 欧美理论在线播放| 欧美丰满一区二区免费视频| 99久久er热在这里只有精品66| 久久97超碰色| 视频在线观看91| 亚洲激情图片小说视频| 国产精品你懂的在线| 精品久久久久久最新网址| 欧美精品高清视频| 91福利视频久久久久| 欧美视频中文一区二区三区在线观看| 风间由美一区二区三区在线观看| 久久成人羞羞网站| 另类小说图片综合网| 蜜桃av噜噜一区二区三区小说| 亚洲第四色夜色| 午夜精品免费在线| 午夜亚洲福利老司机| 日韩精品一二三区| 日本欧美一区二区在线观看| 久久精品国产在热久久| 久久国产麻豆精品| 另类小说欧美激情| 精品一区二区三区在线观看| 麻豆高清免费国产一区| 美女高潮久久久| 精品一区二区在线观看| 国产精品伊人色| 国产精品性做久久久久久| 国产高清无密码一区二区三区| 国产福利不卡视频| 成人av影院在线| 色菇凉天天综合网| 欧美日本国产视频| 日韩精品最新网址| 国产亲近乱来精品视频| 国产午夜精品久久| 中文字幕在线不卡视频| 一区二区三区成人| 日日夜夜免费精品| 久草这里只有精品视频| 国产麻豆精品一区二区| www.亚洲在线| 欧美在线一二三四区| 欧美疯狂做受xxxx富婆| 久久先锋影音av| 亚洲天堂精品在线观看| 麻豆一区二区三| 成人午夜短视频| 欧美视频在线一区| 欧美videos中文字幕| 国产精品人人做人人爽人人添 | 国产白丝精品91爽爽久久| 91在线丨porny丨国产| 欧美色区777第一页| 精品区一区二区| 亚洲欧洲日韩在线| 一区二区视频在线| 国产成人精品三级| 欧美性视频一区二区三区| 日韩一区二区视频| 中文字幕不卡在线观看| 亚洲一区二区3| 国产高清在线精品| 欧美日韩国产精选| 久久久久久久av麻豆果冻| 天天影视网天天综合色在线播放| 国产一区91精品张津瑜| 色婷婷精品久久二区二区蜜臀av| 制服丝袜亚洲播放| 综合婷婷亚洲小说| 极品少妇一区二区三区精品视频| 91麻豆国产精品久久| 日韩欧美精品在线视频| 日韩中文字幕麻豆| av激情成人网| 亚洲精品一区二区三区香蕉| 亚洲午夜久久久久久久久电影网 | 久久蜜桃av一区二区天堂| 亚洲国产乱码最新视频 | 日本黄色一区二区| 国产亚洲短视频| 图片区日韩欧美亚洲| 97se亚洲国产综合自在线| 国产亚洲精品福利| 蜜臀av一区二区三区| 欧美日韩国产免费| 亚洲精品久久久久久国产精华液| 国产成人精品亚洲日本在线桃色| 日韩欧美你懂的| 亚洲国产精品人人做人人爽|