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

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

?? spi.c

?? ATMEGA128的EEPROM驅(qū)動程序
?? C
字號:
/************************************************
文件:spi.c
用途:SPI驅(qū)動
注意:
創(chuàng)建:2008.1.25
修改:2008.1.25
Copy Right  (c)  www.avrvi.com  AVR與虛擬儀器
************************************************/
#include "..\config.h"
/*************************************************************************
** 函數(shù)名稱: spi_init(void)
** 功能描述: SPI初始化
** 輸 入: 
** 輸出	 : 
** 全局變量: 無
** 調(diào)用模塊: 
** 說明:
** 注意:
**************************************************************************/
void spi_init(void)
{
 	 DDRB |= (1<<MOSI)|(1<<SCK)|(1<<SS);//設(shè)置MOSI,SCK輸出
 	 SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1);//使能SPI,主機模式
}
/*************************************************************************
** 函數(shù)名稱: SPI_MasterTransmit(char Data)
** 功能描述: SPI主機發(fā)送數(shù)據(jù)
** 輸 入: Data 需要通過SPI傳輸?shù)臄?shù)據(jù)
** 輸出	 : 
** 全局變量: 無
** 調(diào)用模塊: 
** 說明:
** 注意:
**************************************************************************/
void SPI_MasterTransmit(char Data)
{
 	 /* 啟動數(shù)據(jù)傳輸 */
 	 SPDR = Data;
 	 /* 等待傳輸結(jié)束 */
 	 while(!(SPSR & (1<<SPIF)))
 	 ;
}



/*******************************************************
描述: 主 存讀取指定頁地址與字節(jié)地址固寫長度

參數(shù): page_adderss 主存的頁地址<=2047

          buffer_adderss 緩存字節(jié)地址0-263

          *Read_pHeader 讀出數(shù)據(jù)存貯地址指針

          length   讀入數(shù)據(jù)的長度,<=263

*******************************************************/
void AT45DB041B_ContinuousArrayRead(unsigned int page_adderss,unsigned int buffer_adderss,unsigned char *Read_pHeader,unsigned char length)
{     
unsigned int i;   
unsigned char statu_bit=0;
for(i=0;i<255;++i) //AT45DB041 busy
    {
    statu_bit=AT45DB041B_StatusRegisterRead();
    if(testbit(statu_bit,7)) break;
    } 
  SPI_CS_E;   
  SPI_HostWriteByte(0xe8);   
  SPI_HostWriteByte((unsigned char)(page_adderss>>7));   
  SPI_HostWriteByte((unsigned char)((page_adderss<<1)|(buffer_adderss>>8))); 
  SPI_HostWriteByte((unsigned char)buffer_adderss); 
  for(i=0;i<4;i++)
    {
      SPI_HostWriteByte(0x00);
    } 
  for(i=0;i<length;i++)
    {
      Read_pHeader[i]=SPI_HostReadByte();
    } 
  SPI_CS_D; 
} 
/*******************************************************
描述:主存轉(zhuǎn)到緩存

參數(shù):buffer 緩存選擇0X01選取buffer 1, 0X02選取buffer 2,

          page_adderss 主存的頁地址<=2047

*******************************************************/
void AT45DB041B_MainMemoryBufferTransfer(unsigned char buffer,unsigned char page_adderss)
{     
unsigned int i;   
unsigned char statu_bit=0;
for(i=0;i<255;++i) //AT45DB041 busy
    {
    statu_bit=AT45DB041B_StatusRegisterRead();
    if(testbit(statu_bit,7)) break;
    } 
  SPI_CS_E;   
  switch(buffer)
    { 
    case 1:SPI_HostWriteByte(0x53);break; //buffer 1 writ
    case 2:SPI_HostWriteByte(0x55);break; //buffer 2 writ
  } 
  SPI_HostWriteByte((unsigned char)(page_adderss>>7));   
  SPI_HostWriteByte((unsigned char)(page_adderss<<1)); 
  SPI_HostWriteByte(0x00); 
  SPI_CS_D; 
} 
/*******************************************************
Status Register Format:                                   
----------------------------------------------------------------------- 
| bit7     | bit6   | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 | 
|--------|--------|-----|------|-----|-----|------|------|
|RDY/BUSY| COMP |   0   |   1   |   1   |   1   |   X   |   X   | 
| ----------------------------------------------------------------------- 
bit7 - 忙標(biāo)記,0為忙1為不忙   

    當(dāng)Status Register的位0移出之后,

    接下來的時鐘脈沖序列將使SPI器件繼續(xù)
    
      將最新的狀態(tài)字節(jié)送出 
      
bit6 - 標(biāo)記最近一次Main Memory Page和Buffer的比較結(jié)果,0相同,1不同。   
bit5                                               
bit4                                               
bit3                                               
bit2 - 這4位用來標(biāo)記器件密度,對于AT45DB041B,這4位應(yīng)該是0111,一共能標(biāo)記 
      16種不同密度的器件。                               
bit1                                               
bit0 - 這2位暫時無效                                     
*******************************************************/
uchar AT45DB041B_StatusRegisterRead(void)
{ 
  uchar i;         
  SPI_CS_E;   
  SPI_HostWriteByte(0xd7); 
  i=SPI_HostReadByte(); 
  SPI_CS_D; 
  return i;   
} 
/*******************************************************
描述: 一、 將指定的數(shù)據(jù)寫入buffer 中的指定地址(0-263)

          二、帶擦除將buffer 中的數(shù)據(jù)寫入到指定的頁中

參數(shù): buffer 緩存選擇0X01選取buffer 1, 0X02選取buffer 2,

          buffer_adderss 緩存字節(jié)地址0-263

          *writ_pHeader 待寫入數(shù)據(jù)的指針

          length 寫入數(shù)據(jù)的長度,<=263

          page_adderss 主存的頁地址<=2047

*******************************************************/

