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

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

?? cstartup.asm

?? Texas Instruments的TUSB3410芯片接鍵盤輸入的固件程序源碼和驅動程序源碼。
?? ASM
字號:
; (c)2002 by Texas Instruments Incorporated, All Rights Reserved.
;---------------------------------------------------------------;
;                                                               ;
;                       CSTARTUP.S03                            ;
;                                                               ;
;                                                               ;
; This file has been modified for removing set port 2 all 0,    ;
; this makes sure the port 2 is still input during reset.       ;
;                                                               ;
;                                                               ;
; This module contains the entire code executed before the C    ;
; "main" function is called.  The code can be tailored to suit  ;
; special hardware needs.  The code is designed to run on any   ;
; processor based on the 8051 architecture.                     ;
;                                                               ;
; Version: 5.20 [IMAF 960603]                                   ;
;
; Revision control system
;       $Revision: 1.19 $
;
;---------------------------------------------------------------;
    NAME    CSTARTUP
    PUBLIC  init_C
    $DEFFN  init_C(0400H,0,0,0,0,0,0,0)

$defmodel.inc                           ; Defines memory model

    EXTERN  ?C_EXIT                 ; Where to go when program is done
    EXTERN  _R                      ; Register bank (0, 8, 16 or 24)
    EXTERN  main                    ; First C function usually
    $DEFFN    main(32768,0,0,0)
    EXTERN    __low_level_init        ; Setup low level things
    $DEFFN    __low_level_init(0,0,0,0)
    EXTERN  exit
    $DEFFN    exit(0,0,0,0)
    IF    banked_mode
    EXTERN    ?X_CALL_L18
        ENDIF

    RSEG    B_UDATA
    RSEG    B_CDATA
    RSEG    B_IDATA
    RSEG    D_UDATA
    RSEG    D_CDATA
    RSEG    D_IDATA
    RSEG    I_UDATA
    RSEG    I_CDATA
    RSEG    I_IDATA
    RSEG    P_UDATA
    RSEG    P_CDATA
    RSEG    P_IDATA
    IF      lcall_mode
    RSEG    X_UDATA
    RSEG    X_CDATA
    RSEG    X_IDATA
    RSEG    ECSTR
    RSEG    CCSTR
    ENDIF

;---------------------------------------------------------------;
; The C stack segment. Should be mapped into internal data RAM  ;
;---------------------------------------------------------------;
; The C stack is used for LCALL's and temporary storage for     ;
; code generator help-routines (math etc).  The stack will be   ;
; located after all other internal RAM variables if the stan-   ;
; dard linking procedure is followed.  Note that C interrupt    ;
; routines can double stack size demands.                       ;
;---------------------------------------------------------------;

    RSEG    CSTACK
stack_begin:
    DS      30                      ; Increase if needed

    COMMON  INTVEC                  ; Should be at location zero

;---------------------------------------------------------------;
; C interrupt routines with defined [vectors] will reserve      ;
; space in this area.  So will handlers written in assembler if ;
; they follow the recommended format.                           ;
;---------------------------------------------------------------;

startup:
    IF      lcall_mode
    LJMP    init_C
    ELSE
    AJMP    init_C
    ENDIF


    RSEG    RCODE                   ; Should be loaded after INTVEC
init_C:
    MOV     SP,#stack_begin - 1     ; From low to high addresses
; 20001214 modified by lobo
; P_IDATA is not used and P2 can NOT be zero after power-on reset.
; All P Ports should be in input mode after power-on reset.
;    MOV     DPTR,#SFB (P_IDATA)      ; Initialize high byte of PDATA.
;    MOV     P2,DPH                  ;

;----------------------------------------------------------------------
; Call __low_level_init to perform initialization before initializing
; segments and calling main. If the function returns 0 no segment
; initialization should take place.
;
; Link with your own version of __low_level_init to override the 
; default action: to do nothing but return 1.
;----------------------------------------------------------------------

    IF    banked_mode
    MOV    A,#$BYTE3 __low_level_init
    MOV    DPTR,# LWRD(__low_level_init)
    LCALL    ?X_CALL_L18        ; main()
    ELSE
    IF    lcall_mode
    LCALL    __low_level_init
    ELSE
    ACALL    __low_level_init
    ENDIF
    ENDIF

        MOV     A,R4
        ORL     A,R5
        JZ      skip_init


