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

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

?? 45db081的讀寫程序.txt

?? 45db081的讀寫程序
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
#include <c8051f020.h>                 // SFR declarations
#include <stdio.h>
sbit  P37 = P3^7;
#define SYSCLK 11059200
#define DF_RESET  P5 &= ~(0x1); P5 |= 0x1; // P50 
DataFlash reset port pin (P20)
#define DF_RDY_BUSY P37=1; while(!(P3&0x80)); 
//P37 DataFlash rea
#define DF_CHIP_SELECT  P5 &= ~(0x8);  // P53 DataFlash chip 
select port pin (P23)
#define DF_CHIP_NOSELECT  P5 |= 0x8;  // P53 DataFlash chip 
select port pin (P23)
#define R8019_CHIP_SELECT  ES0=0;P4 = 0xF8; 
#define RAM_CHIP_SELECT_BANK0  ES0=1;P4 = 0xF4;  
#define RAM_CHIP_SELECT_BANK1  P4 = 0xF5;  
#define BUFFER_1 0x00  // buffer 1
#define BUFFER_2 0x01  // buffer 2
#define BUFFER_1_WRITE 0x84  // buffer 1 write
#define BUFFER_2_WRITE 0x87  // buffer 2 write
#define BUFFER_1_READ  0x54 // buffer 1 read (change to 0xD4 for 
SPI mode 0,3)
#define BUFFER_2_READ  0x56 // buffer 2 read (change to 0xD6 for 
SPI mode 0,3)
#define B1_TO_PAGE_WITH_ERASE 0x83  // buffer 1 to main 
memory page program with built-in erase
#define B2_TO_PAGE_WITH_ERASE 0x86  // buffer 2 to main 
memory page program with built-in erase
#define B1_TO_PAGE_WITHOUT_ERASE 0x88  // buffer 1 to main memory page 
program without built-in erase
#define B2_TO_PAGE_WITHOUT_ERASE 0x89  // buffer 2 to main memory page 
program without built-in erase
#define PAGE_PROG_THROUGH_B1 0x82  // main memory page 
program through buffer 1
#define PAGE_PROG_THROUGH_B2 0x85  // main memory page 
program through buffer 2
#define AUTO_PAGE_REWRITE_THROUGH_B1 0x58 // auto page rewrite through buffer 1
#define AUTO_PAGE_REWRITE_THROUGH_B2 0x59 // auto page rewrite through buffer 2
#define PAGE_TO_B1_COMP 0x60  // main memory page compare to buffer 1
#define PAGE_TO_B2_COMP 0x61  // main memory page compare to buffer 2
#define PAGE_TO_B1_XFER 0x53  // main memory page to buffer 1 transfer
#define PAGE_TO_B2_XFER 0x55  // main memory page to buffer 2 transfer
#define STATUS_REGISTER 0x57
#define MAIN_MEMORY_PAGE_READ 0x52 // main memory page read (change to 0xD2 for 
SPI mode 0,3)
#define PAGE_ERASE 0x81  // erase a 528 byte page
#define BLOCK_ERASE 0x50  // erase 512 pages
unsigned int AT450XXPageAddr;
void SendSPIByte(unsigned char ch)
{
SPIF = 0;
SPI0DAT = ch;
while (SPIF == 0);  // wait for data transfer to be 
completed            
} 
unsigned char GetSPIByte(void)
{
        SPIF = 0;
SPI0DAT = 0;
while (SPIF == 0);
return  SPI0DAT;                   // read data from SPI
}
/*整片擦除*/          //081 total 256 block  16sector per block 
void ErasingDataFlash(void)    //081 total 512 block  16sector per block
{
unsigned int block_counter = 0;
DF_RDY_BUSY;  // check if flash is busy
while (block_counter < 512)
{
   DF_CHIP_SELECT;                          // select 
DataFlash
SendSPIByte(BLOCK_ERASE); 
//0x50 erase 512 pages
SendSPIByte((char)(block_counter>>4));    //r r r PA11 
PA10 PA9 PA8 PA7 
SendSPIByte((char)(block_counter<<4));     //PA6 PA5 PA4 
PA3 X X X   0
SendSPIByte(0x00); 
   DF_CHIP_NOSELECT;                          // unselect 
DataFlash
block_counter++;
DF_RDY_BUSY; // wait until block is erased
}
}
//頁擦除
void EraseFlashPage(void) 
{
DF_RDY_BUSY;  // check if flash is busy
   DF_CHIP_SELECT; 
        SendSPIByte(PAGE_ERASE);
        SendSPIByte((unsigned char)(AT450XXPageAddr>>7));
        SendSPIByte((unsigned char)(AT450XXPageAddr<<1));
        SendSPIByte(0x00);
   DF_CHIP_NOSELECT;
}
//讀緩存
void FlashBuffer1Read(unsigned int star_addr,unsigned int len, unsigned char 
*buffer) //從緩沖區1的指定位置(0-263)中讀入指定字節
{                                       
       unsigned int i;
DF_RDY_BUSY;  // check if flash is busy
DF_CHIP_SELECT;  // enable 
DataFlash
SendSPIByte(BUFFER_1_READ); //緩沖區1為54H  
緩沖區2為56H
SendSPIByte(0);
SendSPIByte((unsigned char)(star_addr>>8));
SendSPIByte((unsigned char)star_addr);
SendSPIByte(0);
for (i=0;i<len;i++)
{
    buffer[i] = GetSPIByte();                   // 
read data from SPI
    }
        DF_CHIP_NOSELECT;
}
//讀緩存
void FlashBuffer2Read(unsigned int star_addr,unsigned int len, unsigned char 
*buffer) //從緩沖區2的指定位置(0-263)中讀入指定字節
{                                       
       unsigned int i;
DF_RDY_BUSY;  // check if flash is busy
DF_CHIP_SELECT;  // enable 
DataFlash
SendSPIByte(BUFFER_2_READ); //緩沖區1為54H  
緩沖區2為56H
SendSPIByte(0);
SendSPIByte((unsigned char)(star_addr>>8));
SendSPIByte((unsigned char)star_addr);
SendSPIByte(0);
for (i=0;i<len;i++)
{
    buffer[i] = GetSPIByte();                   // 
read data from SPI
    }
        DF_CHIP_NOSELECT;
}
//寫緩存
void FlashBuffer1Write(unsigned int start_addr, unsigned int len,unsigned char 
*buffer) //向緩沖區1的指定位置(0-263)寫入指定字節
{
    unsigned char  i;
DF_RDY_BUSY;  // check if flash is busy
    DF_CHIP_SELECT; 
//緩沖區1為84H  緩沖區2為87H
SendSPIByte(BUFFER_1_WRITE);
    SendSPIByte(0x00);
    SendSPIByte((unsigned char)(start_addr>>8));
    SendSPIByte((unsigned char)start_addr);
    for (i=0;i<len;i++)
    SendSPIByte(buffer[i]);
DF_CHIP_NOSELECT;
}
//寫緩存
void FlashBuffer2Write(unsigned int start_addr, unsigned int len,unsigned char 
*buffer) //向緩沖區2的指定位置(0-263)寫入指定字節
{
    unsigned char  i;
DF_RDY_BUSY;  // check if flash is busy
    DF_CHIP_SELECT; 
//緩沖區1為84H  緩沖區2為87H
SendSPIByte(BUFFER_2_WRITE);
    SendSPIByte(0x00);
    SendSPIByte((unsigned char)(start_addr>>8));
    SendSPIByte((unsigned char)start_addr);
    for (i=0;i<len;i++)
    SendSPIByte(buffer[i]);
DF_CHIP_NOSELECT;
}
//讀取狀態
unsigned char GetFlashStatus() //讀Flash當前狀態Bit7=1:空閑 0:忙 Bit6=1:比較結果
不匹配 0:匹配 Bit5Bit3Bit2:芯片標志 100:081 
{
        unsigned char idata ret;
DF_CHIP_SELECT;
        SendSPIByte(STATUS_REGISTER);
        ret=GetSPIByte();
        DF_CHIP_NOSELECT;
        return ret;
}
//讀主存至緩存
void PageToBuffer1(void)  //從Flash讀一頁至緩存1
{
DF_RDY_BUSY;  // check if flash is busy
DF_CHIP_SELECT;  // enable DataFlash
SendSPIByte(PAGE_TO_B1_XFER); // transfer next page to 
buffer1
SendSPIByte((unsigned char)(AT450XXPageAddr >> 7));
SendSPIByte((unsigned char)(AT450XXPageAddr << 1));
SendSPIByte(0); 
DF_CHIP_NOSELECT;
}
//讀主存至緩存
void PageToBuffer2(void)    //從Flash讀一頁至緩存2
{
DF_RDY_BUSY;  // check if flash is busy
DF_CHIP_SELECT;  // enable DataFlash
SendSPIByte(PAGE_TO_B2_XFER); // transfer next page to 
buffer1
SendSPIByte((unsigned char)(AT450XXPageAddr >> 7));
SendSPIByte((unsigned char)(AT450XXPageAddr << 1));
SendSPIByte(0); 
DF_CHIP_NOSELECT;
}
//緩存寫主存
void FlashBuffer1ProgNoErase(void)  //直接將緩存1寫入Flash一頁(不擦除)
{
DF_RDY_BUSY;  // check if flash is busy
DF_CHIP_SELECT;
SendSPIByte(B1_TO_PAGE_WITHOUT_ERASE);
        SendSPIByte((unsigned char)(AT450XXPageAddr >> 7));
        SendSPIByte((unsigned char)(AT450XXPageAddr << 1));
        SendSPIByte(0x00);
DF_CHIP_NOSELECT;
}
//緩存寫主存
void FlashBuffer2ProgNoErase(void) //直接將緩存2寫入Flash一頁(不擦除)
{
DF_RDY_BUSY;  // check if flash is busy
DF_CHIP_SELECT;
SendSPIByte(B2_TO_PAGE_WITHOUT_ERASE);
        SendSPIByte((unsigned char)(AT450XXPageAddr >> 7));
        SendSPIByte((unsigned char)(AT450XXPageAddr << 1));
        SendSPIByte(0x00);
DF_CHIP_NOSELECT;
}
//擦除+緩存寫主存
void FlashBuffer1ProgAutoErase(void) //直接將緩存1寫入Flash一頁(先擦除)
{
DF_RDY_BUSY;  // check if flash is busy
DF_CHIP_SELECT;
SendSPIByte(B1_TO_PAGE_WITH_ERASE);
        SendSPIByte((unsigned char)(AT450XXPageAddr >> 7));
        SendSPIByte((unsigned char)(AT450XXPageAddr << 1));
        SendSPIByte(0x00);
DF_CHIP_NOSELECT;
}

