这个是什么意思:(unsigned xdata char*)1000H

[复制链接]
4135|3
 楼主| shiqianwei 发表于 2007-8-4 18:16 | 显示全部楼层 |阅读模式
是在一本书上的例子,在Keil中编译出错.是在一个宏定义中,具体是这样的:
#include<stdio.h>
#include<REG51.H>                       
#define TxDATA  (unsigned xdata char*)1000H    //?
void  initial(void);
unsigned  xdata char *p;
int i=0;

/*****主函数   发送第一个字节,以便产生发送中断**/
main()
{
    initial();
    p=TxDATA;                               //?
    ACC=p[0];
    SBUF=ACC;                                    //发送第一个字节
    
    while(1);                                         //等待
    }

void initial(void)
{.......}
    
void  Rcv_INT(void) interrupt 4
{......    }
在宏展开的那句,也就是
 p=TxDATA;     出错.  我不知道(unsigned xdata char*)1000H 是什么意思,好像是要代表数组的地址?!
但我在书上没有找到这样的定义方法,那么该怎么定义才正确呢?
.....还有这句也出错:unsigned  xdata char *p;    改成:unsigned char xdata  *p; 
是不是对的?
    


wowow 发表于 2007-8-4 18:33 | 显示全部楼层

就是一个类型转换

将数值类型的1000H转换成地址类型,然后赋给指针p。
 楼主| shiqianwei 发表于 2007-8-4 19:14 | 显示全部楼层

但是它怎么出错呢 ?

把图贴上来
xwj 发表于 2007-8-4 19:30 | 显示全部楼层

C下十六禁止是用0x1000表示,汇编才是1000H,而且要加括号

以防歧义 

(unsigned xdata char*)(0x1000)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

401

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部