;---------------------------------------------------------------;
;             C variable initialization section                 ;
;             =================================                 ;
;                                                               ;
; If there is no demand that global/static C variables should   ;
; have a defined value at startup (required by ANSI), the       ;
; following section can be removed to conserve code memory      ;
; size.   Note that this part calls functions in the end of     ;
; this file, that also can be removed if initialized values are ;
; not needed.                                                   ;
;                                                               ;
; Systems controlled by a watch-dog may require additional      ;
; code insertions as the initialization can take several        ;
; milliseconds (if there are many variables) to complete.       ;
; These parts are marked with    *** WDG ***                    ;
;---------------------------------------------------------------;

;===============================================================;
; Zero out sections containing variables without explicit       ;
; initializers like in:                                         ;
;                                                               ;
;       int i;                                                  ;
;       xdata double d[10];                                     ;
;===============================================================;

    MOV     R0,#SFE(I_UDATA)-1
    SJMP    CLEAR_IDATA_2
CLEAR_IDATA:
    MOV     @R0,#0
    DEC     R0
CLEAR_IDATA_2:
    CJNE    R0,#SFB(I_UDATA)-1,CLEAR_IDATA
    
    MOV     R0,#SFE(D_UDATA)-1
    SJMP    CLEAR_DDATA_2
CLEAR_DDATA:
    MOV     @R0,#0
    DEC     R0
CLEAR_DDATA_2:
    CJNE    R0,#SFB(D_UDATA)-1,CLEAR_DDATA
    
    MOV     R0,#SFE(B_UDATA)-1
    SJMP    CLEAR_BDATA_2
CLEAR_BDATA:
    MOV     @R0,#0
    DEC     R0
CLEAR_BDATA_2:
    CJNE    R0,#SFB(B_UDATA)-1,CLEAR_BDATA
    
    IF      lcall_mode
    MOV     DPTR,#SFE (X_UDATA)             ; XDATA
    MOV     R6,DPH
    MOV     R7,DPL
    MOV     DPTR,#SFB (X_UDATA)
NEXT_X_UDATA:
    LCALL   COMP_R67_DPTR
    JZ      INIT_P_UDATA
    CLR     A
    MOVX    @DPTR,A
    INC     DPTR
    SJMP    NEXT_X_UDATA

INIT_P_UDATA:
    MOV     DPTR,#SFB (P_UDATA) 
    MOV     R0,DPL
    MOV     DPTR,#SFE (P_UDATA) 
    MOV     R1,DPL
NEXT_P_UDATA:
    MOV     A,R0
    CLR     C
    SUBB    A,R1
    JNC     INIT_VARS
    MOV     @R0,#0
    INC     R0
    SJMP    NEXT_P_UDATA
    ENDIF

;===============================================================;
; Copy initializers into the proper memory segments for decla-  ;
; rations like:                                                 ;
;                                                               ;
;       int i = 7;                                              ;
;       idata char *cp = "STRING";                              ;
;===============================================================;

INIT_VARS:
    MOV     DPTR,#BDATA_TABLE               ; BDATA
    IF      lcall_mode
    LCALL   DI_INIT
    ELSE
    ACALL   DI_INIT
    ENDIF
    MOV     DPTR,#DATA_TABLE                ; DATA
    IF      lcall_mode
    LCALL   DI_INIT
    ELSE
    ACALL   DI_INIT
    ENDIF
    MOV     DPTR,#IDATA_TABLE               ; IDATA
    IF      lcall_mode
    LCALL   DI_INIT
    ELSE
    ACALL   DI_INIT
    ENDIF
    MOV     DPTR,#PDATA_TABLE               ; PDATA
    IF      lcall_mode
    LCALL   X_INIT
    ENDIF
    IF      lcall_mode
    MOV     DPTR,#XDATA_TABLE               ; XDATA
    LCALL   X_INIT
    MOV     DPTR,#YDATA_TABLE               ; For the -y compiler option
    LCALL   X_INIT
    ENDIF

skip_init:

;---------------------------------------------------------------;
;          C variable initialization section end                ;
;---------------------------------------------------------------;

;---------------------------------------------------------------;
; Activate the (at link-time) selected register bank.           ;
;---------------------------------------------------------------;

    MOV     PSW,#_R

