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

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

?? l51_bank.a51

?? A rtx51 tiny example program
?? A51
?? 第 1 頁 / 共 3 頁
字號:
$NOMOD51 NOLINES
$NOCOND
;
;  *** <<< Use Configuration Wizard in Context Menu >>> ***
;------------------------------------------------------------------------------
;  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.22 (Code and Variable Banking for Classic 8051 Derivatives)
;------------------------------------------------------------------------------
;************************ Configuration Section *******************************
;<h> Bank Configuration
;
;     <i> Program Code in expanded memory is supported via the code banking mechanism
;     <i> known from the classic 8051 architecture.  You need to specify the number
;     <i> of code banks that are required for your application.
;
; <o> ?B_NBANKS: Number of Banks
;                    <2=> 2
;                    <4=> 4
;                    <8=> 8
;                    <16=> 16
;                    <32=> 32
;                    <64=> 64
;                         <i> For BL51 the maximum value for ?B_NBANKS is 32
;                         <i> For LX51 the maximum value for ?B_NBANKS is 64
?B_NBANKS       EQU  4    ; Define maximum Number of Banks
;                         ; following values are allowed: 2, 4, 8, 16, 32, 64
;                         ; for BL51 the maximum value for ?B_NBANKS is 32
;                         ; for LX51 the maximum value for ?B_NBANKS is 64
;
; <o> ?B_MODE: Bank Switching via
;                    <0=> 8051 Port
;                    <1=> XDATA Port
;                    <4=> User-provided bank switch code
?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
;
; <q> ?B_RTX: The application uses RTX-51 Real-time OS
?B_RTX          EQU  1    ; 0 for applications without real-time OS
;                         ; 1 for applications using the RTX-51 real-time OS
;
; <q> ?B_VAR_BANKING: Variable banking uses this L51_BANK module
;     <i> Notes: ?B_VAR_BANKING uses the 'far' and 'far const' C51 memory types to
;     <i>         extent the space for variables in RAM and/or ROM of classic 8051
;     <i>         device.  The same hardware as for code banking is used.  Program
;     <i>         code banking and variable banking share the same hardware I/O pins.
;     <i>         The C51 Compiler must be used with the VARBANKING directive.
;     <i>         Variable Banking is only supported with the LX51 linker/locater.
?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.
;
; <o> ?B_RST_BANK: Active code bank number after a Reset <0x0-0xFF>
;     <i> Notes:
;     <i> 1. This specifies the active code bank number after CPU reset.
;     <i>    It is used to reduce the entries in the INTERBANK CALL TABLE.
;     <i> 2. The value 0xFF disables LX51 linker/locater optimization.
;     <i> 3. Interbank Call Table optimization is only possible with LX51.
?B_RST_BANK     EQU  0xFF ; 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.
;
;</h>
;-----------------------------------------------------------------------------
;
IF  ?B_MODE = 0;
;-----------------------------------------------------------------------------
; if ?BANK?MODE is 0 define the following values
; For Bank-Switching via 8051 Port define Port Address / Bits
;
;<h> Bank Switching via 8051 Port
;    <i> This is only used if ?B_MODE is 0
; <o> P1: 8051 Port address <0x0-0xFF>
P1              DATA    90H      ; I/O Port Address
;
?B_PORT         EQU     P1       ; default is P1
; <o> ?B_FIRSTBIT: Starting with Bit <0-7>
;     <i> Default is Bit 2
?B_FIRSTBIT     EQU     2        ; default is Bit 2
;</h>
;-----------------------------------------------------------------------------
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
;
;<h> Bank Switching via XDATA Port Address
;    <i> This is only used if ?B_MODE is 1
; <o> P1: XDATA port address <0x0-0xFFFF>
?B_XDATAPORT    EQU     0FFFFH   ; default is XDATA Port Address 0FFFFH
; <o> ?B_FIRSTBIT: Starting with Bit <0-7>
;     <i> Default is Bit 0
?B_FIRSTBIT     EQU     0        ; default is Bit 0
;</h>
;-----------------------------------------------------------------------------
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 your 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 only 4 banks with two address lines, only
; 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.
;
;
; <h> Bank Switching via User Provided Code
;     <i> This is only used if ?B_MODE is 4
; <o> LONG_MACRO: Macro size and number of banks
;               <0=> Macros use less than 257 bytes and 8 banks or less
;               <1=> Macros use more than 256 bytes and more than 8 banks
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
;
SWITCH0         MACRO            ; Switch to Memory Bank #0
                CLR     P1.5     ; Clear Port 1 Bit 5
                CLR     P3.3     ; Clear Port 3 Bit 3
                ENDM
;
SWITCH1         MACRO            ; Switch to Memory Bank #1
                SETB    P1.5     ; Set   Port 1 Bit 5
                CLR     P3.3     ; Clear Port 3 Bit 3
                ENDM
;
SWITCH2         MACRO            ; Switch to Memory Bank #2
                CLR     P1.5     ; Clear Port 1 Bit 5
                SETB    P3.3     ; Set   Port 3 Bit 3
                ENDM
;
SWITCH3         MACRO            ; Switch to Memory Bank #3
                SETB    P1.5     ; Set   Port 1 Bit 5
                SETB    P3.3     ; Set   Port 3 Bit 3
                ENDM
;
; </h>
;-----------------------------------------------------------------------------
ENDIF;
;
IF ?B_VAR_BANKING = 1;
;
XMEM EQU 0x02000000       ; LX51 xdata symbol offset: do not change!
;
;******* Configuration Section for uVision Memory Simulation Support *********
;
; <h> 礦ision Memory Simulation Support
;
; <i> The following settings allow you to map the physical XDATA and CODE memory
; <i> banks into simulation memory of the 礦ision3 Simulator.
;
; <o> ?B?XSTART: Start of the XDATA bank area <0x0-0xFFFF>
?B?XSTART EQU 0x8000      ; Start of xdata bank area
; <o> ?B?XEND: End of the XDATA bank area <0x0-0xFFFF>
?B?XEND   EQU 0xFFFF      ; Stop of xdata bank area
; <o> ?B?XMEM: Start of XDATA bank area <0x010000-0xFFFFF>
?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 uVision3 simulation memory area for the EEPROM  V:0 .. V:0xFFFF
;
; </h>
;-----------------------------------------------------------------------------
;
                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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲va欧美va国产va天堂影院| 91免费观看国产| 美美哒免费高清在线观看视频一区二区| 亚洲激情网站免费观看| 中文字幕视频一区| 亚洲三级在线免费观看| 日韩理论片在线| 亚洲女厕所小便bbb| 亚洲人成在线观看一区二区| 亚洲人成小说网站色在线| ...av二区三区久久精品| 亚洲啪啪综合av一区二区三区| 国产精品美女一区二区在线观看| 91麻豆精品国产91久久久更新时间| 欧美日韩美女一区二区| 欧美日本韩国一区| 精品视频免费看| 日韩一区二区三区电影| 精品电影一区二区三区| 久久精品男人的天堂| 中文字幕不卡在线观看| 一区二区三区四区五区视频在线观看| 亚洲激情图片一区| 午夜精品久久久久久久99樱桃| 日韩av一区二区三区四区| 国内久久精品视频| 欧美午夜不卡视频| 亚洲欧美偷拍三级| 亚洲最色的网站| 日韩综合一区二区| 国产精品一区二区久久不卡| 99久久综合国产精品| 91成人国产精品| 欧美一区二区三区色| 久久天天做天天爱综合色| 1024国产精品| 日韩**一区毛片| 国产成人亚洲综合色影视| 91丨九色丨黑人外教| 91麻豆精品国产91久久久使用方法 | 亚洲乱码中文字幕综合| 亚洲人成人一区二区在线观看| 亚洲香蕉伊在人在线观| 麻豆成人91精品二区三区| 粉嫩蜜臀av国产精品网站| 色婷婷精品久久二区二区蜜臂av| 欧美高清视频不卡网| 国产丝袜欧美中文另类| 亚洲一区二区三区四区五区中文| 极品美女销魂一区二区三区免费 | 777午夜精品免费视频| 国产视频一区不卡| 日韩高清欧美激情| 成人精品在线视频观看| 欧美一区二区三区色| 18欧美亚洲精品| 蜜桃av一区二区三区| 91久久精品午夜一区二区| 久久综合久久综合久久综合| 亚洲蜜桃精久久久久久久| 精品一区二区久久久| 欧美最猛性xxxxx直播| 国产午夜精品一区二区| 日韩午夜在线影院| 欧美电影影音先锋| 久久久99精品久久| 午夜在线成人av| hitomi一区二区三区精品| 欧美一区二区黄| 尤物av一区二区| 成人午夜视频网站| 日韩精品自拍偷拍| 日韩在线观看一区二区| 91麻豆精品在线观看| 欧美国产日本视频| 国内精品伊人久久久久av一坑 | 国产日韩欧美精品综合| 强制捆绑调教一区二区| 欧美在线影院一区二区| 国产精品色一区二区三区| 国内精品写真在线观看| 欧美一区二区日韩| 偷拍日韩校园综合在线| 在线免费观看不卡av| 亚洲人成网站在线| 99re成人在线| 国产精品乱人伦| 亚洲精品中文在线观看| 青青草精品视频| 91在线视频播放地址| 国产日韩精品一区二区三区| 蜜桃在线一区二区三区| 91精品麻豆日日躁夜夜躁| 一区二区久久久久久| 91女神在线视频| 国产精品国产三级国产aⅴ入口| 国产高清亚洲一区| 久久综合99re88久久爱| 国产乱对白刺激视频不卡| 久久午夜羞羞影院免费观看| 久久精品久久精品| 午夜视频在线观看一区二区三区| 国产精品一区二区不卡| 久久久综合九色合综国产精品| 国产一区二区主播在线| 337p日本欧洲亚洲大胆精品| 麻豆精品国产91久久久久久| 欧美一区二区三区视频| 极品少妇一区二区三区精品视频| 2017欧美狠狠色| 国产剧情av麻豆香蕉精品| 国产亚洲精品bt天堂精选| 成人免费黄色大片| 亚洲品质自拍视频| 成人免费视频视频在线观看免费| 日韩电影免费在线观看网站| 欧美丰满高潮xxxx喷水动漫 | 成人激情黄色小说| 成人欧美一区二区三区视频网页 | 亚洲欧洲制服丝袜| 在线免费视频一区二区| 日韩在线卡一卡二| 亚洲精品一区二区三区四区高清| 国产麻豆精品95视频| 日韩理论片一区二区| 欧美色视频一区| 激情六月婷婷综合| 一区视频在线播放| 欧美日韩激情一区二区三区| 美女高潮久久久| 国产精品成人一区二区艾草 | 中文一区二区在线观看| 91色综合久久久久婷婷| 日韩精品色哟哟| 久久久精品黄色| 在线看国产一区二区| 久热成人在线视频| 中文字幕色av一区二区三区| 欧美日韩在线三区| 国产永久精品大片wwwapp| 日韩码欧中文字| 日韩国产一区二| 欧美成人午夜电影| zzijzzij亚洲日本少妇熟睡| 亚洲欧美偷拍卡通变态| 日韩一级片网站| 不卡一区中文字幕| 天堂一区二区在线| 中文字幕欧美国产| 69成人精品免费视频| av资源站一区| 日本最新不卡在线| 国产精品久久久久毛片软件| 欧美丝袜第三区| 国产成人一区在线| 水野朝阳av一区二区三区| 国产欧美日韩在线看| 91精品国产品国语在线不卡| 成人激情开心网| 久久精品国产99久久6| 一区二区三区中文在线观看| 亚洲精品在线三区| 欧美日韩国产成人在线免费| 高清不卡一二三区| 美女视频黄a大片欧美| 一区二区三区在线视频播放| 国产无一区二区| 日韩欧美综合在线| 欧美日韩一级黄| gogo大胆日本视频一区| 国内精品嫩模私拍在线| 亚洲v中文字幕| 国产精品九色蝌蚪自拍| 精品美女在线播放| 欧美精选午夜久久久乱码6080| 成人黄色小视频| 国产伦理精品不卡| 蜜臀va亚洲va欧美va天堂| 亚洲午夜在线观看视频在线| 中文字幕亚洲成人| 国产性天天综合网| 日韩欧美三级在线| 欧美日韩成人综合| 色乱码一区二区三区88| 国产成人鲁色资源国产91色综| 奇米综合一区二区三区精品视频| 一区二区三区91| 最新欧美精品一区二区三区| 亚洲精品在线三区| 精品日韩一区二区三区| 91精品国产欧美一区二区18| 欧美三级电影精品| 日本高清视频一区二区| www.色精品| proumb性欧美在线观看| 福利一区二区在线观看| 国产精品一区在线观看乱码| 久久er精品视频| 久久99国产精品免费网站| 蜜臀av性久久久久蜜臀av麻豆|