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

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

?? l51_bank.a51

?? 完整的TCP/IP源代碼,絕對好用
?? A51
?? 第 1 頁 / 共 3 頁
字號:
$NOMOD51 NOLINES
$NOCOND
;------------------------------------------------------------------------------
;  This file is part of the BL51 / LX51 Banked Linker/Locater package
;  Copyright (c) 1988 - 2001 Keil Elektronik GmbH and Keil Software, Inc.
;  Version 2.21 (Code and Variable Banking for Classic 8051 Derivatives)
;------------------------------------------------------------------------------
;************************ Configuration Section *******************************
?B_NBANKS       EQU  8    ; Define maximum Number of Banks                    *
;                         ; following values are allowed: 2, 4, 8, 16, 32, 64 *
;                         ; for BL51 the maximum value for ?B_BANKS is 32     *
;                         ; for LX51 the maximum value for ?B_BANKS is 64     *
;                                                                             *
?B_MODE         EQU  0    ; 0 for Bank-Switching via 8051 Port                *
;                         ; 1 for Bank-Switching via XDATA Port               *
;                         ; 4 for user-provided bank switch code              *
;                                                                             *
?B_RTX          EQU  0    ; 0 for applications without real-time OS           *
;                         ; 1 for applications using the RTX-51 real-time OS  *
;                                                                             *
?B_VAR_BANKING  EQU  0    ; Variable Banking via L51_BANK (far memory support)*
;                         ; 0 Variable Banking does not use L51_BANK.A51      *
;                         ; 1 Variable Banking uses this L51_BANK.A51 module  *
; Notes: ?B_VAR_BANKING uses the 'far' and 'far const' C51 memory types to    *
;        extent the space for variables in RAM and/or ROM of classic 8051     *
;        device.  The same hardware as for code banking is used.  Program     *
;        code banking and variable banking share the same hardware I/O pins.  *
;        The C51 Compiler must be used with the VARBANKING directive.         *
;        Variable Banking is only supported with the LX51 linker/locater.     *
;                                                                             *
?B_RST_BANK     EQU  0x01 ; specifies the active code bank number after CPU   *
;                         ; Reset.  Used to reduce the entries in the         *
;                         ; INTERBANK CALL TABLE.  The value 0xFF disables    *
;                         ; this LX51 linker/locater optimization.            *
; Note:  Interbank Call Table optimization is only possible with LX51.        *
;                                                                             *
;-----------------------------------------------------------------------------*
;                                                                             *
IF  ?B_MODE = 0;                                                              *
;-----------------------------------------------------------------------------*
; if ?BANK?MODE is 0 define the following values                              *
; For Bank-Switching via 8051 Port define Port Address / Bits                 *
;                                                                             *
P_PAGE          DATA    0B9H     ; I/O Port Address                           *
;                                                                             *
?B_PORT         EQU     P_PAGE   ; default is P1                              *
?B_FIRSTBIT     EQU     0        ; default is Bit 2                           *
;-----------------------------------------------------------------------------*
ENDIF;                                                                        *
;                                                                             *
IF  ?B_MODE = 1;                                                              *
;-----------------------------------------------------------------------------*
; if ?BANK?MODE is 1 define the following values                              *
; For Bank-Switching via XDATA Port define XDATA Port Address / Bits          *
?B_XDATAPORT    EQU     0FFFFH   ; default is XDATA Port Address 0FFFFH       *
?B_FIRSTBIT     EQU     0        ; default is Bit 0                           *
;-----------------------------------------------------------------------------*
ENDIF;                                                                        *
;                                                                             *
IF  ?B_MODE = 4;                                                              *
;-----------------------------------------------------------------------------*
; if ?BANK?MODE is 4 define the following switch macros                       *
; For bank switching via user-provided bank switch code you must define for   *
; each memory bank a own macro which contains the bank switch code.  The      *
; following example shows how to use the I/O lines P1.4 and P1.7 for bank     *
; switching.  Since you can select just 4 banks with two address lines, just  *
; four macros are defined.  The number of macros must conform with the number *
; ?B_NBANKS number, i.e. for an application with 16 memory banks you must     *
; define 16 macros.                                                           *
;                                                                             *
; IMPORTANT NOTES:                                                            *
; 1. The bank switch logic must be initialized before using it.  Therefore    *
;    add the following lines of code at the end of the STARTUP.A51 file:      *
;                :                                                            *
;      EXTRN CODE (?B_SWITCH0)                                                *
;               CALL    ?B_SWITCH0    ; init bank mechanism to code bank 0    *
;               LJMP    ?C_START      ; line already exits at the end of file *
;                :                                                            *
;                                                                             *
; 2. If the bank switch macros and the additional control code generate more  *
;    than 256 bytes, you need to set the LONG_MACRO flag below.  The error    *
;    message "BANK SWITCH CODE BIGGER THAN 256 BYTES, SET LONG_MACRO TO 1"    *
;    is generated in case that this is required.                              *
;                                                                             *
; 3. The only registers that can be modified in this routines without prior   *
;    saving are:  DPTR and ACC.                                               *
;                                                                             *
;                                                                             *
LONG_MACRO      EQU  0    ; 0 default, for normal macros and up to 8 banks    *
;                         ; 1 big macro code or many banks                    *
;                                                                             *
;                                                                             *
;P1              DATA    90H      ; I/O Port Addresses                        *
;P3              DATA    0B0H     ;                                           *
P_PAGE		DATA	0B9H	 ;Porgram Page SFR
;                                                                             *
SWITCH0         MACRO            ; Switch to Memory Bank #0                   *
		MOV	A,	#0H
		MOV	P_PAGE,	A
                ENDM             ;                                            *
