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

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

?? sst39vf200a.txt

?? SST 系列Nor flash 的讀寫源碼
?? TXT
?? 第 1 頁 / 共 3 頁
字號(hào):
/* PROCEDURE:   Program_One_Sector                                      */
/*                                                                      */
/* This procedure can be used to program a total of 2048 words of data  */
/* to the SST39VF200A.                                                  */
/*                                                                      */
/* Input:                                                               */
/*           Src     SOURCE address containing the data which will be   */
/*                   written to the 39VF200A                            */
/*           Dst     DESTINATION address which will be written with the */
/*                   data passed in from Src                            */
/*                                                                      */
/* Output:                                                              */
/*           None                                                       */
/************************************************************************/

void Program_One_Sector (WORD far *Src,    WORD far *Dst)
{
        WORD far *Temp;
        WORD far *SourceBuf;
        WORD far *DestBuf;
        int Index;

        SourceBuf = Src;
        DestBuf = Dst;

        Erase_One_Sector(Dst);          /* erase the sector first */

        for (Index = 0; Index < SECTOR_SIZE; Index++)
        {
            Temp =  (WORD far *)0xC0005555;
            /* set up address to be C000:5555h          */
            *Temp = 0xAAAA;
            /* write data 0xAAAA to the address         */
            Temp =  (WORD far *)0xC0002AAA;
            /* set up address to be C000:2AAAh          */
            *Temp = 0x5555;
            /* write data 0x5555 to the address         */
            Temp =  (WORD far *)0xC0005555;
            /* set up address to be C000:5555h          */
            *Temp = 0xA0A0;
            /* write data 0xA0A0 to the address         */
            Temp = DestBuf;
            /* save the original Destination address    */
            *DestBuf++ = *SourceBuf++;
            /* transfer data from source to destination */
            Check_Toggle_Ready(Temp);
            /* wait for TOGGLE bit to get ready         */
        }
}


/************************************************************************/
/* PROCEDURE:   Program_One_Block                                       */
/*                                                                      */
/* This procedure can be used to program a total of 32k words of data   */
/* to the SST39VF200A.                                                  */
/*                                                                      */
/* Input:                                                               */
/*           Src     SOURCE address containing the data which will be   */
/*                   written to the 39VF200A                            */
/*           Dst     DESTINATION address which will be written with the */
/*                   data passed in from Src                            */
/*                                                                      */
/* Output:                                                              */
/*           None                                                       */
/************************************************************************/

void Program_One_Block (WORD far *Src,    WORD far *Dst)
{
        WORD far *Temp;
        WORD far *SourceBuf;
        WORD far *DestBuf;
        int Index;

        SourceBuf = Src;
        DestBuf = Dst;

        Erase_One_Block(Dst);          /* erase the sector first */

        for (Index = 0; Index < BLOCK_SIZE; Index++)
        {
            Temp =  (WORD far *)0xC0005555;
            /* set up address to be C000:5555h          */
            *Temp = 0xAAAA;
            /* write data 0xAAAA to the address         */
            Temp =  (WORD far *)0xC0002AAA;
            /* set up address to be C000:2AAAh          */
            *Temp = 0x5555;
            /* write data 0x5555 to the address         */
            Temp =  (WORD far *)0xC0005555;
            /* set up address to be C000:5555h          */
            *Temp = 0xA0A0;
            /* write data 0xA0A0 to the address         */
            Temp = DestBuf;
            /* save the original Destination address    */
            *DestBuf++ = *SourceBuf++;
            /* transfer data from source to destination */
            Check_Toggle_Ready(Temp);
            /* wait for TOGGLE bit to get ready         */
        }
}


/************************************************************************/
/* PROCEDURE:    Check_Toggle_Ready                                     */
/*                                                                      */
/* During the internal program cycle, any consecutive read operation    */
/* on DQ6 will produce alternating 0's and 1's (i.e. toggling between   */
/* 0 and 1). When the program cycle is completed, DQ6 of the data will  */
/* stop toggling. After the DQ6 data bit stops toggling, the device is  */
/* ready for next operation.                                            */
/*                                                                      */
/* Input:                                                               */
/*           Dst        must already be set-up by the caller            */
/*                                                                      */
/* Output:                                                              */
/*           None                                                       */
/************************************************************************/

