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

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

?? dataflash_.h

?? 基于ST7920的LCD12864資料及源碼
?? H
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/******** 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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产一区二区| 国产精品123区| 一区二区三区国产精华| 中文字幕av一区 二区| 久久久综合精品| 久久婷婷综合激情| 久久精品水蜜桃av综合天堂| 欧美变态tickling挠脚心| 91精品欧美福利在线观看| 日韩欧美一区二区久久婷婷| 91精品综合久久久久久| 91麻豆精品久久久久蜜臀| 日韩一级欧美一级| 欧美va天堂va视频va在线| 亚洲精品一区二区三区四区高清 | 久久精品国产免费| 青青草伊人久久| 老司机午夜精品99久久| 精品亚洲免费视频| 国产黄色成人av| 91视频你懂的| 色婷婷一区二区| 欧美猛男男办公室激情| 日韩欧美123| 久久精品一区八戒影视| 亚洲视频一区二区在线观看| 亚洲激情自拍视频| 亚洲综合精品久久| 日本人妖一区二区| 激情六月婷婷久久| av一区二区三区| 欧美性一区二区| 欧美一激情一区二区三区| 久久女同性恋中文字幕| 中文字幕在线观看不卡视频| 亚洲综合色自拍一区| 蜜臀av国产精品久久久久| 风间由美一区二区av101 | 91精品国产综合久久香蕉的特点 | 91精品欧美综合在线观看最新| 精品女同一区二区| 国产精品网站在线播放| 亚洲综合一二三区| 国产一区二区在线影院| 色综合久久综合| 91精品国产91综合久久蜜臀| 国产亚洲一二三区| 亚洲一区二区欧美| 国产伦精品一区二区三区视频青涩 | 性做久久久久久免费观看欧美| 久久精品国产一区二区| 99re这里都是精品| 91麻豆精品91久久久久同性| 日本一区二区三区视频视频| 亚洲成a人v欧美综合天堂| 国内精品久久久久影院薰衣草| 91国产视频在线观看| 精品国产一区二区国模嫣然| 亚洲欧美色一区| 久久www免费人成看片高清| 91玉足脚交白嫩脚丫在线播放| 欧美一区二区在线免费播放| 国产精品国产馆在线真实露脸| 婷婷中文字幕综合| 91在线观看地址| 久久精品日产第一区二区三区高清版 | 国内精品国产成人国产三级粉色 | 综合电影一区二区三区| 免费人成网站在线观看欧美高清| 99精品国产视频| 久久久久成人黄色影片| 午夜精品aaa| caoporen国产精品视频| 精品国产乱码久久久久久老虎| 伊人性伊人情综合网| 粉嫩欧美一区二区三区高清影视| 7777精品伊人久久久大香线蕉最新版| 国产精品成人一区二区艾草| 麻豆国产欧美日韩综合精品二区| 日本韩国精品一区二区在线观看| 国产校园另类小说区| 免费欧美高清视频| 在线观看视频一区| 国产精品福利一区| 国产精品99久| 日韩欧美高清在线| 日本亚洲免费观看| 欧美影片第一页| 成人欧美一区二区三区小说| 国产精品99久久久久久久vr| 日韩精品一区国产麻豆| 午夜日韩在线观看| 91成人看片片| 亚洲欧美经典视频| heyzo一本久久综合| 国产欧美一区二区精品性| 国产资源精品在线观看| 精品三级av在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 6080国产精品一区二区| 亚洲成人在线观看视频| 欧美午夜精品理论片a级按摩| 亚洲日本在线天堂| 99在线精品免费| 自拍偷拍欧美精品| 日本大香伊一区二区三区| 综合分类小说区另类春色亚洲小说欧美| 大桥未久av一区二区三区中文| 久久精品人人爽人人爽| 国产成人在线视频免费播放| 久久久久国产一区二区三区四区| 国产精品一区二区黑丝| 国产女人18毛片水真多成人如厕 | 国产欧美日韩在线看| 国产经典欧美精品| 中文字幕av一区二区三区高| 99久久久精品| 一区二区三区四区国产精品| 欧美亚洲一区二区三区四区| 亚洲成a人在线观看| 7777精品伊人久久久大香线蕉的| 日韩av网站在线观看| 欧美精品一区二区在线观看| 国产一区二区三区久久久| 国产婷婷精品av在线| www.欧美亚洲| 一二三区精品福利视频| 91麻豆精品国产91久久久久久| 精品一区二区三区在线观看| 国产欧美日韩亚州综合| 99re这里都是精品| 日日夜夜一区二区| 久久综合色婷婷| 99视频精品免费视频| 香蕉成人啪国产精品视频综合网| 日韩三级视频中文字幕| 国产成人在线网站| 亚洲自拍与偷拍| 欧美电影免费观看高清完整版在 | 久久精品网站免费观看| 一本到不卡精品视频在线观看 | 日本久久精品电影| 日本va欧美va精品| 欧美国产一区在线| 在线观看不卡一区| 激情文学综合丁香| 日韩理论电影院| 欧美另类一区二区三区| 国产一区二区调教| 一区二区三区精品视频| 337p粉嫩大胆噜噜噜噜噜91av| 91社区在线播放| 日韩黄色在线观看| 中文天堂在线一区| 欧美精品少妇一区二区三区| 成人永久免费视频| 五月激情综合婷婷| 国产精品女同互慰在线看 | 一区二区三区不卡视频在线观看 | 精品少妇一区二区三区免费观看 | 国产欧美视频一区二区三区| 欧美性猛片aaaaaaa做受| 国产一区二区三区电影在线观看| 亚洲日本在线天堂| 欧美不卡一二三| 精品婷婷伊人一区三区三| 国产精品中文字幕一区二区三区| 亚洲激情av在线| 国产网红主播福利一区二区| 欧美日韩情趣电影| 成人avav在线| 精品伊人久久久久7777人| 亚洲资源中文字幕| 国产精品欧美一区喷水| 精品久久久久久综合日本欧美| 97精品超碰一区二区三区| 韩国欧美一区二区| 亚洲成人精品一区二区| 国产精品夫妻自拍| 久久午夜免费电影| 日韩午夜av电影| 亚洲国产精品高清| xf在线a精品一区二区视频网站| 欧美亚洲国产bt| 91社区在线播放| 成人午夜免费av| 国产精品乡下勾搭老头1| 蜜臀久久久久久久| 亚洲午夜av在线| 亚洲色图在线视频| 欧美激情中文字幕一区二区| 日韩欧美国产1| 91精品国产91久久久久久最新毛片 | 亚洲成av人在线观看| 1024精品合集| 国产精品成人在线观看| 国产欧美视频在线观看| 日本一区二区三区免费乱视频| 精品久久久久99| 精品乱码亚洲一区二区不卡|