;                                                                             *
SWITCH1         MACRO            ; Switch to Memory Bank #1                   *
		MOV	A,	#01H
		MOV	P_PAGE,	A
                ENDM             ;                                            *
;                                                                             *
SWITCH2         MACRO            ; Switch to Memory Bank #2                   *
		MOV	A,	#02H
		MOV	P_PAGE,	A
                ENDM             ;                                            *
;                                                                             *
SWITCH3         MACRO            ; Switch to Memory Bank #3                   *
		MOV	A,	#03H
		MOV	P_PAGE,	A
                ENDM             ;                                            *
SWITCH4         MACRO            ; Switch to Memory Bank #0                   *
		MOV	A,	#04H
		MOV	P_PAGE,	A
                ENDM             ;                                            *
;                                                                             *
SWITCH5         MACRO            ; Switch to Memory Bank #1                   *
		MOV	A,	#05H
		MOV	P_PAGE,	A
                ENDM             ;                                            *
;                                                                             *
SWITCH6         MACRO            ; Switch to Memory Bank #2                   *
		MOV	A,	#06H
		MOV	P_PAGE,	A
                ENDM             ;                                            *
;                                                                             *
SWITCH7         MACRO            ; Switch to Memory Bank #3                   *
		MOV	A,	#07H
		MOV	P_PAGE,	A
                ENDM             ;                                            *
;                                                                             *
;-----------------------------------------------------------------------------*
ENDIF;                                                                        *
;									      *
IF ?B_VAR_BANKING = 1;                                                        *							        
;									      * 
XMEM EQU 0x02000000       ; LX51 xdata symbol offset: do not change!	      *
;									      *
;******* Configuration Section for uVision2 Memory Simulation Support *********
;                                                                             *
; The following settings allow you to map the physical xdata and code memory  *
; banks into simulation memory of the uVision2 Simulator.                     *
;                                                                             *
?B?XSTART EQU 0x8000      ; Start of xdata bank area                          *
?B?XEND   EQU 0xFFFF      ; Stop of xdata bank area                           *
?B?XMEM   EQU XMEM+0x010000  ; First HDATA memory bank in xdata space         *
;                                                                             *
; The above setting redirects the symbols in the area X:0x20000 .. X:0x2FFFF  *
; into the uVision2 simulation memory area for the EEPROM  V:0 .. V:0xFFFF    *
;                                                                             *
;-----------------------------------------------------------------------------*
;                                                                             *
                PUBLIC ?B?XSTART, ?B?XEND, ?B?XMEM;                           *
