日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2024年11月19日(星期二)

正在發(fā)生

2018年11月19日 | 單片機startup.a51文件內(nèi)容的詳解

發(fā)布者:錢幣之歌 來源: eefocus關(guān)鍵字:單片機  startup  a51  文件內(nèi)容 手機看文章 掃描二維碼
隨時隨地手機看文章

1.標(biāo)號


IDATALEN EQU 80H ; the length of IDATA memory in bytes.


這里IDATALEN只是一個標(biāo)號而已,和idata不是一回事!你要是愿意,這段程序里的IDATALEN你完全可以改成dog呀,pig呀,playboy呀這些標(biāo)號(其實我的理想是過豬一樣的生活,不愁吃喝,無憂無慮,可惜做不到),上面的這一句是說程序里面凡是用到IDATALEN的地方其實就是可以看成是80H這個數(shù),你用80H去代替IDATALEN是完全對的。


之所以取IDATALEN這么個名字,只是為了好記,表明和idata有一點點關(guān)系,不至于你的程序長了,假使你本來是用了playboy作為標(biāo)號的,寫到后來你就會忘了playboy到底是什么含義了。idata的范圍是0~FFH。如果你想改成FFH,完全可以。


2。清零


IF IDATALEN <> 0


MOV R0,#IDATALEN - 1


CLR A


IDATALOOP: MOV @R0,A


DJNZ R0,IDATALOOP


關(guān)于這一段,很明顯是在清零,如果上面idatalen=80H,那么是對0~7FH清零;如果


你的程序是改寫成:


IDATALEN EQU 0100H ;


就是對0~FFH清零。


還要注意的是那條IF語句,下面再談。


二、如何按你意愿加載這段程序


一般考慮到這個往往是你的設(shè)計中要區(qū)分上電復(fù)位和程序復(fù)位。有時候當(dāng)程序復(fù)位時你不希望一些內(nèi)存單元被清零了,那么你不對startup.a51作點修改,就不行了。


默認(rèn)是自動加載這段startup.a51的。


所以你要這樣做:


把lib目錄下的原始startup.a51文件拷到你的項目所在目錄下,再把你項目目錄下的這個startup.a51加入到你的項目中(在keil的集成環(huán)境中,希望你對這個是知道如何做的),然后對這個startup.a51加以修改。


比如改成:


IDATALEN EQU 00H ; the length of IDATA memory in bytes.


然后編譯鏈接。這樣你的程序中就不會包含對idata清零的內(nèi)碼了。


為什么?上面提到的IF語句的作用呀!當(dāng)定義IDATALEN=0時,清零代碼被跳過!


////////////////////////////////////////////


Startup.a51的中文說明


;------------------------------------------------------------------------------


; 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單片機的DATA和BIT存儲器空間.

; 聽 說 至少要保證與C51編譯器運行庫有關(guān)的存儲器的空間進(jìn)行0初始化 不知是否


;------------------------------------------------------------------------------


;


; 再入函數(shù)模擬初始化


;


; 以下用EQU指令定義了再入函數(shù)模擬堆棧指針的初始化


;


; 使用SMALL存儲器模式時再入函數(shù)的堆??臻g .


IBPSTACK EQU 0 ; 使用SMALL存儲器模式再入函數(shù)時將其設(shè)置成1.


IBPSTACKTOP EQU 0FFH+1 ; 將堆棧頂設(shè)置為最高地址+1.


;

; 使用LARGE存儲器模式時再入函數(shù)的堆??臻g.; 使用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


; 單片機上電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


;


; 單片機上電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


;


; 單片機上電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ù)的堆棧空間.


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ù)的堆??臻g.


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)鍵字:單片機  startup  a51  文件內(nèi)容 引用地址:單片機startup.a51文件內(nèi)容的詳解

上一篇:單片機有源蜂鳴器驅(qū)動之效率編程
下一篇:教你給51單片機擴展片外RAM

推薦閱讀

業(yè)界最高容量的 BGA 和 22x30mm M.2 SSD 創(chuàng)新內(nèi)存和存儲解決方案的行業(yè)領(lǐng)導(dǎo)者——美光科技股份有限公司(納斯達(dá)克股票代碼:MU)在 Electronica 2018 上推出業(yè)界首款 1TB 汽車級和工業(yè)級 PCIe NVMe? 固態(tài)硬盤 (SSD),該款硬盤采用 BGA 封裝技術(shù)和 22x30mm M.2 外形規(guī)格。美光新型 2100 系列 NVMe SSD 基于 64 層的三層單元 (T...
享一個很好的藍(lán)牙+PM2.5空氣質(zhì)量+DHT11溫濕度上下限報警的設(shè)計,主控芯片是51單片機.實物圖: 仿真原理圖如下 元件列表:CommentDesignatorLibRefQuantity蜂鳴器BUUZERBUZZER1電解電容C110uF1電解電容C2220uF1瓷片電容C3, C418pF2電解電容C5470uF1瓷片電容C61041排針DC 5VHeader 22P觸點開關(guān)JIA, JIAN,RESETSW-PB3液晶LCD1602LCD16021發(fā)光二極管LED1,...
近日,一款由東芝IT控制系統(tǒng)株式會社研發(fā)的高速X射線鋰電池自動檢測裝置正式問世。該設(shè)備主要針對圓柱型鋰電池,檢測速度高達(dá)每分鐘400個。 近年來,圓柱型鋰電池(18650/21700型圓柱電池)在電動汽車、固定型蓄電池等用途中的需求正在急速擴大,鋰電池生產(chǎn)商為了對應(yīng)需求,正積極推進(jìn)生產(chǎn)設(shè)備投資。電池因為內(nèi)部電極板的不良可能會造成輸出電壓低下、充放...
企業(yè)轉(zhuǎn)型成功的關(guān)鍵之一,就是從海量的數(shù)據(jù)中挖掘洞見,將數(shù)據(jù)價值發(fā)揮得淋漓盡致。現(xiàn)代企業(yè)需要擁有能夠支持快速開發(fā)與部署應(yīng)用程序的基礎(chǔ)設(shè)施,從而為自動化、自助式資源分配以及無處不在的數(shù)據(jù)訪問奠定基礎(chǔ)。這一點很重要,因為企業(yè)能既快又巧地利用數(shù)據(jù)是其在當(dāng)今的商業(yè)市場中能夠立足的基礎(chǔ)。對企業(yè)首席信息官(CIO)而言,一項關(guān)鍵的任務(wù)就是提供數(shù)...

史海拾趣

問答坊 | AI 解惑

wince 控件的子類化

本人為了以后開發(fā)界面方便與華麗,想完成控件的子類化, 希望各位能夠提供 這方面的幫助, 文檔,源代碼均可以, 謝謝 本人郵箱:348402717@QQ.COM…

查看全部問答∨

關(guān)于管腳的操作

在cypress中對PD1腳進(jìn)行操作,程序如下:    第一種方式: while(1)    {            PD1 = 0x00;      SYNCDELAY;      SYNCDELAY; ...…

查看全部問答∨

CxImage 能在 WIN CE6.0上跑么

CxImage  能在 WIN CE6.0上跑么       我在 http://www.codeproject.com/KB/graphics/cximage.aspx    下載的 cximage600_ce及其例子,能在pocket pc 2003上跑   我想讓它在wince6上跑,該變 ...…

查看全部問答∨

關(guān)于CE下位圖傳輸?shù)膯栴},100分,在線等

我使用的是windowsCE5.0,evc4.0+sp2,平臺是eboxII,建立的是MFC應(yīng)用程序工程。 我使用攝像頭已經(jīng)取得了一幀圖像,經(jīng)過YUV到RGB的轉(zhuǎn)換,存儲在一個unsigned char*的緩沖區(qū)中,而且本地顯示正常?,F(xiàn)在我試圖將此緩沖區(qū)中的圖像數(shù)據(jù)通過帶連接的CSo ...…

查看全部問答∨

文件拷貝

我想將D盤下所有為.avi格式的文件拷貝到e盤下,請問用那個函數(shù)可以實現(xiàn)?我使用過copy函數(shù),具體為copy(\"/d/123.avi\",/e/123.avi),可以將一個已知名稱的文件考入到另一個盤中,請問怎樣將相同后綴的文件實現(xiàn)拷貝?或者,可不可以通過指針指向一個 ...…

查看全部問答∨

arm9 開發(fā)板存儲的問題

正在用的arm9開發(fā)板有64M Nandflash, Wince系統(tǒng)占用了62M, 只留給用戶2M存儲空間。 從pc下載一個靜態(tài)連接的程序都差點裝不下了! 請問, 用eVc編的程序選擇動態(tài)連接的話, 目標(biāo)板脫離pc之后這樣的程序怎樣才能運行?…

查看全部問答∨

Commercial/Extended Temperature 中文業(yè)內(nèi)是什么意思

Commercial/Extended Temperature ============= Product Features For a complete list of product features, see “Product Features” on page 12. Typical Applications The following features do not require enabling software: …

查看全部問答∨

串口驅(qū)動只能接收16字節(jié),16字節(jié)后的數(shù)據(jù)丟失問題?

用wince下的串口驅(qū)動移植的。 寫完測試的時候都是在16字節(jié)以內(nèi)進(jìn)行的,收發(fā)正?!,F(xiàn)在PC端每次發(fā)送超過16字節(jié)的數(shù)據(jù),我的WINCE設(shè)備這邊只能收到16字節(jié),每次發(fā)送超過16字節(jié)的就丟失了。 芯片用得是16554. 這個可能是什么原因啊? 很奇怪我把FIFO ...…

查看全部問答∨

Power MOSFET Avalanche

Power MOSFET Avalanche…

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved