⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l51_bank.lst

📁 液晶显示程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
  0007               602     ?B_MASK         EQU     MASK
                     603     
                     604     ?BANK?SELECT    SEGMENT CODE
                     605     ?BANK?DATA      SEGMENT DATA
----                 606                     RSEG    ?BANK?DATA
0000                 607     ?B_CURRENTBANK: DS      1
                     608     
                     609     BANK            MACRO   N
                     610                     PUBLIC  ?B_BANK&N
                     611     ?B_BANK&N:
                     612                     PUSH    ?B_CURRENTBANK
                     613                     MOV     A,#HIGH ?BANK?SWITCH
                     614                     PUSH    ACC
                     615                     PUSH    DPL
                     616                     PUSH    DPH
                     617                     ENDM
                     618     
                     619     SWITCH          MACRO   N
A51 MACRO ASSEMBLER  L51_BANK                                                             11/10/2006 13:38:49 PAGE     4

                     620                     PUBLIC  ?B_SWITCH&N
                     621     ?B_SWITCH&N:
                     622                     MOV     ?B_CURRENTBANK,#LOW ?B_SWITCH&N
                     623                     SWITCH&N
                     624                     RET
                     625                     ENDM
                     626     
                     627     ?BANK?SWITCH    SEGMENT CODE PAGE
                     628     
----                 629                     RSEG    ?BANK?SWITCH
                     630     ; Generate ?B_SWITCHn functions
  0000               631     CNT             SET     0
                     632     
                     633                     REPT    ?B_NBANKS
                     634                     BANK    %CNT
                     635                     SWITCH  %CNT
                     636     CNT             SET     CNT+1
                     637                     ENDM
                     638+1                   BANK    %CNT
                     646+1                   SWITCH  %CNT
                     656+1                   BANK    %CNT
                     664+1                   SWITCH  %CNT
                     674+1                   BANK    %CNT
                     682+1                   SWITCH  %CNT
                     693+1                   BANK    %CNT
                     701+1                   SWITCH  %CNT
                     711+1                   BANK    %CNT
                     719+1                   SWITCH  %CNT
                     729+1                   BANK    %CNT
                     737+1                   SWITCH  %CNT
                     747+1                   BANK    %CNT
                     755+1                   SWITCH  %CNT
                     765+1                   BANK    %CNT
                     773+1                   SWITCH  %CNT
                     783     
                             ENDIF
                     787     
                     788     
                     789     ;---- Initialization of ?B_CURRENTBANK and execution of SWITCH0:
                     790     ;?C_C51STARTUP?1 SEGMENT CODE
                     791     ;                RSEG    ?C_C51STARTUP?1
                     792     ;                CLR     A
                     793     ;                MOV     ?B_CURRENTBANK,A       ; Init Current Bank
                     794     ;                SWITCH0                        ; Execute SWITCH0 Macro
                     795     
                     796     
                     797     COMMON_XDATA    MACRO     ; Switch back to common XDATA bank
                     798                     SWITCH1                        ; Switch to XDATA Bank 1
                     799                     ENDM
                     800     
                     801     
                     802     ENDIF  ; close block IF ?B_MODE = 4 *******************************************
                     803     ;?BANK?SELECT   SEGMENT CODE
                     804     
----                 805                     RSEG    ?BANK?SELECT
                     806     
                     807     ;************************  SWITCHBANK FUNCTION  *******************************
                     808     ;                                                                             *
                     809     ; SWITCHBANK allows use of bank-switching for C programs                      *
                     810     ;                                                                             *
                     811     ; prototype:   extern switchbank (unsigned char bank_number);                 *
                     812     ;                                                                             *
                     813     ;******************************************************************************
                     814                     PUBLIC  _SWITCHBANK
                     815     
0000 EF              816     _SWITCHBANK:    MOV     A,R7
A51 MACRO ASSEMBLER  L51_BANK                                                             11/10/2006 13:38:49 PAGE     5

                     817     
                             ENDIF  ; close block IF ?B_VAR_BANKING <> 0 ***********************************
                     861     
                             ENDIF  ; close block IF ?B_MODE = 0 *******************************************
                     870     
                             ENDIF  ; close block IF ?B_MODE = 1 *******************************************
                     886     
                     887     
                     888     IF  ?B_MODE = 4 ;**************************************************************
                     889     
                     890     S_ENTRY         MACRO   N
                     891                     DB      LOW ?B_SWITCH&N
                     892                     ENDM
                     893     
