新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DS80C400的Keil C語(yǔ)言編程

DS80C400的Keil C語(yǔ)言編程

作者: 時(shí)間:2012-02-01 來(lái)源:網(wǎng)絡(luò) 收藏

有關(guān)指針傳遞的說(shuō)明
文檔提供了用8051匯編自己編寫可從你的C程序中調(diào)用的方法的途徑。如果你選擇這樣做,請(qǐng)注意,由C程序傳遞到8051匯編的指針在 DS80C390和中不是立即可用的。因?yàn)閭鹘y(tǒng)的8051架構(gòu)是16位的,指針由兩字節(jié)的指針和一字節(jié)的存儲(chǔ)類型組成。當(dāng)采用 Dallas的24位8051微控制器時(shí),存儲(chǔ)類型字節(jié)為指針高字節(jié)所用,但采用一種變化的形式。在當(dāng)前版本的編譯器中,高指針字節(jié)有其高位設(shè)置并被遞增1。以下來(lái)自rom_offsets.inc的宏在Dallas Semiconductor庫(kù)中被用于糾正被更改的指針。

      FIXKEILPOINTER  MACRO DIRECT_DPXLOCAL  must_be_nullmov    a, DIRECT_DPXjz     must_be_nulldec    aanl    a, #7Fhmov    DIRECT_DPX, amust_be_null:ENDM
Keil編譯器通過(guò)寄存器r3:r2:r1 (r3是存儲(chǔ)類型字節(jié)) 或XDATA存儲(chǔ)區(qū)傳遞指針。該宏將工作于任何寄存器或其他直接存儲(chǔ)器值,傳給它存儲(chǔ)類型字節(jié),它會(huì)在同一位置返回高指針字節(jié)。以下代碼演示了它的用法:
      ;; Keil passes pointers as r3:r2:r1...;---- Variable 'buffer1?972' assigned to Register 'R1/R2/R3' ----;FIXKEILPOINTER r3;; r3:r2:r1 is now usable as a pointer value.;;; ...or in XDATA.;---- use dpx1:dph1:dpl1 for buffer pointer ----;mov     dptr, #buffer2?1078GETXmov     dpx1, ainc     dptrGETXmov     dph1, ainc     dptrGETXmov     dpl1, aFIXKEILPOINTER   dpx1;; Data pointer 1 is now usable as a pointer.;
注意,還有一種與FIXKEILPOINTER宏相反的情況,可以使函數(shù)將其所需的指針轉(zhuǎn)換為Keil編譯器生成代碼可以理解的形式。在此情況下,可以用UNFIXKEILPOINTER宏。這個(gè)宏的用法和FIXKEILPOINTER宏相同。一點(diǎn)不同是,當(dāng)你從一個(gè)用匯編寫的方法中返回一個(gè)指針時(shí),指針必須保存在寄存器r3, r2和r1中,高指針字節(jié)在r3中。因此,在退出一個(gè)需要返回指針的函數(shù)前,它必須調(diào)用宏:
      UNFIXKEILPOINTER r3ret; End of the assembly function
保持你的Keil為最新版本
Keil會(huì)隨時(shí)發(fā)布對(duì)其uVision2工具套件的更新版本。網(wǎng)站http://www.keil.com/update/上有關(guān)于最新版本的C51編譯器和uVision2 IDE的信息。從該網(wǎng)頁(yè)你可以選擇你需要的下載,并看到所發(fā)生的變化。

更新應(yīng)該是一個(gè)可執(zhí)行的InstallShield。應(yīng)用將顯示一個(gè)標(biāo)題為Setup uVision2的窗口。選擇Update Current Installation選項(xiàng)執(zhí)行更新。程序可以檢測(cè)你當(dāng)前的安裝目錄,點(diǎn)擊Next繼續(xù)。在下一屏上選擇是否要保留原來(lái)的uVision2配置,并再次點(diǎn)擊Next。最后,確認(rèn)你選擇的選項(xiàng)并開(kāi)始安裝。

結(jié)論
Keil C編譯器和Dallas Semiconductor提供的庫(kù)允許用C編寫的應(yīng)用也可方便地使用以前只能通過(guò)TINI的Java環(huán)境訪問(wèn)的功能和函數(shù)。C語(yǔ)言程序現(xiàn)在可以訪問(wèn)網(wǎng)棧、存儲(chǔ)管理器、進(jìn)程調(diào)度器、文件系統(tǒng),以及網(wǎng)絡(luò)微控制器的許多其他特性。另外,與TINI運(yùn)行環(huán)境相比,用C語(yǔ)言編寫的應(yīng)用程序?yàn)橛脩舸a和數(shù)據(jù)提供了更多的空間。使用C語(yǔ)言的開(kāi)發(fā)者可輕易編寫出極為精簡(jiǎn)的應(yīng)用,有充裕的速度速度、能力、代碼空間來(lái)應(yīng)付各種問(wèn)題。

參考文獻(xiàn)
1 App Note 609: Internet Speaker with the DS80C400 Silicon Software

2 Download at http://java.sun.com/j2se/downloads.html

3 Download at http://java.sun.com/products/javacomm/

4 The High-Speed Micro User's Guide Supplement for the DS80C400 can be found at http://pdfserv.maxim-ic.com/arpdf/Design/DS80C400UG.pdf

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程



上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: DS80C400 Keil C語(yǔ)言編程

評(píng)論


相關(guān)推薦

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

關(guān)閉