8051外擴記憶體以及程式中的宣告Xdata位址之問題 |
答題得分者是:DavidLo
|
jerichowang
一般會員 發表:17 回覆:27 積分:8 註冊:2005-07-25 發送簡訊給我 |
如題.小弟我是用89C51ED2的chip.並且是使用.Keil C的C語言編譯器.
最近需要做外擴記憶體的應用..我的記憶體是 ISSL61256的32K*8bit的sram
參考以下的接線圖
當8051對外部記憶體讀/寫資料時,P0埠首先送出待讀寫記憶體位址之低位元組位址碼(A0~A7),隨即配合位址閂鎖效能(ALE)信號將此低位元組位址碼閂鎖於外加之閂鎖器(74LS373)上,然後P0埠馬上又當成資料匯流排以便傳遞待讀入/寫出之資料。當ALE為高電位期間,位址閂鎖器74LS373被致能,此時來自P0埠的信號A0~A7將會呈現在74LS373的輸出端上。緊接著當ALE從高電位變成低電位時,74LS373被禁能,此時會使得先前出現的位址信號A0~A7被鎖住於74LS373輸出端上,直到下一個ALE的高電位脈衝信號來臨時才會改變。 74LS373只有在ALE從高電位變成低電位,才能鎖住位址信號於其輸出端上。而將位址信號A0~A7鎖住的理由是因為他們在整個讀取週期中並非一直保持有效的緣故,而A8~A15由於在整個讀取週期中一直保持有效,所以就不必閂鎖。在P0送出低位元組位址碼之同時,P2亦送出待讀寫記憶體位址之高位元組位址碼(A8~A15),待位址碼穩定時,8051會因執行MOVX A,@Ri或MOVX A,@DPTR指令而產生低電位之RD(P3.7)信號以讀取外部資料記憶體之資料,或者8051因執行MOVX @Ri,A或MOVX @DPTR,A之指令而產生低電位之WR(P3.6)信號以寫資料到外部資料記體。 在C中要宣告對外部記憶體的存取使用
xdata unsigned char temp _at_位址
現在的問題是
1.當我是用如圖的硬體接線時候.我宣告了Xdata變數,8051相關給記憶體用的接腳電位時脈是否就如同MOVX A,@Ri或MOVX A,@DPTR一樣..ALE RD WR,皆相同呢??? 2.我的記憶體其實是要用來先儲存外部裝置所丟出的資料.當外部裝置丟完後會產生一個訊號接到8051,通知8051說"你可以開始接收ram的資料了",如此循環.
而總共從記憶體位址0000H 開始會有19200 BYTE要接收..所以我在8051端
是否要像這樣宣告一個指標
xdata unsigned char* pointer _at_0x0000
用這指標的位址開始讀取sram的值然後透過RS232給電腦.讀完一次後
pointer++;讀取下一個位址...直到pointer加到19200次
請問是這樣做嗎...但是89C51ED2有1792byte的記憶體也是被宣告成外部記憶體
xdata的形式...所以說我是否必須跳過這1792byte才能做上述的接收呢 謝謝大家
|
DavidLo
高階會員 發表:17 回覆:225 積分:168 註冊:2004-07-21 發送簡訊給我 |
1. xdata C指令會轉成MOVX指令.KEIL中可以將C轉ASM,你可以驗證看看.
2. 請參考CPU規格中,Expanded RAM(XRAM)有詳細說明.AUXR bit1 EXTRAM決定.
http://www.atmel.com/dyn/resources/prod_documents/doc4235.pdf
|
jerichowang
一般會員 發表:17 回覆:27 積分:8 註冊:2005-07-25 發送簡訊給我 |
那麼我的記憶體其實是要用來先儲存外部裝置所丟出的資料.當外部裝置丟完後會產生一個訊號接到8051,通知8051說"你可以開始接收ram的資料了",如此循環.
而總共從記憶體位址0000H 開始會有19200 BYTE要接收..所以我在8051端
是否要像這樣宣告一個指標
xdata unsigned char* pointer _at_0x0000
用這指標的位址開始讀取sram的值然後透過RS232給電腦.讀完一次後
pointer ;讀取下一個位址...直到pointer加到19200次
請問是這樣做嗎...但是89C51ED2有1792byte的記憶體也是被宣告成外部記憶體
xdata的形式...所以說我是否必須跳過這1792byte才能做上述的接收呢
|
DavidLo
高階會員 發表:17 回覆:225 積分:168 註冊:2004-07-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |