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

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

?? c8051f330_flash_spi_20071213.c

?? c8051f330讀寫 flash---SPI_20071213
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* DataArray Array storing read data */
/* */
/* Returns: Nothing */
/* */
/*******************************************************************************/
void Read_Cont(unsigned long Dst, unsigned int no_bytes, unsigned char *DataArray)
{
 unsigned int i = 0;
 
Select_Serial_Memory; /* enable device */
SendSPIByte(0x03); /* read command */
SendSPIByte(((Dst) >> 16)); /* send 3 address bytes */
SendSPIByte(((Dst) >> 8));
SendSPIByte(Dst&0xFF);
 for (i = 0; i < no_bytes; i++) /* read until no_bytes is reached */
 {
  *(DataArray+i) = GetSPIByte(); /* receive byte and store in DataArray */
 }
 Deselect_Serial_Memory; /* disable device */
}

/*******************************************************************************/
/* PROCEDURE: Byte_Program */
/* */
/* This procedure programs one address of the device. */
/* Assumption: Address being programmed is already */
/* erased and is NOT block protected. */
/* */
/* Input: Dst: Destination Address 000000H - 07FFFFH */
/* byte: byte to be programmed */
/* */
/* Returns: Nothing */
/* */
/*******************************************************************************/
void Byte_Program(unsigned long Dst, unsigned char byte)
{
 WREN();
 Select_Serial_Memory; /* enable device */
 SendSPIByte(0x02); /* send Byte Program command */
 SendSPIByte(((Dst & 0xFFFFFF) >> 16)); /* send 3 address bytes */
 SendSPIByte(((Dst & 0xFFFF) >> 8));
 SendSPIByte(Dst & 0xFF);
 SendSPIByte(byte); /* send byte to be programmed */
 Deselect_Serial_Memory; /* disable device */
 Wait_Busy();
}


/*******************************************************************************/
/* PROCEDURE: Auto_Add_IncA */
/* */
/* This procedure programs consecutive addresses of */
/* the device. This is used to start the AAI process. */
/* It should be followed by Auto_Add_IncB. */
/* Assumption: Address being programmed is already */
/* erased and is NOT block protected. */
/* */
/* Input: Dst: Destination Address 000000H - 07FFFFH */
/* byte: byte to be programmed */
/* */
/* Returns: Nothing */
/* */
/*******************************************************************************/
void Auto_Add_IncA(unsigned long Dst, unsigned char byte1, unsigned char byte2)
{
 WREN();
 Select_Serial_Memory; /* enable device */
 SendSPIByte(0xAD); /* send AAI command */
 SendSPIByte(((Dst & 0xFFFFFF) >> 16)); /* send 3 address bytes */
 SendSPIByte(((Dst & 0xFFFF) >> 8));
 SendSPIByte(Dst & 0xFF);
 SendSPIByte(byte1); /* send byte to be programmed */
 SendSPIByte(byte2); /* send byte to be programmed */
 Deselect_Serial_Memory; /* disable device */
 Wait_Busy();
}


/*******************************************************************************/
/* PROCEDURE: Auto_Add_IncB */
/* */
/* This procedure programs consecutive addresses of */
/* the device. This is used after Auto_Address_IncA. */
/* Assumption: Address being programmed is already */
/* erased and is NOT block protected. */
/* */
/* Input: byte: byte to be programmed */
/* */
/* Returns: Nothing */
/* */
/*******************************************************************************/
void Auto_Add_IncB(unsigned char byte1,unsigned char byte2)
{
 Select_Serial_Memory; /* enable device */
 SendSPIByte(0xAD); /* send AAI command */
 SendSPIByte(byte1); /* send byte to be programmed */
 SendSPIByte(byte2); /* send byte to be programmed */
 Deselect_Serial_Memory; /* disable device */
 Wait_Busy();
}