//擦除+緩存寫主存
void FlashBuffer2ProgAutoErase(void) //直接將緩存2寫入Flash一頁(先擦除)
{
DF_RDY_BUSY;  // check if flash is busy
DF_CHIP_SELECT;
SendSPIByte(B2_TO_PAGE_WITH_ERASE);
        SendSPIByte((unsigned char)(AT450XXPageAddr >> 7));
        SendSPIByte((unsigned char)(AT450XXPageAddr << 1));
        SendSPIByte(0x00);
DF_CHIP_NOSELECT;
}

//寫緩存+緩存寫主存
void FlashProgViaBuffer1(unsigned int start_addr, unsigned int len,unsigned 
char *buffer) //將指定數據通過緩存1寫入Flash指定位置(不擦除)
{
    unsigned int  i;
DF_RDY_BUSY;  // check if flash is busy
    DF_CHIP_SELECT; 
//緩沖區1為82H  緩沖區2為85H
SendSPIByte(PAGE_PROG_THROUGH_B1);
        SendSPIByte((unsigned char)(AT450XXPageAddr >> 7));
        SendSPIByte((unsigned char)(AT450XXPageAddr << 1 + start_addr>>8));
    SendSPIByte((unsigned char)start_addr);
    for (i=0;i<len;i++)
    SendSPIByte(buffer[i]);
DF_CHIP_NOSELECT;
}
//寫緩存+緩存寫主存
void FlashProgViaBuffer2(unsigned int start_addr, unsigned int len,unsigned 
char *buffer) //將指定數據通過緩存2寫入Flash指定位置(不擦除)
{
    unsigned int  i;
DF_RDY_BUSY;  // check if flash is busy
    DF_CHIP_SELECT; 
//緩沖區1為82H  緩沖區2為85H
SendSPIByte(PAGE_PROG_THROUGH_B2);
        SendSPIByte((unsigned char)(AT450XXPageAddr >> 7));
        SendSPIByte((unsigned char)(AT450XXPageAddr << 1 + start_addr>>8));
    SendSPIByte((unsigned char)start_addr);
    for (i=0;i<len;i++)
    SendSPIByte(buffer[i]);
DF_CHIP_NOSELECT;
}