void Check_Toggle_Ready (WORD far  *Dst)
{
        BYTE Loop = TRUE;
        WORD PreData;
        WORD CurrData;
        unsigned long TimeOut = 0;

        PreData = *Dst;
        PreData = PreData & 0x4040;
        while ((TimeOut< 0x07FFFFFF) && (Loop))
        {
            CurrData = *Dst;
            CurrData = CurrData & 0x4040;
            if (PreData == CurrData)
                    Loop = FALSE;   /* ready to exit the while loop */
            PreData = CurrData;
            TimeOut++;
        }
}


/************************************************************************/
/* PROCEDURE:   Check_Data_Polling                                      */
/*                                                                      */
/* During the internal program cycle, any attempt to read DQ7 of the    */
/* last byte loaded during the page/byte-load cycle will receive the    */
/* complement of the true data.  Once the program cycle is completed,   */
/* DQ7 will show true data.                                             */
/*                                                                      */
/* Input:                                                               */
/*           Dst        must already be set-up by the caller            */
/*           True       Data is the original (true) data                */
/*                                                                      */
/* Output:                                                              */
/*           None                                                       */
/************************************************************************/

void Check_Data_Polling (WORD far  *Dst,       WORD TrueData)
{
        BYTE Loop = TRUE;
        WORD CurrData;
        unsigned long TimeOut = 0;

        TrueData = TrueData &  0x8080;
        while ((TimeOut< 0x07FFFFFF) && (Loop))
        {
                CurrData = *Dst;
                CurrData = CurrData & 0x8080;
                if (TrueData == CurrData)
                        Loop = FALSE;   /* ready to exit the while loop  */
                TimeOut++;
        }
}


8086 ASSEMBLY LANGUAGE DRIVERS

; ======================================================================
; Copyright Silicon Storage Technology, Inc. (SST), 1994-2001
; EXAMPLE 8086 assembly Drivers for SST39VF200A 2 Mbit MultiPurpose Flash
; Frank Cirimele,  Silicon Storage Technology, Inc.
;
; Revision 1.0, Sept. 12, 2001
;
; This file requires these external "timing" routines:
;
;       1.)  Delay_150_Nano_Seconds
;       2.)  Delay_25_Milli_Seconds
;       3.)  Delay_100_Milli_Seconds
; ======================================================================

SECTOR_SIZE             EQU     2048    ; Must be 2048 bytes for SST39VF200A
BLOCK_SIZE              EQU     32768	; Must be 32K words for 39VF200A

SST_ID                  EQU     00BFh  ; SST Manufacturer's ID code
SST_SST39VF200          EQU     2789h  ; SST SST39VF200A internal code

ABS_SEGMENT     EQU     0C000h

extrn   Delay_150_Nano_Seconds:near
extrn   Delay_25_Milli_Seconds:near
extrn   Delay_100_Milli_Seconds:near


;=======================================================================
; PROCEDURE:    Check_SST_SST39VF200
;
; This procedure decides whether a physical hardware device has a 
; SST39VF200A 2 Mbit Multi-Purpose Flash installed or not.
;
; Input:
;       None
;
; Output:
;       carry bit:   CLEARED means a SST39VF200A is installed
;       carry bit:   SET means a SST39VF200A is NOT installed
;
;=======================================================================

Check_SST_SST39VF200       proc    near

        push    ax                              ; save registers
   	push    ds
	pushf 					; save interrupt state				
	; It is mandatory to maintain pushf as the last push instruction. 						     	
	
        cli                                     ; disable interrupts
        mov     ax, ABS_SEGMENT                 ; set up data segment
        mov     ds, ax

        mov     ds:word ptr [5555h], 0AAAAh     ; issue the 3-byte product ID
        mov     ds:word ptr [2AAAh], 05555h     ; command to the SST39VF200A
        mov     ds:word ptr [5555h], 09090h

        call    Delay_150_Nano_Seconds          ; insert delay = Tida

        mov     ax, ds:[0]
        cmp     ax, SST_ID                      ; is this a SST part?
        jne     CSC5                            ; NO, then return Carry set
        mov     ax, ds:[1]
        cmp     ax, SST_SST39VF200              ; is it a SST39VF200A?
        jne     CSC5                            ; NO, then Non-SST part and
                                                ; set Carry flag
CSC4:
        pop	ax                              ; get flags from stack
        and	ax, 0FFFEh                      ; and clear carry flag
        jmp     short CSC6

CSC5:
        pop	ax                              ; get flags from stack
        or	ax, 0001h                       ; and set carry flag

CSC6:
	push	ax				; return flags to stack