ENDIF;                                                                        *
;                                                                             *
;******************************************************************************
;                                                                             *
; THEORY OF OPERATION                                                         *
; -------------------                                                         *
; The section below describes the code generated by BL51 or LX51 and the      *
; operation of the L51_BANK.A51 module.  BL51/LX51 generates for each         *
; function that is located in a code memory bank and called from the common   *
; area or a different code bank and entry into the INTRABANK CALL TABLE.  The *
; INTRABANK CALL TABLE is located in the SEGMENT ?BANK?SELECT and listed in   *
; the Linker MAP file. The entries in that TABLE have the following format:   *
;                                                                             *
;   ?FCT?1:  MOV  DPTR,#FCT     ; Load Address of target FCT                  *
;            JMP  ?B_BANKn      ; Switch to Bank and Jump to Target Code      *
;                                                                             *
; Instead of directly calling the function FCT, the Linker changes the entry  *
; to ?FCT?1.  This entry selects the bank where the function FCT is located   *
; and calls that function via the routines defined in this L51_BANK.A51 file. *
; The L51_BANK.A51 file contains two sets of functions for each bank:         *
;                                                                             *
; ?B_BANKn    is a routine which saves the entry of the ?B_SWITCHn function   *
;             for the current active bank on the STACK and switches to the    *
;             bank 'n'.  Then it jumps to the address specified by the DPTR   *
;             register.  It is allowed to modify the following registers in   *
;             the ?B_BANKn routine:  A, B, R0, DPTR, PSW                      *
;                                                                             *
; ?B_SWITCHn  is a function which selects the bank 'n'.  This function is     *
;             used at the end of a user function to return to the calling     *
;             code bank.  Only the following registers may be altered in the  *
;             ?B_SWITCHn function:  R0, DPTR                                  *
;                                                                             *
; The current active bank is stored in ?B_CURRENTBANK.  RTX-51 uses this      *
; variable to restore the code bank after a task switch.  To get correct      *
; results, ?B_CURRENTBANK must be set to the code bank before the hardware    *
; switch is done, or the code banking sequences must be interrupt protected.  *
;******************************************************************************

                NAME    ?BANK?SWITCHING

                PUBLIC  ?B_NBANKS, ?B_MODE, ?B_CURRENTBANK, ?B_MASK
                PUBLIC  ?B_FACTOR, ?B_RST_BANK
IF (?B_RTX = 1)
                PUBLIC  ?B_RESTORE_BANK
ENDIF

; Standard SFR Symbols required in L51_BANK.A51
ACC     DATA    0E0H
B       DATA    0F0H
DPL     DATA    82H
DPH     DATA    83H
IE      DATA    0A8H
EA      BIT     IE.7


; generate Mask and Bank Number Information
IF      ?B_NBANKS <= 2
  MASK          EQU     00000001B
ELSEIF  ?B_NBANKS <= 4
  MASK          EQU     00000011B
ELSEIF  ?B_NBANKS <= 8
  MASK          EQU     00000111B
ELSEIF  ?B_NBANKS <= 16
  MASK          EQU     00001111B
ELSEIF  ?B_NBANKS <= 32
  MASK          EQU     00011111B
ELSE
  MASK          EQU     00111111B
ENDIF     

IF  ?B_MODE = 0 ;**************************************************************

?B_FACTOR       EQU     1 SHL ?B_FIRSTBIT

?B_MASK         EQU     MASK SHL ?B_FIRSTBIT

BANKN           MACRO   N
BANK&N           EQU     N SHL ?B_FIRSTBIT
                ENDM

CNT             SET     0

                REPT    ?B_NBANKS
                BANKN   %CNT
CNT             SET     CNT+1
                ENDM


?B_CURRENTBANK  EQU     ?B_PORT

  IF ?B_RTX = 1 OR ?B_NBANKS > 32
  ; Convert Bank No in Accu to Address * 4

  IF  ?B_FIRSTBIT = 0
  CONVBANKNO    MACRO
                RL      A
                RL      A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 1
  CONVBANKNO    MACRO
                RL      A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 2
  CONVBANKNO    MACRO
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 3
  CONVBANKNO    MACRO
                RR      A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 4
  CONVBANKNO    MACRO
                RR      A
                RR      A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 5
  CONVBANKNO    MACRO
                SWAP    A
                RL      A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 6
  CONVBANKNO    MACRO
                SWAP    A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 7
  CONVBANKNO    MACRO
                SWAP    A
                RR      A
                ENDM
  ENDIF

  ; Macro code to select the 'N'
  SWITCH        MACRO   N
                ORG     N * 4
                PUBLIC  ?B_SWITCH&N
  ?B_SWITCH&N:
                MOV     R0,#(BANK&N OR NOT ?B_MASK) 
  IF ?B_NBANKS > 32
    IF (N < 32) 
                SJMP    SWITCHBNK_H
    ELSEIF (N = 32)
      SWITCHBNK_H:
                SJMP    SWITCHBNK
    ELSEIF (N <> ?B_NBANKS-1)
                SJMP    SWITCHBNK
    ENDIF
  ELSE
    IF N <> (?B_NBANKS-1)
                SJMP    SWITCHBNK
    ENDIF
  ENDIF

                ENDM

