www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]最近在研究單片機(jī)C51對匯編的接口問題。char和int等都比較簡單,使用寄存器或固定地地址傳值都是可以的,具體可以參考keil的C51 user‘s guide。本篇短文主要重點(diǎn)討論一下A51下如何遵循C51的接口標(biāo)準(zhǔn)來實(shí)現(xiàn)C51的指針

最近在研究單片機(jī)C51對匯編的接口問題。char和int等都比較簡單,使用寄存器或固定地地址傳值都是可以的,具體可以參考keil的C51 user‘s guide。本篇短文主要重點(diǎn)討論一下A51下如何遵循C51的接口標(biāo)準(zhǔn)來實(shí)現(xiàn)C51的指針。主要原因是,現(xiàn)在用C51的人越來越多,大家都圖省事和方便。網(wǎng)上面有關(guān)A51的資料少得可憐,知道用匯編來實(shí)現(xiàn)代碼優(yōu)化的少之又少。本人是一直堅(jiān)持用匯編寫東西的。在嵌入式領(lǐng)域,很多東西都與硬件有關(guān),多知道點(diǎn)底層?xùn)|西還是有好處。


使用工具主要為keil,在windows 7環(huán)境下。C51測試程序如下:


#include

unsignedpos;

bitabc(unsigned*pos){

*pos=100;

return0;

}