void AT45DB041B_BufferToMainMemoryPageProgramWithBuilt_inErase(unsigned char buffer,unsigned int buffer_adderss,unsigned char *writ_pHeader,unsigned int length,unsigned int page_adderss)
{ 
  unsigned int i=0;
  unsigned char statu_bit=0;
  AT45DB041B_BufferWrite(buffer,buffer_adderss,writ_pHeader,length);
  for(i=0;i<1000;++i) //AT45DB041 busy
    {
    statu_bit=AT45DB041B_StatusRegisterRead();
      if(testbit(statu_bit,7)) break;
    }     
  SPI_CS_E;       
  switch(buffer)
    { 
    case 1:SPI_HostWriteByte(0x83);break; 
    case 2:SPI_HostWriteByte(0x86);break; 
    } 
  SPI_HostWriteByte((unsigned char)(page_adderss>>7)); 
  SPI_HostWriteByte((unsigned char)(page_adderss<<1)); 
  SPI_HostWriteByte(0x00); 
  SPI_CS_D; 
} 
/*******************************************************
描述: 將指定的數(shù)據(jù)寫入buffer 中的指定地址(0-263)

參數(shù): buffer 緩存選擇0X01選取buffer 1, 0X02選取buffer 2,

          buffer_adderss 緩存字節(jié)地址0-263

          *writ_pHeader 待寫入數(shù)據(jù)的指針

          length 寫入數(shù)據(jù)的長度,<=263

*******************************************************/
void AT45DB041B_BufferWrite(unsigned char buffer,unsigned int buffer_adderss,unsigned char *writ_pHeader,unsigned int length)
{ 
  unsigned int i=0; 
  unsigned char statu_bit=0;
  for(i=0;i<255;++i) //AT45DB041 busy
    {
    statu_bit=AT45DB041B_StatusRegisterRead();
      if(testbit(statu_bit,7)) break;
    } 
  SPI_CS_E;   
  switch(buffer)
    { 
    case 1:SPI_HostWriteByte(0x84);break; //buffer 1 writ
    case 2:SPI_HostWriteByte(0x87);break; //buffer 2 writ
  } 
  SPI_HostWriteByte(0x00); 
  SPI_HostWriteByte((unsigned char)(buffer_adderss>>8)); 
  SPI_HostWriteByte((unsigned char)buffer_adderss); 
  for(i=0;i<length;i++)
    {
      SPI_HostWriteByte(writ_pHeader[i]);
    } 
  SPI_CS_D;       
} 

