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

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

?? l51_bank.a51

?? uCos-ii 2.86 在C8051F410單片機上移植成功!!! 其中包括:UART驅動
?? A51
字號:
$NOMOD51 NOLINES
$NOCOND
;------------------------------------------------------------------------------
;  This file is part of the BL51 / LX51 Banked Linker/Locater package
;  Copyright (c) 1988 - 2000 Keil Elektronik GmbH and Keil Software, Inc.
;  Version 2.08 (Code and Variable Banking for Classic 8051 Derivatives)
;------------------------------------------------------------------------------
;************************ Configuration Section *******************************
?B_NBANKS       EQU  4    ; Define max. Number of Banks                       *
;                         ; The following values are allowed: 2, 4, 8, 16, 32 *
;                         ; the max. value for ?B_BANKS is 32                 *
;                                                                             *
?B_MODE         EQU  4    ; 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 RTX-51 FULL            *
;                         ; 1 for applications using RTX-51 FULL              *
;                                                                             *
?B_VAR_BANKING  EQU  0    ; Enable Variable Banking in XDATA and CODE memory  *
;                         ; 0 Variable Banking is disabled                    *
;                         ; 1 XDATA and CODE banking with same address lines  *
;                         ; 2 XDATA uses a different banking port             *
; Note Variable Banking is only supported with the LX51 linker/locater        *
;                                                                             *
?B_RST_BANK     EQU  0FFh ; 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 = 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.  Eeach SWITCH macro must generate the same code size, otherwise the      *
;     BANKSWITCH code does not work correctly.                                *
; 2.  The bankswitch logic must be initialized before using it. Please add    *
;     the following two 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 *
;                :                                                            *
; 3.  If you are using the RTX-51 real-time operating system this banking     *
;     mode cannot be used.                                                    *
;                                                                             *
PSBANK          DATA    0B1H           ; PSBANK Address                       *
;                                                                             *
SWITCH0         MACRO                  ; Switch to Memory Bank #0             *
                MOV     PSBANK, #00h   ; Set PSBANK                           *
                ENDM                                                          *
;                                                                             *
SWITCH1         MACRO                  ; Switch to Memory Bank #1             *
                MOV     PSBANK, #11h   ; Set PSBANK                           *
                ENDM                                                          *
;                                                                             *
SWITCH2         MACRO                  ; Switch to Memory Bank #2             *
                MOV     PSBANK, #22h   ; Set PSBANK                           *
                ENDM                                                          *
;                                                                             *
SWITCH3         MACRO                  ; Switch to Memory Bank #3             *
                MOV     PSBANK, #33h   ; Set PSBANK                           *
                ENDM                                                          *
;                                                                             *
;-----------------------------------------------------------------------------*
ENDIF;                                                                        *
;                                                                             *
;******************************************************************************
;                                                                             *
; THEORY OF OPERATION                                                         *
; -------------------                                                         *
; The section below describes the code generated by BL51 or L251 and the      *
; operation of the L51_BANK.A51 module.  BL51/L251 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

; 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
ELSE
  MASK          EQU     00011111B
ENDIF     


IF  ?B_MODE = 4 ;**************************************************************

?B_FACTOR       EQU     0               ; Dummy Declarations
?B_FIRSTBIT     EQU     0
?B_MASK         EQU     MASK

?BANK?SELECT    SEGMENT CODE
?BANK?DATA      SEGMENT DATA
                RSEG    ?BANK?DATA
?B_CURRENTBANK: DS      1

BANK            MACRO   N
                PUBLIC  ?B_BANK&N
?B_BANK&N:
                PUSH    ?B_CURRENTBANK
                MOV     A,#HIGH ?BANK?SWITCH
                PUSH    ACC
                PUSH    DPL
                PUSH    DPH
                ENDM

SWITCH          MACRO   N
                PUBLIC  ?B_SWITCH&N
?B_SWITCH&N:
                MOV     ?B_CURRENTBANK,#LOW ?B_SWITCH&N
                SWITCH&N
                RET
                ENDM


?BANK?SWITCH    SEGMENT CODE PAGE

                RSEG    ?BANK?SWITCH