voidmain(){

while(1){

abc(&pos);}


這是測試用源程序,很明顯程序中使用了int型指針 pos。為了能夠生成匯編代碼,加入編譯器控制:


#pragmaSRC

#pragmaSMALL

#include

unsignedpos;

bitabc(unsigned*pos){

*pos=100;

return0;

}

voidmain(){

while(1){

abc(&pos);

}

}

注意,#pragma必需在文件的開始位置,否則會報(bào)錯。另外編譯器可能會跳“ EXCEPTION 0021H: PATH OR FILE NOT FOUND:main.obj”,沒有關(guān)系,我們的目標(biāo)是生成匯編的src文件。編譯后生成src如下:


;main.SRCgeneratedfrom:main.c

;COMPILERINVOKEDBY:

;D:ProgramFilesKeilC51BINC51.EXEmain.cBROWSEDEBUGOBJECTEXTENDTABS(2)

$NOMOD51

NAMEMAIN

;寄存器及內(nèi)存聲明

P0DATA080H

P1DATA090H

P2DATA0A0H

P3DATA0B0H

T0BIT0B0H.4

ACBIT0D0H.6

T1BIT0B0H.5

T2BIT090H.0

EABIT0A8H.7

IEDATA0A8H

EXF2BIT0C8H.6

RDBIT0B0H.7

ESBIT0A8H.4

IPDATA0B8H

RIBIT098H.0

INT0BIT0B0H.2

CYBIT0D0H.7

TIBIT098H.1

INT1BIT0B0H.3

RCAP2HDATA0CBH

PSBIT0B8H.4

SPDATA081H

T2EXBIT090H.1

OVBIT0D0H.2

RCAP2LDATA0CAH

C_T2BIT0C8H.1

WRBIT0B0H.6

RCLKBIT0C8H.5

TCLKBIT0C8H.4

SBUFDATA099H

PCONDATA087H

SCONDATA098H

TMODDATA089H

TCONDATA088H

IE0BIT088H.1

IE1BIT088H.3

BDATA0F0H

CP_RL2BIT0C8H.0

ACCDATA0E0H

ET0BIT0A8H.1

ET1BIT0A8H.3

TF0BIT088H.5

ET2BIT0A8H.5

TF1BIT088H.7

TF2BIT0C8H.7

RB8BIT098H.2

TH0DATA08CH

EX0BIT0A8H.0

IT0BIT088H.0

TH1DATA08DH

TB8BIT098H.3

EX1BIT0A8H.2

IT1BIT088H.2

TH2DATA0CDH

PBIT0D0H.0

SM0BIT098H.7

TL0DATA08AH

SM1BIT098H.6

TL1DATA08BH

SM2BIT098H.5

TL2DATA0CCH

PT0BIT0B8H.1

PT1BIT0B8H.3

RS0BIT0D0H.3

PT2BIT0B8H.5

TR0BIT088H.4

RS1BIT0D0H.4

TR1BIT088H.6

TR2BIT0C8H.2

PX0BIT0B8H.0

PX1BIT0B8H.2

DPHDATA083H

DPLDATA082H

EXEN2BIT0C8H.3

RENBIT098H.4

T2CONDATA0C8H

RXDBIT0B0H.0

TXDBIT0B0H.1

F0BIT0D0H.5

PSWDATA0D0H


?PR?_abc?MAINSEGMENTCODE

?PR?main?MAINSEGMENTCODE

?DT?MAINSEGMENTDATA

EXTRNCODE(?C?ISTPTR)

EXTRNCODE(?C_STARTUP)

PUBLICpos

PUBLICmain

PUBLIC_abc

RSEG?DT?MAIN

pos:DS2

;#pragmaSRC

;#pragmaSMALL

;#include

;

;unsignedpos;

;

;bitabc(unsigned*pos){

RSEG?PR?_abc?MAIN

_abc:

;SOURCELINE#7

;----Variable'pos?040'assignedtoRegister'R1/R2/R3'----

;*pos=100;

;SOURCELINE#8

;---------關(guān)鍵代碼-------------------

CLRA

MOVB,#064H

LCALL?C?ISTPTR;return0;

;SOURCELINE#9

CLRC;}


;SOURCELINE#10

?C0001:RET

;ENDOF_abc;

;voidmain(){

RSEG?PR?main?MAIN

main:

USING0;SOURCELINE#12

?C0002:;while(1){

;SOURCELINE#13

;abc(&pos);

;SOURCELINE#14

;---------關(guān)鍵代碼-------------------

MOVR3,#00H

MOVR2,#HIGH(pos)

MOVR1,#LOW(pos)

LCALL_abc;}

;SOURCELINE#15

SJMP?C0002

;ENDOFmainEND

對于A51的程序格式,這里不多解釋,有興趣可以自己去Keil官網(wǎng)學(xué)習(xí)。這里主要說一下指針的C51匯編接口。代碼中內(nèi)存和寄存器聲明,這個不重要,可以跳過。主要看標(biāo)記為關(guān)鍵代碼的部分。我們可以看到,在main中,在調(diào)用abc函數(shù)前,主程序初始了三個寄存器,分別是R1R2R3,代碼如下:

MOVR3,#00H

MOVR2,#HIGH(pos)

MOVR1,#LOW(pos)


這里得著重講一下。很明顯,這是寄存器傳值。依據(jù)C51規(guī)定,指針傳遞使用R1R2R3寄存器。其中,Mem type in R3, MSB in R2, LSB in R1。也就是說,R3表指針類型,R1為指針內(nèi)容低位,R2為內(nèi)容高位。從上面三個語句可以看出,程序?qū)㈩愋驮O(shè)為0,將pos地址高位傳給R2,低位給R1。接下來再看abc函數(shù)中的操作

CLR A

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

Sept. 10, 2025 ---- 根據(jù)TrendForce集邦咨詢最新發(fā)布的《全球電動車逆變器市場數(shù)據(jù)》,2025年第二季受惠純電動車(BEV)銷售成長,全球電動車(注1)牽引逆變器裝機(jī)量達(dá)766萬臺,年增19%。...

關(guān)鍵字: 增程式電動車 SiC 牽引逆變器

Sept. 8, 2025 ---- 根據(jù)TrendForce集邦咨詢最新調(diào)查,2025年第二季NVIDIA(英偉達(dá)) Blackwell平臺規(guī)?;鲐?,以及北美CSP業(yè)者持續(xù)擴(kuò)大布局General Server(通用型...

關(guān)鍵字: SSD DDR4 服務(wù)器

Sept. 4, 2025 ---- Apple(蘋果)即將發(fā)布iPhone 17、iPhone 17 Air(暫名)、iPhone 17 Pro及Pro Max四款旗艦新機(jī),除了外觀辨識度升級,處理器性能、散熱和拍攝功...

關(guān)鍵字: iPhone 16 A19處理器 折疊機(jī)

Sept. 3, 2025 ---- 根據(jù)TrendForce集邦咨詢最新發(fā)布的《2025近眼顯示市場趨勢與技術(shù)分析》報(bào)告,2025年隨著國際品牌陸續(xù)推出AR眼鏡原型,以及Meta預(yù)計(jì)在近期發(fā)布AR眼鏡Celeste,市...

關(guān)鍵字: AR眼鏡 OLED

Sept. 2, 2025 ---- TrendForce集邦咨詢表示,2025年第二季DRAM產(chǎn)業(yè)因一般型DRAM (Conventional DRAM)合約價上漲、出貨量顯著增長,加上HBM出貨規(guī)模擴(kuò)張,整體營收為3...

關(guān)鍵字: DRAM 智能手機(jī) ASP

Sept. 1, 2025 ---- 根據(jù)TrendForce集邦咨詢最新調(diào)查,2025年第二季因中國市場消費(fèi)補(bǔ)貼引發(fā)的提前備貨效應(yīng),以及下半年智能手機(jī)、筆電/PC、Server新品所需帶動,整體晶圓代工產(chǎn)能利用率與出貨...

關(guān)鍵字: 晶圓代工 智能手機(jī) 筆電

Aug. 28, 2025 ---- 根據(jù)TrendForce集邦咨詢最新調(diào)查,2025年第二季NAND Flash產(chǎn)業(yè)雖面臨平均銷售價格(ASP)小幅下滑,所幸原廠減產(chǎn)策略緩解供需失衡,疊加中、美兩大市場政策推動,整體...

關(guān)鍵字: NAND Flash SSD AI

Aug. 26, 2025 ---- NVIDIA(英偉達(dá))近日推出的Jetson Thor被視為機(jī)器人的物理智慧核心,以Blackwell GPU、128 GB記憶體堆疊出2070 FP4 TFLOPS AI算力,是前...

關(guān)鍵字: 機(jī)器人 大型語言模型 AI算力

Aug. 21, 2025 ---- 根據(jù)TrendForce集邦咨詢最新液冷產(chǎn)業(yè)研究,隨著NVIDIA GB200 NVL72機(jī)柜式服務(wù)器于2025年放量出貨,云端業(yè)者加速升級AI數(shù)據(jù)中心架構(gòu),促使液冷技術(shù)從早期試點(diǎn)邁...

關(guān)鍵字: AI 數(shù)據(jù)中心 服務(wù)器

除了充電電路外,鋰電池的放電過程也需要保護(hù)。鋰電池的放電電壓不能低于3.0V,否則電池壽命會大幅縮短。為了實(shí)現(xiàn)這一保護(hù),工程師們設(shè)計(jì)了DW01芯片與8205 MOS管的電路組合。DW01芯片能夠監(jiān)控鋰電池的放電電壓和電流...

關(guān)鍵字: 鋰電池 電池
關(guān)閉