0001                 894     _SWITCHBANK_A:
0001 240A            895                     ADD     A,#switch_tab+3-$
0003 83              896                     MOVC    A,@A+PC
0004 900000   F      897                     MOV     DPTR,#?BANK?SWITCH
0007 73              898                     JMP     @A+DPTR
                     899     
0008                 900     switch_tab:
  0000               901     CNT             SET     0
                     902     
                     903                     REPT    ?B_NBANKS
                     904                     S_ENTRY %CNT
                     905     CNT             SET     CNT+1
                     906                     ENDM
                     907+1                   S_ENTRY %CNT
                     910+1                   S_ENTRY %CNT
                     913+1                   S_ENTRY %CNT
                     916+1                   S_ENTRY %CNT
                     919+1                   S_ENTRY %CNT
                     922+1                   S_ENTRY %CNT
                     925+1                   S_ENTRY %CNT
                     928+1                   S_ENTRY %CNT
                     931     ENDIF  ; close block IF ?B_MODE = 4 *******************************************
                     932     
                     933     
A51 MACRO ASSEMBLER  L51_BANK                                                             11/10/2006 13:38:49 PAGE     6

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

?BANK?DATA . . . .  D SEG    0001H       REL=UNIT
?BANK?SELECT . . .  C SEG    0010H       REL=UNIT
?BANK?SWITCH . . .  C SEG    0088H       REL=PAGE
?BANK?SWITCHING. .  N NUMB   -----       
?B_BANK0 . . . . .  C ADDR   0000H   R   SEG=?BANK?SWITCH
?B_BANK1 . . . . .  C ADDR   0011H   R   SEG=?BANK?SWITCH
?B_BANK2 . . . . .  C ADDR   0022H   R   SEG=?BANK?SWITCH
?B_BANK3 . . . . .  C ADDR   0033H   R   SEG=?BANK?SWITCH
?B_BANK4 . . . . .  C ADDR   0044H   R   SEG=?BANK?SWITCH
?B_BANK5 . . . . .  C ADDR   0055H   R   SEG=?BANK?SWITCH
?B_BANK6 . . . . .  C ADDR   0066H   R   SEG=?BANK?SWITCH
?B_BANK7 . . . . .  C ADDR   0077H   R   SEG=?BANK?SWITCH
?B_COMMON_XRAM . .    ----   -----       
?B_CURRENTBANK . .  D ADDR   0000H   R   SEG=?BANK?DATA
?B_FACTOR. . . . .  N NUMB   0000H   A   
?B_FIRSTBIT. . . .  N NUMB   0000H   A   
?B_INTR_ACCESS . .    ----   -----       
?B_MASK. . . . . .  N NUMB   0007H   A   
?B_MODE. . . . . .  N NUMB   0004H   A   
?B_NBANKS. . . . .  N NUMB   0008H   A   
?B_RTX . . . . . .  N NUMB   0000H   A   
?B_SWITCH0 . . . .  C ADDR   000AH   R   SEG=?BANK?SWITCH
?B_SWITCH1 . . . .  C ADDR   001BH   R   SEG=?BANK?SWITCH
?B_SWITCH2 . . . .  C ADDR   002CH   R   SEG=?BANK?SWITCH
?B_SWITCH3 . . . .  C ADDR   003DH   R   SEG=?BANK?SWITCH
?B_SWITCH4 . . . .  C ADDR   004EH   R   SEG=?BANK?SWITCH
?B_SWITCH5 . . . .  C ADDR   005FH   R   SEG=?BANK?SWITCH
?B_SWITCH6 . . . .  C ADDR   0070H   R   SEG=?BANK?SWITCH
?B_SWITCH7 . . . .  C ADDR   0081H   R   SEG=?BANK?SWITCH
?B_VARBANKING. . .    ----   -----       
?B_VAR_BANKING . .  N NUMB   0000H   A   
ACC. . . . . . . .  D ADDR   00E0H   A   
B. . . . . . . . .  D ADDR   00F0H   A   
CNT. . . . . . . .  N NUMB   0008H   A   
DPH. . . . . . . .  D ADDR   0083H   A   
DPL. . . . . . . .  D ADDR   0082H   A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
IE . . . . . . . .  D ADDR   00A8H   A   
MASK . . . . . . .  N NUMB   0007H   A   
N. . . . . . . . .    ----   -----       
SWITCH_TAB . . . .  C ADDR   0008H   R   SEG=?BANK?SELECT
_SWITCHBANK. . . .  C ADDR   0000H   R   SEG=?BANK?SELECT
_SWITCHBANK_A. . .  C ADDR   0001H   R   SEG=?BANK?SELECT


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -