zhaihua
驱动中牛
驱动中牛
  • 注册日期2003-10-11
  • 最后登录2007-07-24
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:942回复:2

弱弱的问题

楼主#
更多 发布于:2003-12-02 16:27
在plasma的帖子里有这么一段程序
//指向外部D12访问地址
#define D12_COMMAND (*(unsigned char xdata *)0x8000)
#define D12_DATA (*(unsigned char xdata *)0x0000)
我对C语言很陌生,想问一下:这两句怎么解释,(*(unsigned char xdata *)0x8000)是什么意思?定义的的D12_COMMAND是什么样的数据?洒家谢谢了
 :D
没钱的日子真难过! 大哥,拉兄弟一把.
zhaihua
驱动中牛
驱动中牛
  • 注册日期2003-10-11
  • 最后登录2007-07-24
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-02 17:56
谢谢楼上大哥:)
我有些开窍了,呵呵
在原程序里还有这样的语句
D12_COMMAND = XmtBuff.in;// 选择 IN 端点(指针指向0位置)
D12_COMMAND = 0xf0;// 写缓冲区
D12_DATA = 0x00;
D12_DATA = XmtBuff.b[6];
是不是指把MmtBuff里的值赋予外部地址是0x8000的寄存器?
没钱的日子真难过! 大哥,拉兄弟一把.
chxg
驱动牛犊
驱动牛犊
  • 注册日期2001-07-14
  • 最后登录2010-04-29
  • 粉丝0
  • 关注0
  • 积分-9分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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
游客

返回顶部