;---------------------------------------------------------------;
; If hardware must be initiated from assembly or if interrupts  ;
; should be on when reaching main, this is the place to insert  ;
; such code.                                                    ;
;---------------------------------------------------------------;

    IF      banked_mode

    MOV     A,#$BYTE3 main
    MOV     DPTR,#LWRD(main)
    LCALL   ?X_CALL_L18             ; main()

    ELSE

    IF      lcall_mode
    LCALL   main                    ; main()
    ELSE
    ACALL   main                    ; main()
    ENDIF
    ENDIF

;---------------------------------------------------------------;
; Now when we are ready with our C program (usually 8051 C      ;
; programs are continuous) we must perform a system-dependent   ;
; action.  In this simple case we just stop.                    ;
;---------------------------------------------------------------;
; DO NOT CHANGE NEXT LINE OF CSTARTUP IF YOU WANT TO RUN YOUR   ;
; SOFTWARE WITH THE AID OF THE C-SPY HLL DEBUGGER.  IT CAN      ;
; THOUGH BE REMOVED IF YOUR PROGRAM IS CONTINUOUS (NO EXIT).    ;
; If it is removed the EXTERN ?C_EXIT line should also be re-   ;
; moved to avoid linking of the "exit" module                   ;
;---------------------------------------------------------------;
    IF      lcall_mode
    LJMP    exit 
    ELSE
    AJMP    exit 
    ENDIF

;---------------------------------------------------------------;
; Last part of the C variable initializer code.                 ;
;---------------------------------------------------------------;
    IF      lcall_mode
COMP_R67_DPTR:
;===========================;
;       *** WDG ***         ;
;                           ;
; ACC, B, R0-R3 may be used ;
;===========================;
    MOV     A,R7
    XRL     A,DPL
    JNZ     NOT_EQUAL
    MOV     A,R6
    XRL     A,DPH
NOT_EQUAL:
    RET
    ENDIF

DI_INIT:
    CLR     A
    MOVC    A,@A+DPTR
    MOV     R0,A
    MOV     A,#1
    MOVC    A,@A+DPTR
    MOV     R1,A
    MOV     A,#2
    MOVC    A,@A+DPTR
    MOV     R6,A
    MOV     A,#3
    MOVC    A,@A+DPTR
    MOV     DPL,A
    MOV     DPH,R6
MORE_DI_COPY:
;===========================;
;       *** WDG ***         ;
;                           ;
; ACC, B, R2-R6 may be used ;
;===========================;
    MOV     A,R0
    XRL     A,R1
    JNZ     $+3
    RET
    CLR     A
    MOVC    A,@A+DPTR
    MOV     @R0,A
    INC     DPTR
    INC     R0
    SJMP    MORE_DI_COPY

    IF      lcall_mode
X_INIT:
    CLR     A
    MOVC    A,@A+DPTR
    MOV     R4,A
    MOV     A,#1
    MOVC    A,@A+DPTR
    MOV     R5,A
    MOV     A,#2
    MOVC    A,@A+DPTR
    MOV     R6,A
    MOV     A,#3
    MOVC    A,@A+DPTR
    MOV     R7,A
    MOV     A,#4
    MOVC    A,@A+DPTR
    MOV     R0,A
    MOV     A,#5
    MOVC    A,@A+DPTR
    MOV     DPL,A
    MOV     DPH,R0
MORE_X_COPY:
    LCALL   COMP_R67_DPTR
    JNZ     $+3
    RET
    CLR     A
    MOVC    A,@A+DPTR
    INC     DPTR
    MOV     R0,DPH
    MOV     R1,DPL
    MOV     DPH,R4
    MOV     DPL,R5
    MOVX    @DPTR,A
    INC     DPTR
    MOV     R4,DPH
    MOV     R5,DPL
    MOV     DPH,R0
    MOV     DPL,R1
    SJMP    MORE_X_COPY
    ENDIF

BDATA_TABLE:
    DB      SFB (B_IDATA)
    DB      SFE (B_IDATA)
    DW      SFB (B_CDATA)
DATA_TABLE:
    DB      SFB (D_IDATA)
    DB      SFE (D_IDATA)
    DW      SFB (D_CDATA)
IDATA_TABLE:
    DB      SFB (I_IDATA)
    DB      SFE (I_IDATA)
    DW      SFB (I_CDATA)
PDATA_TABLE:
    DW      SFB (P_IDATA)
    DW      SFE (P_CDATA)
    DW      SFB (P_CDATA)

    IF      lcall_mode
XDATA_TABLE:
    DW      SFB (X_IDATA)
    DW      SFE (X_CDATA)
    DW      SFB (X_CDATA)
YDATA_TABLE:
    DW      SFB (ECSTR)
    DW      SFE (CCSTR)
    DW      SFB (CCSTR)
    ENDIF

    ENDMOD  startup

;---------------------------------------------------------------;
; Function/module: exit (int code)                              ;
;                                                               ;
; When C-SPY is used this code will automatically be replaced   ;
; by a 'debug' version of exit().                               ;
;---------------------------------------------------------------;
    MODULE  exit

    PUBLIC  exit
    $DEFFN  exit(0,0,0,0,0,0,0,0)
    PUBLIC  ?C_EXIT

    RSEG    RCODE

?C_EXIT:
exit:
;---------------------------------------------------------------;
; The next line could be replaced by user defined code.         ;
;---------------------------------------------------------------;
    SJMP    $               ; Forever... 

    ENDMOD

;----------------------------------------------------------------------
;
; The only action of this default version of __low_level_init is to
; return 1. By doing so it signals that normal initialization of data
; segments should be done.
;
; A customized version of __low_level_init may be created in order to
; perform initialization before initializing segments and calling main
; and/or to skip initialization of data segments under certain 
; circumstances.
; For further details see sample file lowinit.c
;
;----------------------------------------------------------------------


    MODULE    lowinit
    PUBLIC    __low_level_init
    $DEFFN    __low_level_init(0,0,0,0,32768,0,0,0)
    RSEG    CODE

__low_level_init:    
    MOV    R4,#1                ; By returning 1 this function
