阅读:942回复:2
弱弱的问题
在plasma的帖子里有这么一段程序
//指向外部D12访问地址 #define D12_COMMAND (*(unsigned char xdata *)0x8000) #define D12_DATA (*(unsigned char xdata *)0x0000) 我对C语言很陌生,想问一下:这两句怎么解释,(*(unsigned char xdata *)0x8000)是什么意思?定义的的D12_COMMAND是什么样的数据?洒家谢谢了 :D |
|
|
沙发#
发布于:2003-12-02 17:56
谢谢楼上大哥:)
我有些开窍了,呵呵 在原程序里还有这样的语句 D12_COMMAND = XmtBuff.in;// 选择 IN 端点(指针指向0位置) D12_COMMAND = 0xf0;// 写缓冲区 D12_DATA = 0x00; D12_DATA = XmtBuff.b[6]; 是不是指把MmtBuff里的值赋予外部地址是0x8000的寄存器? |
|
|
板凳#
发布于:2003-12-02 17:31
我来抛砖引玉:
xdata 是c51 单片机语言里用来表示外部数据区域的,与之 相对应的还有idata 等 (unsigned char * xdata )0x8000 说明一个外部地址是 8000 的一个指针(或者叫做端口) (*(unsigned char * xdata )0x8000 )表示端口的内容 (读的时候)或往端口写数(写的时候) 例如: ( *(unsigned char * xdata )0x8000)=0x55 往外部地址是0x8000的地方写一个数0x55 i= ( *(unsigned char * xdata )0x8000) 读取0x8000的内容放入i |
|