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

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

?? lib_flash_at49.c

?? atmel flash 燒寫源代碼
?? C
字號:
//*-----------------------------------------------------------------------------//*      ATMEL Microcontroller Software Support  -  ROUSSET  -//*-----------------------------------------------------------------------------//* The software is delivered "AS IS" without warranty or condition of any//* kind, either express, implied or statutory. This includes without//* limitation any warranty or condition with respect to merchantability or//* fitness for any particular purpose, or against the infringements of//* intellectual property rights of others.//*-----------------------------------------------------------------------------//* File Name               : lib_flash_at49.c//* Object                  : FLASH programmer for ://*                             - AT49BV1604/AT49BV1604T//*                             - AT49BV1614/AT49BV1604T//*                             - AT49BV8011/AT49BV8011T//*                             - AT49BV8011/AT49BV8011T//*//* 1.1 06/11/00 JPP        : Creation//*-----------------------------------------------------------------------------//* --------------------------- include file ----------------------------------#include    "lib_flash_at49.h"//* --------------------------- Static function -------------------------------//*----------------------------------------------------------------------------//* Function Name       : Pause//* Object              : wait flash responce//* Input Parameters    : none//* Output Parameters   : none//*----------------------------------------------------------------------------static void Pause(void){    int count;    for (count=0;count < TIME_OUT/10 ;count++)    {        /* Do nothing - just wait */    }}//* --------------------------- Export function -------------------------------//*----------------------------------------------------------------------------//* Function Name       : flash_at49_identify//* Object              : Get the device id//* Input Parameters    : <sart_addr> Flash base address//* Output Parameters   : device_code or 0xFFFF if bad manuf code//*----------------------------------------------------------------------------flash_word flash_at49_identify ( flash_word *base_addr )//* Begin{    flash_word      manuf_code ;    flash_word      device_code ;    Pause();    //* Enter Software Product Identification Mode    *(base_addr + FLASH_SEQ_ADD1) = FLASH_CODE1;    *(base_addr + FLASH_SEQ_ADD2) = FLASH_CODE2;    *(base_addr + FLASH_SEQ_ADD1) = ID_IN_CODE;    //* Read Manufacturer and device code from the device    manuf_code  = *base_addr ;    device_code = *(base_addr + 1) ;    //* Exit Software Product Identification Mode    *(base_addr + FLASH_SEQ_ADD1) = FLASH_CODE1;    *(base_addr + FLASH_SEQ_ADD2) = FLASH_CODE2;    *(base_addr + FLASH_SEQ_ADD1) = ID_OUT_CODE;    if ( manuf_code != ATMEL_MANUFACTURED )    {        return (FLASH_AT49BV_UNKNOW);    }    //* Return pointer to Flash found    return ( device_code ) ;}//*----------------------------------------------------------------------------//* Function Name       : flash_wait_flash_ready//* Object              : wait the end of write//* Input Parameters    : <address> Adress to write//*                       <data> data write at the  <address>//* Output Parameters   : if data write TRUE or FALSE if time out//*----------------------------------------------------------------------------int flash_wait_flash_ready ( flash_word *address, flash_word data ){//* Begin    int i = 0 ;    //* While two consecutive read don't give same value or timeout    while (( *address != data ) && ( i++ < TIME_OUT )) ;    //* If timeout    if ( i < TIME_OUT )    {        return ( TRUE ) ;    }    //* Else    else    {        return ( FALSE ) ;    }    //* Endif}//* End//*----------------------------------------------------------------------------//* Function Name       : flash_at49_check_sector_erased//* Object              : check if sector is erased//* Input Parameters    : <sector_addr> base sector address//*                       <size> sector size in byte//* Output Parameters   : if data sector erase TRUE or FALSE//*----------------------------------------------------------------------------int flash_at49_check_sector_erased ( flash_word *sector_addr,int size)//* Begin{    int     i ;    flash_word  read_data ;    //* For each word of the sector    for ( i = 0 ; i < (size/2) ; i ++ )    {        //* Check erased value reading, if not        if (( read_data = *(sector_addr + i)) != (flash_word)0xFFFF )        {            return ( FALSE ) ;        }        //* Endif    }    //* Endfor    //* Return True    return ( TRUE ) ;}//* End//*----------------------------------------------------------------------------//* Function Name       : flash_at49_check_flash_erased//* Object              : check if all sector are erased//* Input Parameters    : <flash> Flash descriptor//*                       <sector_addr> base sector address//* Output Parameters   : if data sector erase TRUE or FALSE//*----------------------------------------------------------------------------int flash_at49_check_flash_erased ( FlashAt49BVDef *flash, flash_word *addr_base )//* Begin{    int         i ;    flash_word  read_data ;    int         size = flash->flash_size ;    //* For each word of the flash    for ( i = 0 ; i < (size/2) ; i ++ )    {        //* Check erased value reading, if not        if (( read_data = *(addr_base + i)) != (flash_word)0xFFFF )        {            //*  return False            return ( FALSE ) ;        }        //* Endif    }    //* Endfor    //* Return True    return ( TRUE ) ;}//* End//*----------------------------------------------------------------------------//* Function Name       : flash_at49_erase_flash//* Object              : ERASSE FLASH//* Input Parameters    : <flash> Flash descriptor//*                       <base_address> base sector address//* Output Parameters   : if data sector erase TRUE or FALSE//*----------------------------------------------------------------------------int flash_at49_erase_flash ( FlashAt49BVDef *flash,flash_word *base_addr )//* Begin{    int     trial = 0;    int     cmpt;    int     status= TRUE;    //* While flash is not erased or too much erasing performed    while (( flash_at49_check_flash_erased ( flash, base_addr ) == FALSE ) &&           ( trial++ < NB_TRIAL_ERASE ))    {        //* Enter Sector Erase Sequence codes        *(base_addr + FLASH_SEQ_ADD1) = FLASH_CODE1;        *(base_addr + FLASH_SEQ_ADD2) = FLASH_CODE2;        *(base_addr + FLASH_SEQ_ADD1) = ERASE_SECTOR_CODE1;        *(base_addr + FLASH_SEQ_ADD1) = FLASH_CODE1;        *(base_addr + FLASH_SEQ_ADD2) = FLASH_CODE2;        *(base_addr + FLASH_SEQ_ADD1) = CHIP_ERASE_CODE;        //* wait        for ( cmpt = 0 ; cmpt < DELAY_ERASE ; cmpt ++ ) ;        //* Wait for Flash Ready after Erase, if timeout        if ( flash_wait_flash_ready ( base_addr,0xFFFF ) == FALSE )        {            //* return False            if ( trial==NB_TRIAL_ERASE) return (FALSE) ;        }        //* Endif    }    //* EndWhile    //* Return True    return ( status ) ;}//* End//*----------------------------------------------------------------------------//* Function Name       : flash_at49_erase_sector//* Object              : erase flash sector//* Input Parameters    : <base_addr> Flash base address//*                       <sector_addr> Flash sector address//* Output Parameters   : none//*----------------------------------------------------------------------------int  flash_at49_erase_sector ( flash_word *base_addr,flash_word *sector_addr)//* Begin{    //* Enter Sector Erase Sequence codes    *(base_addr + FLASH_SEQ_ADD1) = FLASH_CODE1;    *(base_addr + FLASH_SEQ_ADD2) = FLASH_CODE2;    *(base_addr + FLASH_SEQ_ADD1) = ERASE_SECTOR_CODE1;    *(base_addr + FLASH_SEQ_ADD1) = FLASH_CODE1;    *(base_addr + FLASH_SEQ_ADD2) = FLASH_CODE2;    *sector_addr = ERASE_SECTOR_CODE2 ;    //* Wait for Flash Ready after Erase, if timeout    if ( flash_wait_flash_ready ( sector_addr, (flash_word)0xFFFF ) == FALSE )    {          return(FALSE);    }    return(TRUE);}//* End//*----------------------------------------------------------------------------//* Function Name       : flash_at49_write_flash//* Object              : Write short in Flash//* Input Parameters    ://* Output Parameters   : none//*----------------------------------------------------------------------------int flash_at49_write_flash ( flash_word *base_addr,flash_word *load_addr,flash_word data ){    flash_word  read_data ;    //* Enter Programming code sequence    *(base_addr + FLASH_SEQ_ADD1) = FLASH_CODE1 ;    *(base_addr + FLASH_SEQ_ADD2) = FLASH_CODE2 ;    *(base_addr + FLASH_SEQ_ADD1) = WRITE_CODE ;    *load_addr = data ;    //* Wait for Flash ready after erasing, if timeout    if ( flash_wait_flash_ready ( load_addr, data ) != TRUE )    {        return ( FALSE ) ;    }    //* Endif    //* If Data written does not equal data    if (( read_data = *load_addr ) != data )    {        //* Return False        return ( FALSE );    }    //* Endif    //* Return False    return ( TRUE ) ;}//* End

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道久久综合亚洲91| 尤物视频一区二区| 91同城在线观看| 久久爱另类一区二区小说| 一区二区三区欧美视频| 亚洲欧洲美洲综合色网| 精品日韩一区二区三区免费视频| 91福利精品视频| 91在线免费播放| av影院午夜一区| 91原创在线视频| 久久久久久亚洲综合| 久久这里只精品最新地址| 久久蜜桃av一区二区天堂| 亚洲电影在线播放| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲免费色视频| 天天av天天翘天天综合网色鬼国产 | 亚洲国产综合91精品麻豆| 国产一区二区三区在线看麻豆| 久久av资源站| 日韩一区二区中文字幕| 久久久久亚洲蜜桃| 久久电影国产免费久久电影| 欧美日本一区二区在线观看| 欧美一区二区在线免费观看| 亚洲精品一区二区三区精华液| 国产亚洲人成网站| 亚洲免费高清视频在线| 不卡的av电影| 欧美色电影在线| 日韩亚洲欧美在线观看| 亚洲国产aⅴ成人精品无吗| 99国产麻豆精品| 国产精品久久久久婷婷二区次 | 久久久久久久综合狠狠综合| 久久精品国产一区二区三| 91精品国产综合久久蜜臀| 久久久综合激的五月天| 国产剧情在线观看一区二区 | 风间由美一区二区三区在线观看| av高清不卡在线| 亚洲女同一区二区| 在线观看日韩一区| 国产日韩精品久久久| 亚洲国产视频直播| 欧美午夜精品久久久久久孕妇| 久久综合999| 国产高清精品网站| 91精品国产日韩91久久久久久| 日韩和欧美一区二区三区| 成人爱爱电影网址| 亚洲欧美一区二区不卡| 欧美吻胸吃奶大尺度电影| 亚洲国产精品久久不卡毛片 | 久久99精品国产麻豆婷婷| 欧美人xxxx| 狂野欧美性猛交blacked| 久久中文字幕电影| 91天堂素人约啪| 日韩成人午夜电影| 欧美日韩一区三区四区| 免费国产亚洲视频| 欧美一区二区私人影院日本| 韩国一区二区三区| 精品国产伦理网| 99久久er热在这里只有精品15| 一区二区三区高清| 精品久久人人做人人爱| 91免费视频网址| 日本成人在线网站| 国产精品日韩成人| 成人免费视频国产在线观看| 欧美精品一区二区三区蜜桃视频| 成人avav影音| 老司机免费视频一区二区| 中文字幕亚洲一区二区va在线| 欧美日韩一区 二区 三区 久久精品| 久久成人av少妇免费| 一区二区三区中文免费| 欧美精品一区二区三区久久久| 色婷婷av久久久久久久| 久草热8精品视频在线观看| 亚洲精品一二三区| 久久久综合激的五月天| 777亚洲妇女| 色呦呦国产精品| 成人丝袜高跟foot| 久久国产精品第一页| 亚洲国产欧美日韩另类综合| 国产拍欧美日韩视频二区| 日韩三级视频中文字幕| 在线日韩国产精品| 成人av在线网站| 激情偷乱视频一区二区三区| 亚洲电影第三页| 亚洲精品中文在线影院| 中文字幕视频一区二区三区久| 欧美一区二区三区视频在线观看| 色欧美日韩亚洲| 99久久精品国产毛片| 国内外精品视频| 美女国产一区二区三区| 国产日韩欧美精品一区| 精品国产乱码久久久久久1区2区| 欧美三级蜜桃2在线观看| 色呦呦网站一区| 色欧美乱欧美15图片| 99精品欧美一区二区三区小说 | 国产一区二区女| 日本不卡视频在线观看| 亚洲成国产人片在线观看| 亚洲欧美日韩电影| 综合婷婷亚洲小说| 日韩一区二区免费视频| 欧美精品丝袜中出| 国产精品伊人色| 国产黄色精品网站| 风间由美中文字幕在线看视频国产欧美 | 午夜精品久久久久久久久久 | 中文字幕一区二区三| 久久久精品tv| 久久久久久久国产精品影院| 26uuu成人网一区二区三区| 精品粉嫩aⅴ一区二区三区四区| 久久综合资源网| 国产精品麻豆久久久| 亚洲色图.com| 亚洲成av人片在线| 日韩av一二三| 国产精品一区二区三区99| 国产东北露脸精品视频| 成人国产精品免费网站| 日本道精品一区二区三区| 欧美日韩国产高清一区二区| 91精品国模一区二区三区| 精品国产伦一区二区三区观看方式| 国产亚洲短视频| 亚洲乱码日产精品bd| 亚洲国产成人高清精品| 久久99精品久久久久久国产越南 | 91精品黄色片免费大全| 26uuu国产在线精品一区二区| 国产精品美女久久久久久| 亚洲高清免费视频| 久久国产精品99精品国产| 国产精品白丝jk黑袜喷水| 91色porny蝌蚪| 在线不卡中文字幕| 国产欧美精品一区二区色综合| 亚洲人被黑人高潮完整版| 丝袜美腿亚洲一区二区图片| 国产美女娇喘av呻吟久久| 99精品偷自拍| 精品乱人伦小说| 一区二区三区在线观看视频| 极品瑜伽女神91| 在线精品视频一区二区三四| 欧美va亚洲va| 亚洲午夜精品17c| 国产白丝网站精品污在线入口| 欧美日韩国产小视频| 欧美国产精品久久| 国产视频一区二区三区在线观看| 亚洲伊人色欲综合网| 亚洲国产视频a| 国产精品影音先锋| 制服丝袜激情欧洲亚洲| 成人欧美一区二区三区视频网页| 日精品一区二区三区| 99精品热视频| 欧美国产日韩a欧美在线观看| 免费观看在线色综合| 91成人在线观看喷潮| 国产精品卡一卡二卡三| 另类综合日韩欧美亚洲| 欧美色图在线观看| 日韩毛片一二三区| 国产福利一区二区三区| 日韩精品一区二区三区老鸭窝 | 欧美性受xxxx黑人xyx| 国产欧美日韩一区二区三区在线观看| 午夜久久久影院| 91福利国产成人精品照片| 亚洲欧洲日韩av| 成人动漫一区二区在线| 国产午夜精品久久久久久久| 久久国产成人午夜av影院| 91麻豆精品91久久久久同性| 一区二区三区四区高清精品免费观看 | 国产精品热久久久久夜色精品三区 | 精品久久免费看| 男女男精品网站| 91精品国产91久久综合桃花| 亚洲一区二区在线视频| 波多野结衣欧美| 亚洲色图制服诱惑 | 日韩欧美国产精品| 日本欧美一区二区三区乱码| 欧美夫妻性生活|