/*******************************************************************************/
/* PROCEDURE: Chip_Erase */
/* */
/* This procedure erases the entire Chip. */
/* */
/* Input: None */
/* */
/* Returns: Nothing */
/* */
/*******************************************************************************/
void Chip_Erase(void)
{
 WREN();
 Select_Serial_Memory; /* enable device */
 SendSPIByte(0x60); /* send Chip Erase command */
 Deselect_Serial_Memory; /* disable device */
 Wait_Busy();
}


/*******************************************************************************/
/* PROCEDURE: Sector_Erase */
/* */
/* This procedure Sector Erases the Chip. */
/* */
/* Input: Dst: Destination Address 000000H - 07FFFFH */
/* */
/* Returns: Nothing */
/* */
/*******************************************************************************/
void Sector_Erase(unsigned long Dst)
{
 WREN();
 Select_Serial_Memory; /* enable device */
 SendSPIByte(0x20); /* send Sector Erase command */
 SendSPIByte(((Dst & 0xFFFFFF) >> 16)); /* send 3 address bytes */
 SendSPIByte(((Dst & 0xFFFF) >> 8));
 SendSPIByte(Dst & 0xFF);
 Deselect_Serial_Memory; /* disable device */
 Wait_Busy();
}


/*******************************************************************************/
/* PROCEDURE: Block_Erase */
/* */
/* This procedure Block Erases the Chip. */
/* */
/* Input: Dst: Destination Address 000000H - 07FFFFH */
/* */
/* Returns: Nothing */
/* */
/*******************************************************************************/
void Block_Erase(unsigned long Dst)
{
 WREN();
 Select_Serial_Memory; /* enable device */
 SendSPIByte(0x52); /* send Block Erase command */
 SendSPIByte(((Dst & 0xFFFFFF) >> 16)); /* send 3 address bytes */
 SendSPIByte(((Dst & 0xFFFF) >> 8));
 SendSPIByte(Dst & 0xFF);
 Deselect_Serial_Memory; /* disable device */
 Wait_Busy();
}


 /*********************************************************************************************
 PUT CHAR ARRAY
*********************************************************************************************/ 
/*! \brief  Write one or multiple bytes to the Serial SPI memory
 *
 *  This function check the validity of the first byte address location (out of range or write protected area).
 *  A read access to the serial SPI memory is performed to get the status register value. During this access the interrupt is disabled.
 *  As from the first SPI write access is started, the function returns.
 *  The management of the next SPI accesses and the write access completion are performed by the SPI interrupt handler.
 *  
 *  \note No page roll-over control is performed.
 *
 *  \param start_add  : destination address of the first byte
 *  \param nb_of_byte : number of bytes to be written decremented by one (this is for compatibility reason for devices with 256 bytes page size) 
 *  \param source :     pointer to the write buffer location
 *  \return  AccessStatus.
 *  \retval TRANSFER_STARTED    : the write sequence is started without error.
 *  \retval OUT_OF_RANGE        : the address is out of range of available memory.
 *  \retval BUSY                : the SPI memory or the SPI interface is busy.
 *  \retval DATA_WR_PROTECTED   : the address of the last byte to be written matches a write protected location.
*********************************************************************************************/
void  PutCharArray(unsigned long StartAddr, unsigned int  SendBytes, unsigned char* SourceAddr)
{ 
  U16 byteread_cnt;
  U8 * TempPtr ;
  TempPtr= SourceAddr ;
  WREN();

 Auto_Add_IncA(StartAddr, (char)(*(TempPtr)), (char)(*(TempPtr+1)));

  for(byteread_cnt=2; byteread_cnt < SendBytes; byteread_cnt+=2)
  {
    Auto_Add_IncB(*(TempPtr+byteread_cnt),*(TempPtr+byteread_cnt+1));
   
  }  
  WRDI(); 
}
/*******************************************************************************/
/* PROCEDURE: HW_SPI_Init */
/* */
/* This procedure initializes the hardware SPI on the MCU. */
/* */
/* Input: None */
/* */
/* Returns: Nothing */
/* */
/*******************************************************************************/
void SST_SPI_Init(void )
{
Init_Device();
 WREN();
 EWSR();
 WRSR(0x00); 
}
//*******************************************************************************/
void main(void)
{


 unsigned char data1[3];
 unsigned char rdata[10];
 unsigned char wdata[10]={0,1,2,3,4,5,6,7,8,9};

 WP=1;
 SST_SPI_Init();
//***************擦除整個芯片********************
Chip_Erase();
//***************讀狀態寄存器,讀芯片ID**********
data1[0]=Read_Status_Register();
data1[1]= Read_ID(0x01);
//****************讀寫單個字節*******************
//Byte_Program(0x02,0x03);
//data1[2]=Read(0x02);
//****************寫地址自動增加-****************
PutCharArray(0x00, 10, &wdata);
Read_Cont(0x00,10,&rdata);
//*****************連續讀******************
Read_Cont(0x00,10,&rdata);
//***********************************

//Sector_Erase(0x00);
Block_Erase(0x00);
Read_Cont(0x00,10,&rdata);

//***********************************
data1[1]= Read_ID(0x01);

}
 