ENDIF


IF ?B_RTX = 0 AND ?B_NBANKS <= 32
  ; Convert Bank No in Accu to Address * 8

  IF  ?B_FIRSTBIT = 0
  CONVBANKNO    MACRO
                SWAP    A
                RR      A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 1
  CONVBANKNO    MACRO
                RL      A
                RL      A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 2
  CONVBANKNO    MACRO
                RL      A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 3
  CONVBANKNO    MACRO
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 4
  CONVBANKNO    MACRO
                RR      A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 5
  CONVBANKNO    MACRO
                RR      A
                RR      A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 6
  CONVBANKNO    MACRO
                SWAP    A
                RL      A
                ENDM
  ENDIF

  IF  ?B_FIRSTBIT = 7
  CONVBANKNO    MACRO
                SWAP    A
                ENDM
  ENDIF


  ; Macro code to select the 'N'
  SWITCH        MACRO   N
                ORG     N * 8
                PUBLIC  ?B_SWITCH&N
  ?B_SWITCH&N:
    IF  N <> 0
                ORL     ?B_CURRENTBANK,#?B_MASK
    ENDIF
    IF  N <> (?B_NBANKS-1)
                ANL     ?B_CURRENTBANK,#(BANK&N OR NOT ?B_MASK) 
    ENDIF
                RET
                ENDM

ENDIF


SELECT          MACRO   N
LOCAL           XLABEL, YLABEL

                PUBLIC  ?B_BANK&N
?B_BANK&N:      
                MOV     A,?B_CURRENTBANK
                ANL     A,#?B_MASK
                CONVBANKNO         ; Convert Bank Number to Address
                PUSH    ACC
                MOV     A,#HIGH ?BANK?SWITCH
                PUSH    ACC
                PUSH    DPL
                PUSH    DPH
                LJMP    ?B_SWITCH&N
                ENDM


?BANK?SELECT    SEGMENT  CODE

                RSEG    ?BANK?SELECT
CNT             SET     0

                REPT    ?B_NBANKS
                SELECT  %CNT
CNT             SET     CNT+1

                ENDM


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产一二三| 91在线观看一区二区| 大陆成人av片| 这里只有精品99re| 亚洲欧美日韩电影| 国产传媒久久文化传媒| 欧美日韩国产在线播放网站| 欧美激情一二三区| 激情六月婷婷久久| 欧美成人一区二区三区在线观看| 亚洲美女区一区| 成人精品视频.| 精品国产乱码久久久久久夜甘婷婷 | 亚洲成人资源网| 国产成人午夜99999| 日韩视频一区二区三区| 偷拍日韩校园综合在线| 欧美午夜精品一区二区三区| 国产精品第四页| 风流少妇一区二区| 久久尤物电影视频在线观看| 日本中文字幕一区二区有限公司| 欧美在线免费视屏| 一区二区三区在线视频播放| 99久久精品免费看国产免费软件| 欧美国产精品中文字幕| 国产精品一区二区视频| 精品国产免费人成电影在线观看四季 | 色综合天天综合在线视频| 久久久久久夜精品精品免费| 日韩中文欧美在线| 91麻豆精品国产91久久久久久久久| 亚洲激情av在线| 91国偷自产一区二区开放时间| 综合久久久久久久| 99视频有精品| 亚洲精品欧美专区| 欧美亚洲国产一区二区三区va | 天涯成人国产亚洲精品一区av| 在线影院国内精品| 亚洲一区二区三区四区五区中文 | 欧美一区二区三区色| 天天综合色天天综合| 欧美视频一区二区| 美女国产一区二区三区| 日韩欧美一级特黄在线播放| 久久99精品久久久久久国产越南 | 91.成人天堂一区| 美国十次了思思久久精品导航| 久久理论电影网| 99精品1区2区| 亚洲超碰精品一区二区| 日韩欧美的一区| 波多野结衣中文字幕一区二区三区 | 成人午夜视频网站| 亚洲永久免费视频| 久久综合久久99| www.亚洲色图.com| 天天综合网天天综合色| 久久婷婷久久一区二区三区| 福利一区福利二区| 亚洲三级视频在线观看| 91麻豆精品国产综合久久久久久| 国内精品久久久久影院薰衣草| 中文字幕一区二区三区不卡在线| 欧美亚日韩国产aⅴ精品中极品| 青青草91视频| 中文字幕一区av| 国产欧美一区二区三区在线看蜜臀| 国产不卡视频在线播放| 亚洲啪啪综合av一区二区三区| 欧美高清精品3d| jizz一区二区| 久久国产麻豆精品| 亚洲女与黑人做爰| 精品嫩草影院久久| 欧美三级日韩三级国产三级| 国模少妇一区二区三区| 亚洲国产成人porn| 国产精品天天看| 欧美精品日韩综合在线| 国产河南妇女毛片精品久久久| 亚洲一区在线观看免费| 久久久精品日韩欧美| 欧美日韩中文字幕精品| av福利精品导航| 久久99热这里只有精品| 亚洲国产精品久久人人爱蜜臀| 中文字幕乱码日本亚洲一区二区 | 欧美三级电影在线观看| 国产精品中文有码| 日韩精品乱码av一区二区| 亚洲情趣在线观看| 国产精品久久久久影院| 欧美一区二区啪啪| 欧美日韩视频专区在线播放| 99re这里只有精品视频首页| 国产精品亚洲а∨天堂免在线| 亚洲第一狼人社区| 亚洲欧美日韩国产综合在线 | 国产综合色产在线精品| 国产一区日韩二区欧美三区| 婷婷久久综合九色国产成人| 亚洲免费av在线| 一色桃子久久精品亚洲| 久久久久久电影| 久久久噜噜噜久久人人看| 日韩你懂的电影在线观看| 欧美一区二区三区日韩| 717成人午夜免费福利电影| 在线看不卡av| 在线亚洲人成电影网站色www| 成人禁用看黄a在线| 成人丝袜视频网| 成人一区二区三区中文字幕| 国产91综合网| 成人国产精品免费网站| 91在线视频播放地址| 一本在线高清不卡dvd| 99在线精品观看| 欧美性大战xxxxx久久久| 欧美在线free| 日韩一区二区三区在线| 日韩欧美国产电影| 久久精品免费在线观看| 国产亚洲欧美日韩日本| 欧美国产精品久久| 曰韩精品一区二区| 偷窥少妇高潮呻吟av久久免费| 天堂午夜影视日韩欧美一区二区| 日韩和欧美一区二区三区| 日韩和的一区二区| 国产呦萝稀缺另类资源| 成人免费av资源| 在线亚洲一区观看| 91麻豆精品国产91久久久久久| 日韩精品一区二区三区视频播放 | 99久久精品费精品国产一区二区| 一本色道综合亚洲| 欧美高清精品3d| 国产清纯白嫩初高生在线观看91 | 首页国产欧美日韩丝袜| 久久99在线观看| 91在线观看高清| 91精品国产91久久久久久最新毛片| 欧美成人免费网站| 亚洲欧美日韩一区| 日本女人一区二区三区| 成人性色生活片| 欧美日韩成人高清| 国产亚洲欧美日韩在线一区| 一区二区三区四区av| 麻豆精品国产传媒mv男同| 国产成a人亚洲| 欧美伊人久久久久久久久影院| 精品久久久久一区二区国产| 亚洲人成亚洲人成在线观看图片 | 91视频在线看| 欧美电视剧在线看免费| 亚洲精品乱码久久久久久久久| 日韩va欧美va亚洲va久久| 成人ar影院免费观看视频| 91麻豆精品国产91久久久久久久久| 中文字幕欧美三区| 日本欧洲一区二区| 一本大道久久a久久综合婷婷| 欧美电影免费观看高清完整版在线 | 91麻豆精品国产91久久久久久久久| 国产亚洲制服色| 日本亚洲电影天堂| 色久综合一二码| 国产精品麻豆一区二区| 激情文学综合网| 欧美日本精品一区二区三区| 中文字幕在线一区免费| 蜜臀av国产精品久久久久| 99精品视频中文字幕| 国产丝袜欧美中文另类| 亚洲国产精品一区二区久久 | 久久99久久久久| 欧美日韩一二区| 亚洲精品中文字幕在线观看| 成人免费的视频| 亚洲国产电影在线观看| 捆绑调教美女网站视频一区| 777亚洲妇女| 日本大胆欧美人术艺术动态| 欧美三级韩国三级日本三斤| 亚洲女女做受ⅹxx高潮| 不卡的电影网站| 国产情人综合久久777777| 国产在线不卡视频| 国产亚洲欧美日韩俺去了| 久久99精品国产| 久久综合色8888| 国产成人啪午夜精品网站男同| 日韩欧美在线网站| 精品一区二区三区视频 | 国产成人av一区二区三区在线| 久久五月婷婷丁香社区|