;    MOV    R4,#0                ; 20010801 modified by lobo to zero to skip low level init
    MOV    R5,#0            ; indicates that the normal 
                    ; initialization should take place

    IF    banked_mode

    EXTERN    ?X_RET_L18
    LJMP    ?X_RET_L18    

    ELSE

    RET

    ENDIF

    END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91传媒视频在线播放| 国内成+人亚洲+欧美+综合在线| 精品久久人人做人人爰| 欧美喷潮久久久xxxxx| 欧美日韩一区二区欧美激情| 欧美亚洲国产一区在线观看网站 | 九九在线精品视频| 九色porny丨国产精品| 黄色日韩三级电影| 国产乱码精品一区二区三区五月婷 | 精品综合免费视频观看| 欧美a级理论片| 国产麻豆9l精品三级站| 国产不卡视频在线播放| 国产成人自拍网| 99久久国产免费看| 欧美区在线观看| 欧美变态tickling挠脚心| 久久蜜臀精品av| **性色生活片久久毛片| 亚洲你懂的在线视频| 亚洲无人区一区| 久久99精品久久久| 成人夜色视频网站在线观看| 欧美最猛性xxxxx直播| 日韩欧美一二区| 中国色在线观看另类| 亚洲电影中文字幕在线观看| 青青草伊人久久| 成人午夜电影久久影院| 欧美日韩视频专区在线播放| 欧美成人aa大片| 亚洲视频每日更新| 免播放器亚洲一区| 99精品视频一区二区三区| 欧美丰满一区二区免费视频| 久久综合九色综合欧美就去吻 | 成人毛片视频在线观看| 欧美色倩网站大全免费| 久久久亚洲国产美女国产盗摄| 亚洲男人电影天堂| 国内精品久久久久影院一蜜桃| 91亚洲精品乱码久久久久久蜜桃 | 国产视频视频一区| 丝袜美腿亚洲一区二区图片| 成人午夜伦理影院| 日韩视频在线观看一区二区| 亚洲视频在线观看一区| 国产资源在线一区| 欧美剧情电影在线观看完整版免费励志电影 | 久久99精品国产麻豆不卡| 在线视频国内一区二区| 久久亚洲欧美国产精品乐播| 丝袜亚洲另类欧美| 一本大道久久a久久精品综合| 精品福利一二区| 日韩av不卡在线观看| 色国产精品一区在线观看| 国产欧美一区二区三区网站| 麻豆精品一二三| 在线不卡中文字幕| 亚洲不卡av一区二区三区| av激情成人网| 欧美国产欧美综合| 国产高清精品网站| 精品蜜桃在线看| 美腿丝袜一区二区三区| 欧美乱妇20p| 日韩精品欧美精品| 在线不卡中文字幕| 亚洲一区在线播放| 欧美少妇xxx| 亚洲午夜精品17c| 欧美日韩在线观看一区二区| 亚洲综合在线观看视频| 91在线你懂得| **欧美大码日韩| 欧洲人成人精品| 亚洲国产日韩在线一区模特| 欧洲av在线精品| 亚洲一区二区黄色| 欧美日韩国产在线播放网站| 亚洲午夜久久久| 欧美精品第1页| 久久国产精品72免费观看| 26uuu国产电影一区二区| 国产在线精品一区二区不卡了| 精品少妇一区二区三区免费观看| 久久精品国产精品青草| 久久九九久精品国产免费直播| 国产精品一区专区| 国产精品电影一区二区三区| 91在线国内视频| 亚洲成人动漫在线免费观看| 欧美精品亚洲二区| 国内精品在线播放| 亚洲欧美综合网| 欧美久久久久免费| 韩国一区二区三区| 亚洲三级视频在线观看| 欧美日韩免费高清一区色橹橹| 免费人成在线不卡| 国产精品毛片久久久久久 | 亚洲综合一区二区三区| 91精品国产色综合久久ai换脸| 精品一区二区在线视频| 国产精品电影一区二区| 欧美三日本三级三级在线播放| 麻豆精品久久久| 亚洲欧美在线视频| 日韩一区二区三区观看| 波多野结衣91| 免费视频最近日韩| 亚洲欧美国产三级| 欧美成人艳星乳罩| 色94色欧美sute亚洲线路一久| 日本不卡视频在线| 亚洲人吸女人奶水| 久久婷婷久久一区二区三区| 欧美这里有精品| 成人综合激情网| 免费av网站大全久久| 亚洲激情一二三区| 国产精品入口麻豆原神| 欧美一区二区视频在线观看 | 欧美日韩免费视频| 99在线视频精品| 免费在线视频一区| 亚洲一区二区三区精品在线| 国产欧美日韩精品在线| 日韩欧美的一区二区| 欧美日韩久久一区二区| www.成人在线| 福利视频网站一区二区三区| 美腿丝袜亚洲色图| 日韩专区一卡二卡| 亚洲图片有声小说| 亚洲精品日韩专区silk| 国产精品久久福利| 琪琪一区二区三区| 欧美电影免费观看高清完整版在线观看 | 国内不卡的二区三区中文字幕| 亚洲一区中文在线| 91一区二区在线观看| 欧美日韩一区二区电影| 日韩无一区二区| 国产精品美女www爽爽爽| 亚洲综合视频网| 久久电影网站中文字幕| 成人动漫视频在线| 欧美日韩国产美女| 欧美激情综合网| 午夜精品久久久久久| 国产福利视频一区二区三区| 欧美这里有精品| 国产精品人成在线观看免费| 亚洲成人资源网| 国产91综合网| 欧美男生操女生| 中文字幕字幕中文在线中不卡视频| 亚洲123区在线观看| 成人精品免费看| 欧美一区二区三区影视| 亚洲婷婷综合久久一本伊一区| 日韩国产欧美在线观看| av欧美精品.com| 2024国产精品| 日韩激情中文字幕| 99riav一区二区三区| 26uuu久久天堂性欧美| 亚洲国产va精品久久久不卡综合| 国产不卡视频在线观看| 日韩午夜av一区| 亚洲成a人片在线不卡一二三区| 大白屁股一区二区视频| 精品剧情在线观看| 婷婷久久综合九色国产成人| 99热这里都是精品| 国产日产欧美一区二区视频| 日本欧美一区二区在线观看| 91久久精品国产91性色tv| 中文字幕第一页久久| 国产一区二区三区黄视频 | 亚洲chinese男男1069| av一区二区不卡| 国产精品视频线看| 国产福利一区二区三区视频在线 | av不卡免费电影| 国产校园另类小说区| 韩国三级电影一区二区| 日韩精品一区在线| 免费高清视频精品| 欧美sm极限捆绑bd| 毛片av一区二区| 日韩欧美区一区二| 久久99九九99精品| 2023国产精品| 国产精品一级片| 国产精品视频一二| 99国产精品久久久久|