B_SWITCH_START  EQU     $
; Generate ?B_SWITCHn functions
CNT             SET     0

                REPT    ?B_NBANKS
                BANK    %CNT
                SWITCH  %CNT
CNT             SET     CNT+1
                ENDM

B_SWITCH_SIZE   EQU     $-B_SWITCH_START

IF (B_SWITCH_SIZE > 256)
__ERROR__ "BANK SWITCH CODE BIGGER THAN 256 BYTES (reduce number of banks or macro code)"
ENDIF



COMMON_XDATA    MACRO     ; Switch back to common XDATA bank
                SWITCH1                        ; Switch to XDATA Bank 1
                ENDM


ENDIF  ; close block IF ?B_MODE = 4 *******************************************

                RSEG    ?BANK?SELECT

;************************  SWITCHBANK FUNCTION  *******************************
;                                                                             *
; SWITCHBANK allows use of bank-switching for C programs                      *
;                                                                             *
; prototype:   extern switchbank (unsigned char bank_number);                 *
;                                                                             *
;******************************************************************************
                PUBLIC  _SWITCHBANK

_SWITCHBANK:    MOV     A,R7

IF  ?B_MODE = 4 ;**************************************************************

S_ENTRY         MACRO   N
                DB      LOW ?B_SWITCH&N
                ENDM

_SWITCHBANK_A:
                ADD     A,#switch_tab+3-$
                MOVC    A,@A+PC
                MOV     DPTR,#?BANK?SWITCH
                JMP     @A+DPTR

switch_tab:     
CNT             SET     0

                REPT    ?B_NBANKS
                S_ENTRY %CNT
CNT             SET     CNT+1
                ENDM