;
; Issue the Software Product ID Exit code thus returning the SST39VF200A
; to the read operation mode.
;

        mov     ds:word ptr [5555h], 0AAAAh     ; issue the 3-byte product ID
        mov     ds:word ptr [2AAAh], 05555h     ; exit command to the SST39VF200A
        mov     ds:word ptr [5555h], 0F0F0h

        call    Delay_150_Nano_Seconds		; insert delay = Tida

        popf                                    ; restore flags
        pop     ds                              ; restore registers
        pop     ax

        ret

Check_SST_SST39VF200 endp


;=======================================================================
; PROCEDURE:    CFI_Query
;
; This procedure provides access to the CFI information embedded within
; the SST39VF200A 2 Mbit Multi-Purpose Flash device.
;
; Input:
;       None
;
; Output:
;       None
;
;=======================================================================

CFI_Query       proc    near

        pushf					; save interrupt state
	push    ax                              ; save registers
        push    ds
	

        cli                                     ; disable interrupts
        mov     ax, ABS_SEGMENT                 ; set up the ds register
        mov     ds, ax

        mov     ds:word ptr [5555h], 0AAAAh     ; issue the 3-byte product ID
        mov     ds:word ptr [2AAAh], 05555h     ; command to the SST39VF200A														
        mov     ds:word ptr [5555h], 09898h

        call    Delay_150_Nano_Seconds		; insert delay = Tida

; -----------------------------------
;   Perform all CFI operations here
;   NOTE:  NO sample code provided
; -----------------------------------


        mov     ds:word ptr [5555h], 0AAAAh     ; issue the 3-byte product ID
        mov     ds:word ptr [2AAAh], 05555h     ; exit command to the SST39VF200A
        mov     ds:word ptr [5555h], 0F0F0h

        call    Delay_150_Nano_Seconds		; insert delay = Tida

        pop     ds                              ; restore registers
        pop     ax
	popf					; restore flags

        ret

CFI_Query       endp


; =====================================================================
; PROCEDURE:    Erase_One_Sector
;
; This procedure can be used to erase a sector, or total of 2048 bytes,
; in the SST39VF200A.
;
; Input:
;       es:di   points to the beginning address of the "Destination" 
;               sector which will be erased.
;               ==> Note: The address MUST be on a sector boundary,
;                         that is, a multiple of 2048.
;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成a人无v码亚洲福利| 色美美综合视频| 国产亚洲精品中文字幕| 国产91精品免费| 中文字幕亚洲一区二区va在线| 91网站最新地址| 亚洲综合免费观看高清完整版在线| 在线精品视频免费观看| 日本免费新一区视频| 精品国产伦一区二区三区免费| 久草热8精品视频在线观看| 国产日韩精品一区二区三区| 本田岬高潮一区二区三区| 一个色妞综合视频在线观看| 欧美日韩国产综合草草| 久久成人麻豆午夜电影| 国产欧美久久久精品影院| 色激情天天射综合网| 日韩av电影免费观看高清完整版在线观看 | 国产精品资源站在线| 国产精品天干天干在观线| 在线免费观看不卡av| 免费成人小视频| 国产精品传媒入口麻豆| 欧美精品在线视频| 国产91精品一区二区| 亚洲国产精品嫩草影院| 久久久久国产精品人| 一本大道av一区二区在线播放| 日韩电影在线一区二区| 国产精品视频看| 91麻豆精品国产无毒不卡在线观看| 国产一区在线不卡| 亚洲影视资源网| 久久老女人爱爱| 欧美无乱码久久久免费午夜一区 | 男女男精品视频| 国产精品女上位| 欧美精品一二三| 成人在线视频一区| 丝袜美腿亚洲综合| 国产精品色噜噜| 91精品一区二区三区久久久久久| 成人午夜免费视频| 日韩福利视频导航| 亚洲人被黑人高潮完整版| 日韩丝袜美女视频| 色一情一乱一乱一91av| 激情久久五月天| 亚洲国产成人porn| 国产精品久久久一区麻豆最新章节| 欧美日韩午夜在线| 成人丝袜高跟foot| 美日韩一区二区| 亚洲最新视频在线观看| 久久精品视频一区| 91精品在线麻豆| 一本色道久久综合亚洲91| 国内国产精品久久| 日韩国产在线观看一区| 亚洲天堂免费看| 国产亚洲综合在线| 日韩欧美一级在线播放| 在线视频欧美精品| 成人激情小说乱人伦| 极品少妇xxxx偷拍精品少妇| 亚洲妇熟xx妇色黄| 中文字幕亚洲区| 日韩午夜小视频| 97久久精品人人爽人人爽蜜臀| 久久99久国产精品黄毛片色诱| 一区二区三区日韩欧美精品| 国产女人18毛片水真多成人如厕| 欧美一区二区日韩一区二区| 日本乱码高清不卡字幕| 福利一区在线观看| 韩国av一区二区三区在线观看| 亚洲国产乱码最新视频| 亚洲色图色小说| 日本一二三四高清不卡| 日韩三级av在线播放| 欧美日韩另类国产亚洲欧美一级| 91麻豆免费看| 不卡视频免费播放| 国产91精品一区二区麻豆亚洲| 国模一区二区三区白浆| 久久精品国产99国产精品| 天天色天天操综合| 亚洲国产乱码最新视频| 一区二区三区欧美激情| 成人免费在线视频观看| 中文字幕av资源一区| 国产清纯在线一区二区www| 久久综合资源网| 精品精品国产高清a毛片牛牛| 欧美一区二区视频在线观看| 欧美日韩国产另类一区| 欧美日韩久久久一区| 欧美日韩午夜影院| 欧美疯狂性受xxxxx喷水图片| 欧美三区在线观看| 亚洲欧洲成人自拍| 国产精品伦理一区二区| 中文字幕不卡在线| 成人免费在线视频| 亚洲精品国产高清久久伦理二区| 18欧美乱大交hd1984| 亚洲视频免费在线| 亚洲精品成人天堂一二三| 亚洲精品日韩综合观看成人91| 亚洲欧美电影一区二区| 亚洲在线视频网站| 亚洲综合一区二区| 亚洲国产成人91porn| 亚洲观看高清完整版在线观看| 亚洲图片一区二区| 日韩综合小视频| 免费成人在线播放| 国产一区二三区好的| 国产高清精品网站| av激情成人网| 91久久精品国产91性色tv| 欧美在线色视频| 欧美精品色一区二区三区| 欧美一区二区三区精品| 欧美成人一区二区三区在线观看 | 欧美日韩亚州综合| 欧美一级二级在线观看| 欧美大片免费久久精品三p| 久久久三级国产网站| 久久精品亚洲麻豆av一区二区| 国产精品久久久久久久岛一牛影视| 亚洲女人****多毛耸耸8| 午夜婷婷国产麻豆精品| 美女爽到高潮91| 国产精品66部| 色综合久久中文综合久久97 | 欧美日韩五月天| 欧美成人一级视频| 国产精品嫩草影院av蜜臀| 亚洲另类色综合网站| 天天操天天干天天综合网| 美女精品自拍一二三四| 成人亚洲精品久久久久软件| 色综合天天做天天爱| 欧美人狂配大交3d怪物一区 | 精品免费国产一区二区三区四区| 久久久久久久久久久黄色| 国产精品麻豆网站| 首页国产欧美久久| 国产精品一二三四五| 色乱码一区二区三区88| 欧美一级欧美三级在线观看| 国产日产欧产精品推荐色| 一区二区三区日韩在线观看| 久久精品国产免费| 99久久精品免费| 91精品国产91久久久久久最新毛片| 久久久三级国产网站| 一区二区三区91| 国内精品国产三级国产a久久| 91视频在线观看| 日韩一区二区三区电影| 中文子幕无线码一区tr| 午夜电影久久久| 成人综合日日夜夜| 88在线观看91蜜桃国自产| 国产日韩欧美综合一区| 国产精品资源在线看| 99久免费精品视频在线观看| 欧美精选在线播放| 国产无一区二区| 午夜精品123| www.日韩大片| 日韩一区二区电影| 亚洲欧美偷拍卡通变态| 另类欧美日韩国产在线| 色呦呦网站一区| 久久久无码精品亚洲日韩按摩| 亚洲五码中文字幕| 高清成人免费视频| 91精品一区二区三区久久久久久 | 日韩女同互慰一区二区| 136国产福利精品导航| 麻豆国产欧美日韩综合精品二区 | 美国欧美日韩国产在线播放| 99久久久免费精品国产一区二区| 日韩欧美激情一区| 亚洲国产精品久久一线不卡| 国产成人午夜高潮毛片| 5月丁香婷婷综合| 亚洲精品久久久久久国产精华液| 国产一区二区不卡| 欧美一级日韩不卡播放免费| 亚洲免费av高清| 成人激情免费电影网址| 欧美电影免费观看高清完整版在| 亚洲影视在线观看| 91美女视频网站| 欧美一区二区私人影院日本|