打印

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

[复制链接]
3354|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

粉丝