//***********************************End of Code*********************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一卡二卡三卡 | 欧美美女直播网站| 不卡av在线免费观看| 国产精品一区二区黑丝| 久久精品国产久精国产| 久久精品国产澳门| 精品一区二区三区蜜桃| 免费观看一级欧美片| 久久激情五月婷婷| 国产成人综合精品三级| 成人中文字幕在线| 色综合久久久久综合体| 在线免费一区三区| 69p69国产精品| 久久美女高清视频| 欧美激情在线一区二区三区| 日韩一区在线播放| 午夜影视日本亚洲欧洲精品| 蜜臀av一区二区在线观看| 激情五月激情综合网| 99精品视频在线免费观看| 欧美亚洲动漫制服丝袜| 91精品免费在线观看| 久久久www成人免费毛片麻豆| 一区免费观看视频| 蜜臀精品久久久久久蜜臀 | 亚洲激情欧美激情| 日日夜夜一区二区| 国产精品亚洲人在线观看| 色婷婷精品久久二区二区蜜臀av| 在线不卡的av| 国产精品麻豆网站| 美腿丝袜亚洲一区| 99国产精品一区| 精品噜噜噜噜久久久久久久久试看| 中文字幕日韩一区二区| 日韩电影网1区2区| 99热在这里有精品免费| 欧美一区二区三区小说| 亚洲色图制服诱惑| 精一区二区三区| 欧美日韩国产免费一区二区| 国产欧美一区二区三区在线看蜜臀 | 一区二区三区成人在线视频| 蜜桃在线一区二区三区| 色婷婷久久综合| 亚洲国产激情av| 美女视频网站久久| 欧美性色黄大片| 国产精品久久久久桃色tv| 免费观看91视频大全| 色综合天天性综合| 欧美激情艳妇裸体舞| 美女性感视频久久| 欧美视频在线观看一区二区| 国产精品另类一区| 国产美女一区二区| 日韩一区二区三免费高清| 亚洲欧美日韩久久| 不卡电影一区二区三区| 久久亚洲影视婷婷| 91蜜桃在线免费视频| 欧美精品一区二区三区在线播放| 亚洲成人一二三| 在线观看日韩国产| 一个色综合av| 在线观看欧美黄色| 亚洲综合另类小说| 91福利资源站| 亚洲v中文字幕| 欧美日韩国产大片| 五月天精品一区二区三区| 欧美日韩免费一区二区三区视频 | 日本sm残虐另类| 欧美专区亚洲专区| 亚洲午夜精品久久久久久久久| 在线看国产一区二区| 一区二区三区日本| 欧美色手机在线观看| 五月天一区二区| 日韩欧美一区二区久久婷婷| 久久er99热精品一区二区| 欧美美女视频在线观看| 日本少妇一区二区| 精品国产精品一区二区夜夜嗨| 国产乱码精品一区二区三区av| 中文字幕av一区二区三区高| 9色porny自拍视频一区二区| 椎名由奈av一区二区三区| 在线欧美日韩国产| 亚洲手机成人高清视频| 欧美日本一区二区在线观看| 免费黄网站欧美| 国产欧美日产一区| 色8久久精品久久久久久蜜| 午夜精品福利在线| xfplay精品久久| 99九九99九九九视频精品| 亚洲一区在线观看免费 | 在线免费观看成人短视频| 亚洲国产va精品久久久不卡综合| 67194成人在线观看| 久久99精品国产麻豆不卡| 国产精品久久久久一区二区三区共| 色爱区综合激月婷婷| 日韩影院免费视频| 久久久久国产免费免费| 91小视频在线观看| 日韩精品五月天| 中文字幕一区二区日韩精品绯色| 欧洲精品视频在线观看| 国产综合久久久久久久久久久久| 亚洲狼人国产精品| 精品盗摄一区二区三区| 91福利视频网站| 精品一区免费av| 亚洲综合男人的天堂| 国产欧美日韩视频一区二区| 免费观看在线综合色| 国产欧美一区二区精品忘忧草 | 国产一区二区三区免费播放 | 91精品国产欧美一区二区18| 国产剧情一区二区三区| 亚洲一区中文日韩| 国产欧美一区二区三区网站| 欧美日韩视频专区在线播放| 不卡影院免费观看| 国产在线国偷精品产拍免费yy| 亚洲精品免费一二三区| 久久久久国产免费免费| 91精品国产综合久久精品麻豆| 一本色道久久综合亚洲aⅴ蜜桃| 国模冰冰炮一区二区| 亚洲国产精品久久人人爱| 最近日韩中文字幕| 国产精品视频免费| 国产亚洲欧美日韩日本| 69堂亚洲精品首页| 欧美日韩一本到| 色综合久久六月婷婷中文字幕| 国产伦精品一区二区三区在线观看| 图片区小说区区亚洲影院| 亚洲天堂网中文字| 亚洲欧美怡红院| 亚洲三级在线免费观看| 中文字幕欧美国产| 国产精品拍天天在线| 国产日韩欧美高清| 国产人伦精品一区二区| 久久毛片高清国产| 国产欧美va欧美不卡在线| 久久精品无码一区二区三区| 久久青草欧美一区二区三区| 久久综合九色欧美综合狠狠| 精品国产免费人成在线观看| 欧美一区日韩一区| 日韩一区二区三区三四区视频在线观看 | 樱桃国产成人精品视频| 中文字幕亚洲视频| 亚洲精品中文在线影院| 亚洲综合自拍偷拍| 午夜影院久久久| 免费av网站大全久久| 激情综合一区二区三区| 国产尤物一区二区| aa级大片欧美| 91久久精品一区二区二区| 欧美群妇大交群中文字幕| 8x福利精品第一导航| 精品久久国产老人久久综合| 久久久无码精品亚洲日韩按摩| 久久精品亚洲精品国产欧美| 国产精品乱码妇女bbbb| 亚洲午夜一二三区视频| 日本亚洲一区二区| 国产91精品一区二区麻豆亚洲| 99久久国产综合精品麻豆| 欧美在线你懂得| 精品国产人成亚洲区| 国产精品国模大尺度视频| 亚洲香肠在线观看| 国产精品综合av一区二区国产馆| 粉嫩一区二区三区在线看| 色屁屁一区二区| 精品捆绑美女sm三区| 1区2区3区精品视频| 日韩在线一区二区三区| 成人精品电影在线观看| 欧美日韩国产综合久久| 国产视频在线观看一区二区三区| 综合久久国产九一剧情麻豆| 午夜精品久久一牛影视| 国内成+人亚洲+欧美+综合在线| 91啪亚洲精品| 精品捆绑美女sm三区| 亚洲美女电影在线| 国产一区二区在线免费观看| 91麻豆国产福利在线观看| 久久伊人蜜桃av一区二区| 亚洲与欧洲av电影|