void SPI_HostWriteByte(unsigned char send_data)
{
  SPDR=0;
  SPDR=send_data;
  while(!(SPSR&(1<<SPIF)));
}
unsigned char SPI_HostReadByte(void)
{
  while(!(SPSR&(1<<SPIF)));
  return SPDR;
}



int main(void)
{
  uint16_t i,j;
  DDRB|=_BV(PB0);

  for(i=0;i<128;i++)
    xx[i]=i+5;
    
  IoInit();
  df_init();   
  
  printf_P(PSTR("\n開始測試AT45DB161D!\n"));   
  
  /* //測試寫   
  df_write_open(8000);
  for(i=0;i<5;i++)
    df_write(xx,128);
  df_write_close();
  */   
  
  //測試讀
  df_read_open(8000);
  for(j=0;j<5;j++)
  {
    df_read(xx,128);
    for(i=0;i<128;i++)
    {
        if(i%16 == 0)
          printf("\n");
        printf("%x ",xx[i]);
    }
  }
  df_read_close();
  
  printf("\n");
  
  
  /* //測試讀器件ID
  df_read_deviceid(xx);
  for(i=0;i<4;i++)
    printf("0x%x ",xx[i]);
  */
  
  while(1)
  {
    DelayMs(300);
    PORTB^=_BV(PB0); //測試完后進(jìn)入LED閃爍死循環(huán)
  }   
}





