标题: 单片机中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,点中看看,居然有大发现啊!