//寫緩存+擦除+緩存寫主存
void FlashAutoProgViaBuffer1(unsigned int start_addr, unsigned int len,unsigned 
char *buffer) //將指定數據通過緩存1寫入Flash指定位置(先擦除)
{
    unsigned int  i;
DF_RDY_BUSY;  // check if flash is busy
    DF_CHIP_SELECT; 
//緩沖區1為84H  緩沖區2為87H
SendSPIByte(AUTO_PAGE_REWRITE_THROUGH_B1);
        SendSPIByte((unsigned char)(AT450XXPageAddr >> 7));
        SendSPIByte((unsigned char)(AT450XXPageAddr << 1 + start_addr>>8));
    SendSPIByte((unsigned char)start_addr);
    for (i=0;i<len;i++)
    SendSPIByte(buffer[i]);
DF_CHIP_NOSELECT;
}

//寫緩存+擦除+緩存寫主存
void FlashAutoProgViaBuffer2(unsigned int start_addr, unsigned int len,unsigned 
char *buffer) //將指定數據通過緩存2寫入Flash指定位置(先擦除)
{
    unsigned int  i;
DF_RDY_BUSY;  // check if flash is busy
    DF_CHIP_SELECT; 
//緩沖區1為84H  緩沖區2為87H
SendSPIByte(AUTO_PAGE_REWRITE_THROUGH_B2);
        SendSPIByte((unsigned char)(AT450XXPageAddr >> 7));
        SendSPIByte((unsigned char)(AT450XXPageAddr << 1 + start_addr>>8));
    SendSPIByte((unsigned char)start_addr);
    for (i=0;i<len;i++)
    SendSPIByte(buffer[i]);
DF_CHIP_NOSELECT;
}
sfr16 DP       = 0x82;                 // data pointer
sfr16 TMR3RL   = 0x92;                 // Timer3 reload value
sfr16 TMR3     = 0x94;                 // Timer3 counter
sfr16 ADC0     = 0xbe;                 // ADC0 data
sfr16 ADC0GT   = 0xc4;                 // ADC0 greater than window

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
樱花草国产18久久久久| 国产乱一区二区| 国产高清久久久久| 欧美午夜一区二区| 国产欧美一区二区三区鸳鸯浴 | 综合激情成人伊人| 强制捆绑调教一区二区| 色婷婷av一区二区三区之一色屋| 久久久久久久久97黄色工厂| 日韩av在线免费观看不卡| 9l国产精品久久久久麻豆| 日韩欧美国产精品一区| 日本中文字幕不卡| 欧美午夜影院一区| 亚洲最新在线观看| 91在线观看视频| 国产精品毛片久久久久久久| 国产尤物一区二区在线 | 在线观看日韩电影| 亚洲特黄一级片| 不卡一卡二卡三乱码免费网站| 久久这里只有精品首页| 久久99精品久久久久久久久久久久| 欧美日韩三级视频| 午夜影院在线观看欧美| 欧美久久久久久久久久| 亚洲一区在线观看视频| 欧美性大战久久| 亚洲一卡二卡三卡四卡| 色呦呦日韩精品| 一区二区在线免费| 一本色道久久综合亚洲91| 亚洲欧洲日韩在线| 99re热这里只有精品免费视频| **性色生活片久久毛片| 99re热视频这里只精品| 一个色妞综合视频在线观看| 色婷婷精品大在线视频| 亚洲制服欧美中文字幕中文字幕| 欧美性高清videossexo| 日韩av一区二区在线影视| 欧美成人性战久久| 国产69精品久久99不卡| 亚洲人成小说网站色在线| 91久久免费观看| 亚洲第一激情av| 日韩欧美123| 国产乱子伦一区二区三区国色天香 | 亚洲人成在线观看一区二区| 欧美日韩一级黄| 美女视频网站黄色亚洲| 久久综合狠狠综合久久综合88 | 欧美在线视频不卡| 免费精品视频在线| 欧美国产精品劲爆| 在线欧美小视频| 欧美bbbbb| 中文字幕日韩一区二区| 欧美日韩美少妇| 国产精品一二三四五| 亚洲免费三区一区二区| 欧美一区二区视频网站| 国产高清精品久久久久| 一区二区成人在线视频| 欧美成人一区二区三区在线观看| 成人国产精品免费网站| 日韩在线一二三区| 欧美国产一区在线| 4438亚洲最大| 91亚洲男人天堂| 久久99热狠狠色一区二区| 国产精品乱人伦一区二区| 欧美年轻男男videosbes| 成人性生交大片免费| 青娱乐精品视频| 亚洲女同一区二区| 久久九九久久九九| 欧美区一区二区三区| 成人福利视频在线| 国内成人免费视频| 午夜精品成人在线| 国产精品美女久久久久久久久久久 | 91麻豆产精品久久久久久| 日本最新不卡在线| 亚洲女性喷水在线观看一区| 久久久三级国产网站| 91精品久久久久久久91蜜桃| 99久久综合狠狠综合久久| 激情成人午夜视频| 日韩高清不卡一区二区| 亚洲欧美aⅴ...| 欧美激情在线观看视频免费| 欧美一区二区三区视频在线| 色av成人天堂桃色av| 成人午夜av电影| 国产成人综合精品三级| 国内欧美视频一区二区| 热久久免费视频| 日韩精品电影在线| 亚洲午夜久久久久久久久电影网 | 精品福利一二区| 这里是久久伊人| 欧美天堂一区二区三区| 色呦呦国产精品| 91论坛在线播放| 97久久超碰精品国产| www.成人在线| 99久久免费国产| 成人av影院在线| av激情亚洲男人天堂| 国产91精品入口| 不卡一区二区三区四区| 99久久免费精品| 91亚洲大成网污www| 99在线热播精品免费| 99r精品视频| 欧美性一级生活| 欧美日韩精品二区第二页| 欧美日韩国产小视频| 欧美久久久久中文字幕| 91精品国产欧美一区二区18| 欧美一级搡bbbb搡bbbb| 欧美成人性福生活免费看| 精品久久久久av影院| 久久久不卡影院| 国产精品国产馆在线真实露脸| 国产精品女同一区二区三区| 综合自拍亚洲综合图不卡区| 亚洲蜜臀av乱码久久精品蜜桃| 一区二区三区四区乱视频| 午夜精品久久久久久| 久久精品国产精品亚洲综合| 国产乱子伦视频一区二区三区 | 欧美mv日韩mv国产网站app| 精品蜜桃在线看| 欧美国产日本韩| 一区二区三区日韩欧美| 日韩电影在线免费观看| 国产麻豆精品视频| 色婷婷综合视频在线观看| 欧美高清激情brazzers| 精品国产91亚洲一区二区三区婷婷| 欧美高清在线视频| 一区二区三区视频在线看| 欧美aⅴ一区二区三区视频| 国产999精品久久| 欧美在线免费播放| 久久一区二区视频| 夜夜嗨av一区二区三区四季av| 美女一区二区三区| 97aⅴ精品视频一二三区| 欧美久久久久中文字幕| 国产精品理伦片| 日本不卡一区二区三区| 成人av午夜电影| 欧美一二区视频| 综合久久综合久久| 九色porny丨国产精品| 一本大道久久a久久综合婷婷| 欧美zozo另类异族| 亚洲国产精品久久久男人的天堂| 久久99精品国产.久久久久| 色偷偷久久人人79超碰人人澡| 精品美女被调教视频大全网站| 1024成人网| 国产一区二区h| 欧美一区永久视频免费观看| 国产精品久久久久久久久免费相片| 亚洲第一综合色| 91日韩在线专区| 欧美国产日本韩| 国产乱一区二区| 欧美一区二区三区男人的天堂| 一区二区三区中文字幕电影| 国产麻豆成人传媒免费观看| 91精品国产综合久久国产大片 | 欧美亚洲禁片免费| 国产欧美日韩视频在线观看| 另类人妖一区二区av| 欧美三片在线视频观看| 自拍偷拍欧美精品| 国产91丝袜在线播放九色| 日韩女优视频免费观看| 日韩在线观看一区二区| 欧美性xxxxxxxx| 亚洲尤物视频在线| 91亚洲国产成人精品一区二区三| 国产欧美日韩激情| 国产九色精品成人porny| 日韩精品在线网站| 美女被吸乳得到大胸91| 91精品国产综合久久久久久| 亚洲成人av资源| 精品视频一区二区三区免费| 亚洲一区二区三区在线看 | 成人在线视频一区二区| 日韩精品一区二区三区四区| 久久精品国产久精国产| 精品福利一二区| 国产精品亚洲一区二区三区在线|