?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色欧美日韩亚洲| 国产亚洲精品免费| 亚洲成av人片在www色猫咪| 欧美精品一区男女天堂| 欧美大度的电影原声| 7777精品伊人久久久大香线蕉| 91麻豆精品在线观看| 色综合夜色一区| 欧美综合色免费| 欧美日韩高清在线| 日韩欧美自拍偷拍| 日韩免费一区二区三区在线播放| 欧美一级淫片007| 日韩精品一区二区三区在线观看| 欧美mv日韩mv| 久久久久久97三级| 亚洲欧洲av另类| 亚洲在线观看免费| 日韩精品91亚洲二区在线观看| 日韩国产一区二| 精品写真视频在线观看| 免费成人在线观看视频| 国内成人免费视频| 国产亚洲欧美一级| 日韩av午夜在线观看| 欧美伦理视频网站| 国产精品成人午夜| 国产成人三级在线观看| 色88888久久久久久影院按摩| 一区二区免费看| 免费美女久久99| 欧美三级一区二区| 国产精品久久久久久久久晋中| 欧美大度的电影原声| 制服丝袜国产精品| 亚洲精品一区二区三区在线观看 | 91精品免费观看| 日韩欧美一区二区三区在线| 久久久91精品国产一区二区精品| 亚洲欧美中日韩| 首页亚洲欧美制服丝腿| 国产丶欧美丶日本不卡视频| 色综合久久天天| 精品国产凹凸成av人网站| 中文字幕五月欧美| 日av在线不卡| 99精品欧美一区二区蜜桃免费 | 9色porny自拍视频一区二区| 在线观看成人小视频| 精品国产一区二区三区av性色 | 国产一区二区看久久| 99精品一区二区| 日韩女同互慰一区二区| 亚洲欧美另类久久久精品2019| 美女脱光内衣内裤视频久久网站| 99精品久久99久久久久| 欧美一级日韩一级| 亚洲天堂免费在线观看视频| 激情五月婷婷综合| 欧美亚洲日本一区| 久久久久国产精品厨房| 亚洲电影在线播放| youjizz久久| 日韩精品在线看片z| 亚洲精品国产视频| 国产成人99久久亚洲综合精品| 欧美日韩黄色一区二区| 中文字幕五月欧美| 国产一区二区三区av电影| 欧美性猛交xxxxxxxx| 国产精品美女久久久久aⅴ| 免费观看30秒视频久久| 欧美日韩中字一区| 中文字幕制服丝袜一区二区三区| 激情综合网最新| 欧美日韩精品欧美日韩精品一| 中文字幕一区二区三中文字幕| 国产一区二区三区免费在线观看| 欧美日韩国产区一| 亚洲老妇xxxxxx| 成人久久18免费网站麻豆| 日韩一区二区精品在线观看| 亚洲一区二区三区视频在线 | bt欧美亚洲午夜电影天堂| 欧美电影免费提供在线观看| 亚洲.国产.中文慕字在线| 91蜜桃免费观看视频| 欧美经典一区二区| 国产麻豆午夜三级精品| 精品国产一区久久| 老司机精品视频线观看86| 欧美福利视频导航| 亚洲一区视频在线观看视频| 91日韩在线专区| 亚洲手机成人高清视频| 成人av先锋影音| 国产欧美一区二区精品秋霞影院| 久久精品国产网站| 日韩美女一区二区三区四区| 五月激情丁香一区二区三区| 欧美日韩精品免费观看视频| 亚洲国产日日夜夜| 欧美日韩的一区二区| 亚洲午夜日本在线观看| 欧美日韩一级片网站| 舔着乳尖日韩一区| 欧美精品久久天天躁| 日韩成人一区二区| 日韩欧美123| 国产精品 日产精品 欧美精品| 久久一夜天堂av一区二区三区| 国产一区日韩二区欧美三区| 国产亚洲一本大道中文在线| 国产xxx精品视频大全| 中日韩av电影| 91无套直看片红桃| 亚洲另类一区二区| 欧美日韩国产综合一区二区三区| 视频在线观看一区| 精品国产自在久精品国产| 国产精品99久久久久久似苏梦涵| 欧美高清在线视频| 色婷婷综合久久| 天天操天天综合网| 精品动漫一区二区三区在线观看| 国产一区二区三区四| 国产精品视频免费看| 日本二三区不卡| 日本一道高清亚洲日美韩| 26uuu亚洲综合色| 成人精品视频一区二区三区尤物| 亚洲私人影院在线观看| 欧美日韩dvd在线观看| 美女看a上一区| 国产欧美精品一区二区三区四区| av在线免费不卡| 天堂一区二区在线| 久久久一区二区| 91免费观看视频| 蜜臀av性久久久久蜜臀aⅴ | 国产一区二区三区免费观看| 1区2区3区欧美| 欧日韩精品视频| 老司机精品视频线观看86| 中文字幕一区日韩精品欧美| 9191精品国产综合久久久久久| 国产一区欧美日韩| 中文字幕亚洲在| 欧美一二三四在线| 96av麻豆蜜桃一区二区| 日韩精品电影一区亚洲| 国产精品免费视频观看| 欧美日韩国产片| 成人精品在线视频观看| 日韩二区三区四区| 中文字幕一区二区视频| 日韩一区二区三区在线观看| av亚洲精华国产精华精华| 午夜久久久久久电影| 国产精品美女视频| 欧美草草影院在线视频| 91麻豆国产在线观看| 久久不见久久见免费视频7| 一区二区在线观看视频| 久久久久久一级片| 欧美日本国产视频| 99久久99久久精品免费观看 | 欧美三级韩国三级日本三斤 | 国产亚洲女人久久久久毛片| 欧美日韩精品是欧美日韩精品| 风间由美一区二区三区在线观看 | 91影院在线免费观看| 蜜桃av一区二区三区| 亚洲美女电影在线| 久久久久久黄色| 91精品国产一区二区| 91麻豆免费看片| 国产高清精品网站| 久久国产剧场电影| 日日摸夜夜添夜夜添国产精品| 国产精品乱码一区二区三区软件 | 欧美在线短视频| av电影在线观看一区| 国产自产2019最新不卡| 欧美aaa在线| 亚洲午夜电影网| 亚洲四区在线观看| 国产精品免费aⅴ片在线观看| 精品国产网站在线观看| 91精品福利在线一区二区三区| 欧美主播一区二区三区美女| caoporm超碰国产精品| 国产91高潮流白浆在线麻豆 | 国产九色精品成人porny| 免费人成在线不卡| 三级成人在线视频| 亚洲一区二区三区免费视频| 亚洲综合在线观看视频| 亚洲人成在线观看一区二区| 国产精品久久久久影院|