標題: 單片機中XBYTE的作用 [打印本頁] 作者: sans 時間: 2015-4-7 00:21 標題: 單片機中XBYTE的作用 XBYTE是一個地址指針(可當成一個數組名或數組的首地址),它在文件absacc.h中由系統定義,指向外部RAM(包括I/O口)的0000H單元,XBYTE后面的中括號[ ]0x2000H是指數組首地址0000H的偏移地址,即用XBYTE[0x2000]可訪問偏移地址為0x2000的I/O端口。
這個主要是在用C51的P0,P2口做外部擴展時使用,其中XBYTE [0x0002],P2口對應于地址高位,P0口對應于地址低位。一般P2口用于控制信號,P0口作為數據通道。
比如:P2.7接WR,P2.6接RD,P2.5接CS,那么就可以確定個外部RAM的一個地址,想往外部RAM的一個地址寫一個字節時,地址可以定為XBYTE [0x4000],其中WR,CS為低,RD為高,那就是高位的4,當然其余的可以根據情況自己定,然后通過
XBYTE [0x4000] = 57;
這賦值語句,就可以把57寫到外部RAM的0x4000處了,此地址對應一個字節。
XBYTE 的作用,可以用來定義絕對地址,是P0口和P2口的,其中P2口對應的是高位,P0口對應的是低位
如 XBYTE[0x1234] = 0x56;
則等價于
mov dptr,#1234h
mov @dptr,#56h
XBYTE的使用 收藏
XBYTE
The XBYTE macro accesses individual bytes in the external data memory of the 8051. You may use this macro in your programs as follows:
#include <absacc.h> /* Include Macro Definitions */
.rval = XBYTE [0x0002];
XBYTE [0x0002] = 57;
..This example reads and writes the contents of the byte in external data memory at address 0002h.
The range of valid index values for this macro is 0-65535.
上面的是在keil的help里ctrl+c來的,以前在論壇里看到過有人問如何用c語言實現定位存儲,呵呵,當時還說不可能呢!現在在查找using的時候,無意中看到了XBYTE,點中看看,居然有大發現啊!