ENDIF  ; close block IF ?B_MODE = 4 *******************************************


                END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲自拍偷拍图区| 91亚洲午夜精品久久久久久| 色综合中文字幕| 玉米视频成人免费看| 成人性生交大片免费看在线播放| 久久午夜免费电影| 国产成人av电影免费在线观看| 中文字幕av一区二区三区| 不卡一区二区中文字幕| 亚洲欧洲性图库| 91黄色免费观看| 奇米色777欧美一区二区| 精品国产91亚洲一区二区三区婷婷| 极品尤物av久久免费看| 国产欧美日韩另类一区| 91久久香蕉国产日韩欧美9色| 亚洲综合成人网| 日韩午夜av一区| 成人开心网精品视频| 亚洲精品欧美在线| 欧美一级生活片| 成人高清免费在线播放| 亚洲一区二区三区精品在线| 日韩欧美综合一区| 不卡视频免费播放| 视频一区在线播放| 国产日韩欧美不卡| 欧美日韩在线观看一区二区| 国产精品一区二区果冻传媒| 国产精品高潮呻吟久久| 欧美一区二区私人影院日本| 国产成人8x视频一区二区| 亚洲午夜精品在线| 国产日韩视频一区二区三区| 在线精品视频小说1| 狠狠色丁香久久婷婷综合丁香| 亚洲欧洲国产日本综合| 日韩午夜av电影| 在线观看不卡一区| 国产酒店精品激情| 午夜精品免费在线观看| 国产日韩欧美综合一区| 91精品国产综合久久香蕉的特点 | 亚洲特黄一级片| 欧美一区二区三区男人的天堂| 成人性生交大片免费看中文| 成人丝袜18视频在线观看| 午夜精品一区二区三区电影天堂 | 在线免费亚洲电影| 国产美女在线观看一区| 天天影视色香欲综合网老头| 国产精品久久一卡二卡| 日韩精品中午字幕| 欧美日韩国产一级二级| 91在线无精精品入口| 国产一区二区福利| 美女一区二区久久| 亚洲va欧美va人人爽| 亚洲三级电影网站| 国产精品拍天天在线| 精品处破学生在线二十三| 91麻豆精品国产综合久久久久久 | 国产精品沙发午睡系列990531| 欧美一三区三区四区免费在线看 | 99久久婷婷国产| 国产酒店精品激情| 久久99久久精品| 美日韩一区二区三区| 亚洲bt欧美bt精品777| 亚洲激情自拍偷拍| 亚洲九九爱视频| 亚洲欧美日韩小说| 亚洲欧美日本在线| 亚洲卡通欧美制服中文| 亚洲美女偷拍久久| 亚洲精品一二三| 洋洋成人永久网站入口| 亚洲精品国产无天堂网2021| 亚洲同性gay激情无套| 最新日韩在线视频| 日韩毛片精品高清免费| 亚洲免费av在线| 亚洲一区中文在线| 午夜精品久久久久久久| 天天影视网天天综合色在线播放| 国产精品系列在线播放| 久久99精品久久久| 国产精品小仙女| av不卡免费电影| 色婷婷国产精品| 欧美日韩午夜在线| 91精品国产色综合久久不卡蜜臀| 91精品国产综合久久久久| 日韩欧美在线观看一区二区三区| 日韩欧美国产一二三区| 久久亚洲综合av| 中文在线资源观看网站视频免费不卡| 欧美国产欧美综合| 亚洲视频1区2区| 亚洲动漫第一页| 精品一区二区免费在线观看| 国产精品亚洲午夜一区二区三区| a4yy欧美一区二区三区| 欧美亚一区二区| 欧美一区2区视频在线观看| 久久免费视频一区| 日韩美女久久久| 天使萌一区二区三区免费观看| 美女网站视频久久| 成人黄色免费短视频| 欧美午夜精品久久久久久孕妇| 欧美一级一区二区| 欧美国产精品专区| 午夜精品久久久久久久久久久 | 久久色在线视频| 国产精品的网站| 日日摸夜夜添夜夜添亚洲女人| 国产在线一区二区| 色欧美片视频在线观看在线视频| 日韩一级免费一区| 日韩毛片一二三区| 精品一区二区精品| 欧美中文字幕久久| 国产色产综合产在线视频| 一区二区三区在线高清| 国产乱国产乱300精品| 欧美影院一区二区三区| 久久久一区二区| 丝袜美腿亚洲色图| 97精品国产露脸对白| 精品成a人在线观看| 亚洲成人在线免费| 99riav一区二区三区| 精品国产一区二区三区久久久蜜月| 亚洲免费观看高清完整版在线观看 | 欧美变态凌虐bdsm| 亚洲电影欧美电影有声小说| 不卡一区在线观看| 久久久精品国产免大香伊| 五月天亚洲精品| 色网站国产精品| 国产精品久久久久影院亚瑟| 美日韩一级片在线观看| 欧美日韩一区二区三区四区五区| 中文字幕一区二区三区四区| 经典三级在线一区| 欧美一区二区三区成人| 夜夜夜精品看看| 99re成人精品视频| 日本一区二区视频在线| 精品中文字幕一区二区小辣椒| 欧洲一区二区三区在线| 成人欧美一区二区三区| 国产成人综合亚洲91猫咪| 欧美一级日韩免费不卡| 视频在线在亚洲| 宅男噜噜噜66一区二区66| 亚洲成av人片| 欧美色爱综合网| 亚洲第一电影网| 欧美日韩精品一区二区天天拍小说| 一区二区三区中文字幕精品精品 | 欧美xxxx老人做受| 日韩av午夜在线观看| 欧美三级电影一区| 亚洲va欧美va人人爽| 欧美日韩欧美一区二区| 亚洲综合久久久| 欧美主播一区二区三区美女| 夜夜精品视频一区二区| 色香蕉久久蜜桃| 亚洲一区欧美一区| 日本久久一区二区三区| 亚洲欧美日本在线| 欧美三级欧美一级| 日韩精品一二区| 日韩欧美色电影| 国产毛片精品视频| 亚洲国产精品v| 99精品久久久久久| 亚洲影院在线观看| 在线综合亚洲欧美在线视频| 美女视频黄久久| 久久精品视频一区二区三区| 国产**成人网毛片九色| 亚洲乱码中文字幕综合| 在线免费不卡电影| 蜜桃久久av一区| 久久久久久影视| 9久草视频在线视频精品| 亚洲男人的天堂一区二区| 欧美在线免费视屏| 蜜臀av在线播放一区二区三区| 精品久久久久一区二区国产| 国产成人在线看| 亚洲男帅同性gay1069| 欧美日韩亚洲国产综合| 久久99久久99小草精品免视看| 国产欧美日韩在线视频| 99久久精品免费看国产免费软件|