在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            keil 51啟動代碼

            作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
            ;------------------------------------------------------------------------------
            ; STARTUP.A51: 用戶上電初始化程序
            ;------------------------------------------------------------------------------
            ;
            ; 用戶定義需上電初始化的內(nèi)存空間
            ;
            ; 使用以下EQU命令可定義在CPU復(fù)位時需用0進(jìn)行初始化的內(nèi)存空間
            ;
            ;; ; IDATA 存儲器的空間的絕對起始地址總是0.;
            IDATALEN EQU 80H ; 需用0進(jìn)行初始化的IDATA存儲器空間的字節(jié)數(shù)
            ;
            XDATASTART EQU 0H ; XDATA存儲器空間的絕對起始地址
            XDATALEN EQU 0H ; 需用0進(jìn)行初始化的XDATA存儲器的空間字節(jié)數(shù).
            ;
            PDATASTART EQU 0H ; PDATA存儲器的空間的絕對起始地址
            PDATALEN EQU 0H ; 需用0進(jìn)行初始化的PDATA存儲器的空間字節(jié)數(shù).
            ;
            ; 注意: IDATA 存儲器的空間在物理上包括了8051單片機(jī)的DATA和BIT存儲器空間.
            ; 聽 說 至少要保證與C51編譯器運行庫有關(guān)的存儲器的空間進(jìn)行0初始化 不知是否
            ;------------------------------------------------------------------------------
            ;
            ; 再入函數(shù)模擬初始化
            ;
            ; 以下用EQU指令定義了再入函數(shù)模擬堆棧指針的初始化
            ;
            ; 使用SMALL存儲器模式時再入函數(shù)的堆棧空間 .
            IBPSTACK EQU 0 ; 使用SMALL存儲器模式再入函數(shù)時將其設(shè)置成1.
            IBPSTACKTOP EQU 0FFH+1 ; 將堆棧頂設(shè)置為最高地址+1.
            ;
            ; 使用LARGE存儲器模式時再入函數(shù)的堆棧空間.; 使用LARGE存儲器模式時再入函數(shù)的堆??臻g.
            XBPSTACK EQU 0 ; 使用LARGE存儲器模式再入函數(shù)時將其設(shè)置成1.
            XBPSTACKTOP EQU 0FFFFH+1; 將堆棧頂設(shè)置為最高地址+1.
            ;
            ; 使用COMPACT存儲器模式時再入函數(shù)的堆棧空間.; 使用COMPACT存儲器模式時再入函數(shù)的堆??臻g.
            PBPSTACK EQU 0 ; 使用COMPACT存儲器模式再入函數(shù)時將其設(shè)置成1.
            PBPSTACKTOP EQU 0FFFFH+1; 將堆棧頂設(shè)置為最高地址+1.
            ;
            ;------------------------------------------------------------------------------
            ;
            ; 使用COMPACT存儲器模式時64K字節(jié)XDATA存儲器空間的分頁定義
            ;
            ; 以下用EQU指令定義PDATA類型變量在XDATA存儲器空間的頁地址
            ; 使用EQU指令定義PFAGE時必須與L51連接定位器PDATA指令的控制參數(shù)一致
            ;
            PPAGEENABLE EQU 0 ; 使用PDATA類型變量時將其設(shè)置成1.
            PPAGE EQU 0 ; 定義頁號.
            ;
            ;------------------------------------------------------------------------------
            NAME ?C_STARTUP; 模塊名為 ?C_STAUTUP
            ?C_C51STARTUP SEGMENT CODE ; 代碼
            ?STACK SEGMENT IDATA ; 堆棧
            RSEG ?STACK ; 堆棧
            DS 1
            EXTRNEXTRN CODE ((?C_START)) ; 程序開始地址
            PUBLIC ?C_STARTUP
            CSEG AT 0x8000 ; 定義用戶程序的起始地址,用MON51仿真器時可能有用
            ?C_STARTUP: LJMP STARTUP1
            RSEG ?C_C51STARTUP
            STARTUP1::
            ;
            ; 初始化串口
            MOV SCON,#40H
            MOV TMOD,#20H
            MOV TH1,#0fdH
            SETB TR1
            CLR TI
            ; 單片機(jī)上電IDATA內(nèi)存清零 如果不需要上電清零IDATA 可以注銷IF到IFEDN之間的話句
            ; 或者修改IDTALEN的長度 為了具有掉電保護(hù)功能 不知IDTALEN多長為好
            IF IDATALEN <> 0
            MOV R0,#IDATALEN - 1
            CLR A
            IDATALOOP: MOV @R0,A
            DJNZ R0,IDATALOOP
            ENDIF
            ;
            ; 單片機(jī)上電XDATA內(nèi)存清零 如果不需要上電清零XDATA 可以注銷IF到IFEDN之間的話句
            ; 或者修改XDATALEN的長度
            IF XDATALEN <> 0
            MOV DPTR,#XDATASTART
            MOV R7,#LOW ((XDATALEN)
            IF (LOW (XDATALEN) <> 0
            MOV R6,#(HIGH (XDATALEN) +1
            ELSE
            MOV R6,,#HIGH ((XDATALEN)
            ENDIF
            CLR A
            XDATALOOP: MOVX @DPTR,A
            INC DPTR
            DJNZ R7,XDATALOOP
            DJNZ R6,XDATALOOP
            ENDIF
            ;
            ; 送PDATA存儲器頁面高位地址
            IF PAGEENABLE <> 0
            MOV P2,#PPAGE
            ENDIF
            ;
            ; 單片機(jī)上電PDATA內(nèi)存清零 如果不需要上電清零XDATA 可以注銷IF到IFEDN之間的話句
            ; 或者修改PDATALEN的長度
            IF PDATALEN <> 0
            MOV R0,#PDATASTART
            MOV R7,#LOW (PDATALEN)
            CLR A
            PDATALOOP: MOVX @R0,A
            INC R0
            DJNZ R7,PDATALOOP
            ENDIF
            ;
            ; 設(shè)置使用SMALL存儲器模式時再入函數(shù)的堆??臻g.
            IF IBPSTACK <> 0
            EXTRN DATA (?C_IBP)
            MOV ?C_IBP,#LOW IBPSTACKTOP
            ENDIF
            ;
            ; 設(shè)置使用LARGE存儲器模式時再入函數(shù)的堆??臻g.
            IF XBPSTACK <> 0
            EXTRN DATA (?C_XBP)
            MOV ?C_XBP,#HIGH XBPSTACKTOP
            MOV ?C_XBP+1,#LOW XBPSTACKTOP
            ENDIF
            ;
            ; 設(shè)置使用COMPACT存儲器模式時再入函數(shù)的堆棧空間.
            IF PBPSTACK <> 0
            EXTRN DATA (C_PBP)
            MOV ?C_PBP,#LOW PBPSTACKTOP
            ENDIF
            ;
            ; 設(shè)置堆棧的起始地址
            MOV SP,#?STACK-1 ; 例如 MOV SP,#4FH;
            ; This code is required if you use L51_BANK.A51 with Banking Mode 4
            ; 如果你的程序使用了Mode 4 程序分組技術(shù) 請啟動下面的程序,不會吧你的程序超過64K 利害
            ; EXTRN CODE (?B_SWITCH0)
            ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
            ;; 程序從第一組bank 0 塊開始執(zhí)行
            ; 跳轉(zhuǎn)到用戶程序MAIN函數(shù)
            LJMP ?C_START
            END
            ;lINSHENGFENG


            關(guān)鍵詞: keil51啟動代

            評論


            技術(shù)專區(qū)

            關(guān)閉